report-generator: refactor system report 43/184843/1
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Mon, 23 Jul 2018 12:25:26 +0000 (14:25 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Mon, 23 Jul 2018 12:28:42 +0000 (14:28 +0200)
report cpu and memory usage at once, remove "target" config option.

Change-Id: I5ad40cff0733ea3c8ee258fa9854ea9d17fa95e0

src/config-deserializer.c
src/config.h
src/json-schema-defs.h
src/report-generator.c
src/report-generator.h
src/report-json-serializer.c
src/report-json-serializer.h
src/report.h
src/task-factory.c

index 507194d..d753fe5 100644 (file)
@@ -109,9 +109,6 @@ static void config_array_iterate_func(JsonArray *array, guint index, JsonNode *e
     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)
     {
index 5334c1d..578a91e 100644 (file)
@@ -103,17 +103,6 @@ typedef struct config_data_top
 } 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.
@@ -138,7 +127,6 @@ typedef struct config
     {
         config_data_process_t process;
         config_data_top_t top;
-        config_data_system_t system;
     } data;
 } config_t;
 
index 838d92f..3492e29 100644 (file)
@@ -46,6 +46,8 @@
 #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"
index c6e761f..9a0f680 100644 (file)
@@ -144,52 +144,31 @@ void report_generator_free_app_generator(report_generator_app_t *generator)
        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;
 }
index 8f36faa..b720379 100644 (file)
@@ -118,20 +118,9 @@ void report_generator_free_top_generator(report_generator_top_t *generator);
  *
  * @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.
index e991081..659fd71 100644 (file)
@@ -82,14 +82,12 @@ static void system_load_average_report_to_json_object(JsonBuilder *builder, stru
        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);
@@ -97,30 +95,11 @@ static void system_memory_usage_report_to_json_object(JsonBuilder *builder, stru
        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);
 
@@ -273,14 +252,9 @@ IMPLEMENT_SERIALIZER_FUNC(
                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,
index 7a08a1e..e607ca1 100644 (file)
 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
index 11ab747..4b511e1 100644 (file)
@@ -32,11 +32,12 @@ struct system_load_average_report {
 };
 
 /**
- * @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) */
 };
 
 /**
index 782b9c9..3c9fcf6 100644 (file)
 #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);
@@ -47,7 +46,7 @@ task_t *task_factory_create_task(const config_t *config)
     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:
@@ -59,26 +58,13 @@ task_t *task_factory_create_task(const config_t *config)
     }
 }
 
-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;
 }
@@ -117,34 +103,18 @@ static task_t *create_app_report_task(config_options_e options, const char *app_
     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);
 }