REQUEST_GET_VALUE_ARRAY,
REQUEST_GET_RESOURCE_TS,
REQUEST_GET_RESOURCE_LIST_JSON,
+ REQUEST_IS_RESOURCE_ATTR_SET,
REQUEST_MAX,
};
break;
case REQUEST_SET_RESOURCE_ATTR:
case REQUEST_UNSET_RESOURCE_ATTR:
+ case REQUEST_IS_RESOURCE_ATTR_SET:
buffer_len = sprintf(buffer, "%d$%d$%"PRIu64,
data->request, data->resource_id, data->attr_mask);
break;
return (ret < 0) ? false : (bool)ret;
}
+EXPORT
+bool pass_resource_monitor_is_resource_attr_set(int id, int resource_id, u_int64_t attr_mask)
+{
+ struct request_data request = {
+ .request = REQUEST_IS_RESOURCE_ATTR_SET,
+ .client_id = id,
+ .resource_id = resource_id,
+ .attr_mask = attr_mask,
+ };
+ int ret;
+
+ ret = handle_request(&request);
+ return (ret < 0) ? false : (bool)ret;
+}
+
EXPORT
int pass_resource_monitor_update(int id)
{
int pass_resource_monitor_unset_resource_attr(int id, int resource_id, u_int64_t attr_mask);
/**
- * @brief Check whether a resouce attribute is supported or not
+ * @brief Check whether a resource attributes are interested or not
+ * @param[in] Resource monitor id
+ * @param[in] Resource id
+ * @param[in] Attribute mask including the various attributes
+ * @return @c true on success, otherwise false
+ */
+bool pass_resource_monitor_is_resource_attr_set(int id, int resource_id, u_int64_t attr_mask);
+
+/**
+ * @brief Check whether a resource attribute is supported or not
* @param[in] Resource monitor id
* @param[in] Resource id
* @param[in] Resource attribute id
- * @return @c 0 on success, otherwise a negative error value
+ * @return @c true on success, otherwise false
*/
bool pass_resource_monitor_is_resource_attr_supported(int id, int resource_id, u_int64_t attr_id);
client->socket_fd,
get_resource_name(res), resource_id);
break;
+ case REQUEST_IS_RESOURCE_ATTR_SET:
+ ret = (int)is_resource_attr_interested(res, interest_masks);
+ break;
default:
return -EINVAL;
}
break;
case REQUEST_SET_RESOURCE_ATTR:
case REQUEST_UNSET_RESOURCE_ATTR:
+ case REQUEST_IS_RESOURCE_ATTR_SET:
ret = handle_request_set_resource_attr(client, args, request_type);
break;
case REQUEST_IS_RESOURCE_ATTR_SUPPORTED:
return ret;
}
+static bool __pass_resource_monitor_is_resource_attr_set(int mon_id, int res_id, int num_attrs,
+ std::vector<struct resource_attr_info> attrs)
+{
+ int i, ret;
+ u_int64_t mask = 0;
+
+ for (i = 0; i < num_attrs; i++) {
+ bool supported = pass_resource_monitor_is_resource_attr_supported(
+ mon_id, res_id, attrs[i].attr_id);
+ if (supported)
+ mask |= attrs[i].attr_id;
+ }
+
+ ret = pass_resource_monitor_set_resource_attr(mon_id, res_id, mask);
+ EXPECT_EQ(ret, 0);
+
+ bool set = pass_resource_monitor_is_resource_attr_set(mon_id, res_id, mask);
+ EXPECT_EQ(set, true);
+
+ return set;
+}
+
TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_set_resource_attr)
{
auto res = GetParam();
EXPECT_EQ(ret, 0);
}
+TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_is_resource_attr_set)
+{
+ auto res = GetParam();
+ int i;
+
+ res.mon_id = pass_resource_monitor_init();
+ ASSERT_TRUE(res.mon_id > 0);
+
+ int ret = pass_resource_monitor_get_resource_count(res.mon_id, res.type, &res.count);
+ EXPECT_EQ(ret, 0);
+
+ for (i = 0; i < res.count; i++) {
+ res.res_id = pass_resource_monitor_create_resource(res.mon_id, res.type);
+ EXPECT_TRUE(res.res_id >= 0);
+
+ ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id,
+ res.ctrl_id, i);
+ if (res.ctrl_id > 0)
+ EXPECT_EQ(ret, 0);
+ else
+ EXPECT_NE(ret, 0);
+
+ /* Test pass_resource_monitor_is_resource_attr_set */
+ bool set = __pass_resource_monitor_is_resource_attr_set(res.mon_id,
+ res.res_id,
+ res.num_attrs,
+ res.attrs);
+ EXPECT_EQ(set, true);
+
+ ret = pass_resource_monitor_delete_resource(res.mon_id, res.res_id);
+ EXPECT_EQ(ret, 0);
+ }
+
+ ret = pass_resource_monitor_exit(res.mon_id);
+ EXPECT_EQ(ret, 0);
+}
+
static int __pass_resource_monitor_get_value(int mon_id, int res_id, int num_attrs,
std::vector<struct resource_attr_info> attrs)
{