report cpu and memory usage at once, remove "target" config option.
Change-Id: I5ad40cff0733ea3c8ee258fa9854ea9d17fa95e0
else if (g_strcmp0(type, SCHEMA_TYPE_SYSTEM) == 0)
{
configs[index].scope = SYSTEM;
-
- const gchar *target = json_object_get_string_member(entry, SCHEMA_TARGET);
- configs[index].data.system.options = config_parse_options(target);
}
else if (g_strcmp0(type, SCHEMA_TYPE_PROCESS) == 0)
{
} config_data_top_t;
/**
- * @brief Config system data structure.
- */
-typedef struct config_data_system
-{
- /**
- * @brief Config options.
- */
- config_options_e options;
-} config_data_system_t;
-
-/**
* @brief Config structure.
* @remarks
* If scope is set to system field config_data is ignored.
{
config_data_process_t process;
config_data_top_t top;
- config_data_system_t system;
} data;
} config_t;
#define SCHEMA_RESULT_PID "pid"
#define SCHEMA_RESULT_TIME "time"
#define SCHEMA_RESULT_USAGE "usage"
+#define SCHEMA_RESULT_CPU "cpu"
+#define SCHEMA_RESULT_MEMORY "memory"
#define SCHEMA_RESULT_AVG_ONE "one_min_avg"
#define SCHEMA_RESULT_AVG_FIVE "five_min_avg"
#define SCHEMA_RESULT_AVG_FIFTEEN "fifteen_min_avg"
free(generator);
}
-int report_generator_generate_system_cpu_usage_report(
+int report_generator_generate_system_report(
report_generator_system_t *generator,
- struct system_usage_report *report)
+ struct system_report *report)
{
ON_NULL_RETURN_VAL(generator, -1);
ON_NULL_RETURN_VAL(report, -1);
- float usage;
-
if (sys_stats_update(&generator->stats) != 0) {
ERR("stats_update_system_stats failed.");
return -1;
}
- if (sys_stats_get_cpu_usage_percentage(&generator->stats, &usage))
+ if (sys_stats_get_cpu_usage_percentage(&generator->stats, &report->cpu))
{
ERR("stats_get_system_cpu_usage_average failed");
return -1;
}
- report->usage = usage;
- report->time = clock_realtime_get();
-
- return 0;
-}
-
-int report_generator_generate_system_memory_usage_report(
- report_generator_system_t *generator,
- struct system_usage_report *report) {
- ON_NULL_RETURN_VAL(generator, -1);
- ON_NULL_RETURN_VAL(report, -1);
-
- float usage;
-
- if (sys_stats_update(&generator->stats) != 0) {
- ERR("stats_update_system_stats failed.");
- return -1;
- }
-
- if (sys_stats_get_memory_usage_percentage(&generator->stats, &usage) != 0) {
+ if (sys_stats_get_memory_usage_percentage(&generator->stats, &report->memory) != 0) {
ERR("stats_get_system_memory_usage failed.");
return -1;
}
+
report->time = clock_realtime_get();
- report->usage = usage;
return 0;
}
*
* @return 0 on success, other value on failure
*/
-int report_generator_generate_system_cpu_usage_report(
+int report_generator_generate_system_report(
report_generator_system_t *generator,
- struct system_usage_report *report);
-
-/**
- * @brief Fills system_usage_report.
- *
- * @param[in] generator system generator
- * @param[out] report
- * @return 0 on success, other value on failure
- */
-int report_generator_generate_system_memory_usage_report(
- report_generator_system_t *generator,
- struct system_usage_report *report);
+ struct system_report *report);
/**
* @brief Fills process_usage_report.
json_builder_end_object(builder);
}
-static void system_memory_usage_report_to_json_object(JsonBuilder *builder, struct system_usage_report *report)
+static void system_report_to_json_object(JsonBuilder *builder, struct system_report *report)
{
json_builder_begin_object(builder);
json_builder_set_member_name(builder, SCHEMA_TYPE);
json_builder_add_string_value(builder, SCHEMA_TYPE_SYSTEM);
- json_builder_set_member_name(builder, SCHEMA_TARGET);
- json_builder_add_string_value(builder, SCHEMA_TARGET_MEMORY);
json_builder_set_member_name(builder, SCHEMA_RESULT_DATA_SYSTEM);
json_builder_begin_object(builder);
json_builder_set_member_name(builder, SCHEMA_RESULT_TIME);
json_builder_add_int_value(builder, report->time);
- json_builder_set_member_name(builder, SCHEMA_RESULT_USAGE);
- json_builder_add_double_value(builder, report->usage);
-
- json_builder_end_object(builder);
-
- json_builder_end_object(builder);
-}
-
-static void system_cpu_usage_report_to_json_object(JsonBuilder *builder, struct system_usage_report *report)
-{
- json_builder_begin_object(builder);
-
- json_builder_set_member_name(builder, SCHEMA_TYPE);
- json_builder_add_string_value(builder, SCHEMA_TYPE_SYSTEM);
- json_builder_set_member_name(builder, SCHEMA_TARGET);
- json_builder_add_string_value(builder, SCHEMA_TARGET_CPU);
+ json_builder_set_member_name(builder, SCHEMA_RESULT_CPU);
+ json_builder_add_double_value(builder, report->cpu);
- json_builder_set_member_name(builder, SCHEMA_RESULT_DATA_SYSTEM);
- json_builder_begin_object(builder);
-
- json_builder_set_member_name(builder, SCHEMA_RESULT_TIME);
- json_builder_add_int_value(builder, report->time);
- json_builder_set_member_name(builder, SCHEMA_RESULT_USAGE);
- json_builder_add_double_value(builder, report->usage);
+ json_builder_set_member_name(builder, SCHEMA_RESULT_MEMORY);
+ json_builder_add_double_value(builder, report->memory);
json_builder_end_object(builder);
system_load_average_report_to_json_object);
IMPLEMENT_SERIALIZER_FUNC(
- report_json_serializer_serialize_system_memory_usage_report,
- struct system_usage_report,
- system_memory_usage_report_to_json_object)
-
-IMPLEMENT_SERIALIZER_FUNC(
- report_json_serializer_serialize_system_cpu_usage_report,
- struct system_usage_report,
- system_cpu_usage_report_to_json_object)
+ report_json_serializer_serialize_system_report,
+ struct system_report,
+ system_report_to_json_object)
IMPLEMENT_SERIALIZER_FUNC(
report_json_serializer_serialize_apps_cpu_usage_report,
char *report_json_serializer_serialize_system_load_average_report(struct system_load_average_report *report);
/**
- * @brief Serializes system_usage_report to json string
+ * @brief Serializes system_report to json string
*
* @param[in] report Report structure with usage data.
*
* @return dynamically allocated string on NULL on error.
* @remark returned value should be released with @free
*/
-char *report_json_serializer_serialize_system_memory_usage_report(struct system_usage_report *report);
-
-/**
- * @brief Serializes system_usage_report to json string
- *
- * @param[in] report Report structure with usage data.
- *
- * @return dynamically allocated string on NULL on error.
- * @remark returned value should be released with @free
- */
-char *report_json_serializer_serialize_system_cpu_usage_report(struct system_usage_report *report);
+char *report_json_serializer_serialize_system_report(struct system_report *report);
/**
* @brief Serializes process_usage_report to json string
};
/**
- * @brief System usage report
+ * @brief System report
*/
-struct system_usage_report {
+struct system_report {
time_t time; /** Number of seconds after the Epoch */
- float usage; /** Memory utilization (Percent) */
+ float cpu; /** CPU utilization (Percent) */
+ float memory; /** Memory utilization (Percent) */
};
/**
#include "macros.h"
#include "ipc.h"
-static task_t *create_system_report_task(config_options_e options);
+static task_t *create_system_report_task();
static task_t *create_load_avg_report_task();
static task_t *create_app_report_task(config_options_e options, const char *regex);
static task_t *create_top_report_task(struct config_data_top options);
-static void execute_scan_system_memory(task_t *task);
-static void execute_scan_system_cpu(task_t *task);
+static void execute_scan_system(task_t *task);
static void execute_scan_load_avg(task_t *task);
static void execute_scan_app_memory(task_t *task);
static void execute_scan_apps_cpu(task_t *task);
switch(config->scope)
{
case SYSTEM:
- return create_system_report_task(config->data.system.options);
+ return create_system_report_task();
case LOAD_AVG:
return create_load_avg_report_task();
case APPS:
}
}
-static task_t *create_system_report_task(config_options_e options)
+static task_t *create_system_report_task()
{
system_task_t *_system_task = (system_task_t *)g_malloc(sizeof(system_task_t));
_system_task->task.release = release_system_task;
_system_task->report_generator = report_generator_new_system_report_generator();
-
- switch (options)
- {
- case OBSERVE_CPU:
- _system_task->task.execute = execute_scan_system_cpu;
- break;
- case OBSERVE_MEMORY:
- _system_task->task.execute = execute_scan_system_memory;
- break;
- default:
- report_generator_free_system_generator(_system_task->report_generator);
- g_free(_system_task);
- return NULL;
- }
+ _system_task->task.execute = execute_scan_system;
return &_system_task->task;
}
return &_app_task->task;
}
-static void execute_scan_system_memory(task_t *task)
-{
- ON_NULL_RETURN(task);
-
- system_task_t *_system_task = container_of(task, system_task_t, task);
-
- struct system_usage_report report;
-
- int ret = report_generator_generate_system_memory_usage_report(_system_task->report_generator, &report);
- ON_TRUE_RETURN(ret != 0);
-
- char *json_report = report_json_serializer_serialize_system_memory_usage_report(&report);
- ipc_send_report(json_report);
- g_free(json_report);
-}
-
-static void execute_scan_system_cpu(task_t *task)
+static void execute_scan_system(task_t *task)
{
ON_NULL_RETURN(task);
system_task_t *_system_task = container_of(task, system_task_t, task);
- struct system_usage_report report;
+ struct system_report report;
- int ret = report_generator_generate_system_cpu_usage_report(_system_task->report_generator, &report);
+ int ret = report_generator_generate_system_report(_system_task->report_generator, &report);
ON_TRUE_RETURN(ret != 0);
- char *json_report = report_json_serializer_serialize_system_cpu_usage_report(&report);
+ char *json_report = report_json_serializer_serialize_system_report(&report);
ipc_send_report(json_report);
g_free(json_report);
}