]> arthur.barton.de Git - netdata.git/blobdiff - src/unit_test.c
freebsd coverity: 164808 Uninitialized scalar variable
[netdata.git] / src / unit_test.c
index 6cb9f8e732e51424c868f8ca75c6a5c709c2aafa..0866d215c8d3d06eb126be015b17175edfa86c83 100644 (file)
@@ -18,7 +18,7 @@ int check_storage_number(calculated_number n, int debug) {
     if(dcdiff < 0) dcdiff = -dcdiff;
 
     size_t len = print_calculated_number(buffer, d);
-    calculated_number p = strtold(buffer, NULL);
+    calculated_number p = str2l(buffer);
     calculated_number pdiff = n - p;
     calculated_number pcdiff = pdiff * 100.0 / n;
     if(pcdiff < 0) pcdiff = -pcdiff;
@@ -282,7 +282,7 @@ struct test test1 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_ABSOLUTE,    // algorithm
+        RRD_ALGORITHM_ABSOLUTE,    // algorithm
         10,                 // feed entries
         9,                  // result entries
         test1_feed,         // feed
@@ -318,7 +318,7 @@ struct test test2 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_ABSOLUTE,    // algorithm
+        RRD_ALGORITHM_ABSOLUTE,    // algorithm
         10,                 // feed entries
         9,                  // result entries
         test2_feed,         // feed
@@ -353,7 +353,7 @@ struct test test3 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_INCREMENTAL, // algorithm
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
         10,                 // feed entries
         9,                  // result entries
         test3_feed,         // feed
@@ -388,7 +388,7 @@ struct test test4 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_INCREMENTAL, // algorithm
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
         10,                 // feed entries
         9,                  // result entries
         test4_feed,         // feed
@@ -423,7 +423,7 @@ struct test test5 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_INCREMENTAL, // algorithm
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
         10,                 // feed entries
         9,                  // result entries
         test5_feed,         // feed
@@ -464,7 +464,7 @@ struct test test6 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_INCREMENTAL, // algorithm
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
         16,                 // feed entries
         4,                  // result entries
         test6_feed,         // feed
@@ -499,7 +499,7 @@ struct test test7 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_INCREMENTAL, // algorithm
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
         10,                 // feed entries
         18,                 // result entries
         test7_feed,         // feed
@@ -530,7 +530,7 @@ struct test test8 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_ABSOLUTE,    // algorithm
+        RRD_ALGORITHM_ABSOLUTE,    // algorithm
         6,                  // feed entries
         10,                 // result entries
         test8_feed,         // feed
@@ -571,7 +571,7 @@ struct test test9 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_ABSOLUTE,    // algorithm
+        RRD_ALGORITHM_ABSOLUTE,    // algorithm
         16,                 // feed entries
         4,                  // result entries
         test9_feed,         // feed
@@ -606,7 +606,7 @@ struct test test10 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_INCREMENTAL, // algorithm
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
         10,                 // feed entries
         7,                  // result entries
         test10_feed,        // feed
@@ -649,7 +649,7 @@ struct test test11 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_PCENT_OVER_DIFF_TOTAL,   // algorithm
+        RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL,   // algorithm
         10,                 // feed entries
         9,                  // result entries
         test11_feed,        // feed
@@ -692,7 +692,7 @@ struct test test12 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_PCENT_OVER_DIFF_TOTAL,   // algorithm
+        RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL,   // algorithm
         10,                 // feed entries
         9,                  // result entries
         test12_feed,        // feed
@@ -727,7 +727,7 @@ struct test test13 = {
         1,                  // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_PCENT_OVER_DIFF_TOTAL,   // algorithm
+        RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL,   // algorithm
         10,                 // feed entries
         7,                  // result entries
         test13_feed,        // feed
@@ -762,7 +762,7 @@ struct test test14 = {
         30,                 // update_every
         8,                  // multiplier
         1000000000,         // divisor
-        RRDDIM_INCREMENTAL, // algorithm
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
         10,                 // feed entries
         8,                  // result entries
         test14_feed,        // feed
@@ -794,7 +794,7 @@ struct test test14b = {
         30,                 // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_INCREMENTAL, // algorithm
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
         10,                 // feed entries
         8,                  // result entries
         test14b_feed,        // feed
@@ -826,7 +826,7 @@ struct test test14c = {
         30,                 // update_every
         1,                  // multiplier
         1,                  // divisor
-        RRDDIM_INCREMENTAL, // algorithm
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
         10,                 // feed entries
         9,                  // result entries
         test14c_feed,        // feed
@@ -835,30 +835,74 @@ struct test test14c = {
         NULL                // results2
 };
 
+// --------------------------------------------------------------------------------------------------------------------
+// test15
+
+struct feed_values test15_feed[] = {
+        {       0, 1068066388 },
+        { 1008752, 1068822698 },
+        {  993809, 1069573072 },
+        {  995911, 1070324135 },
+        { 1014562, 1071078166 },
+        {  994684, 1071831349 },
+        {  993128, 1072235739 },
+        { 1010332, 1072958871 },
+        { 1003394, 1073707019 },
+        {  995201, 1074460255 },
+};
+
+collected_number test15_feed2[] = {
+    178825286, 178825286, 178825286, 178825286, 178825498, 178825498, 179165652, 179202964, 179203282, 179204130
+};
+
+calculated_number test15_results[] = {
+        5857.4080000, 5898.4540000, 5891.6590000, 5806.3160000, 5914.2640000, 3202.2630000, 5589.6560000, 5822.5260000, 5911.7520000
+};
+
+calculated_number test15_results2[] = {
+        0.0000000, 0.0000000, 0.0024944, 1.6324779, 0.0212777, 2655.1890000, 290.5387000, 5.6733610, 6.5960220
+};
+
+struct test test15 = {
+        "test15",           // name
+        "test incremental with 2 dimensions",
+        1,                  // update_every
+        8,                  // multiplier
+        1024,               // divisor
+        RRD_ALGORITHM_INCREMENTAL, // algorithm
+        10,                 // feed entries
+        9,                  // result entries
+        test15_feed,        // feed
+        test15_results,     // results
+        test15_feed2,       // feed2
+        test15_results2     // results2
+};
+
 // --------------------------------------------------------------------------------------------------------------------
 
 int run_test(struct test *test)
 {
     fprintf(stderr, "\nRunning test '%s':\n%s\n", test->name, test->description);
 
-    rrd_memory_mode = RRD_MEMORY_MODE_RAM;
-    rrd_update_every = test->update_every;
+    default_rrd_memory_mode = RRD_MEMORY_MODE_RAM;
+    default_rrd_update_every = test->update_every;
 
     char name[101];
     snprintfz(name, 100, "unittest-%s", test->name);
 
     // create the chart
-    RRDSET *st = rrdset_create("netdata", name, name, "netdata", NULL, "Unit Testing", "a value", 1, test->update_every, RRDSET_TYPE_LINE);
+    RRDSET *st = rrdset_create_localhost("netdata", name, name, "netdata", NULL, "Unit Testing", "a value", 1
+                                         , test->update_every, RRDSET_TYPE_LINE);
     RRDDIM *rd = rrddim_add(st, "dim1", NULL, test->multiplier, test->divisor, test->algorithm);
     
     RRDDIM *rd2 = NULL;
     if(test->feed2)
         rd2 = rrddim_add(st, "dim2", NULL, test->multiplier, test->divisor, test->algorithm);
 
-    st->debug = 1;
+    rrdset_flag_set(st, RRDSET_FLAG_DEBUG);
 
     // feed it with the test data
-    time_t time_now = 0, time_start = time(NULL);
+    time_t time_now = 0, time_start = now_realtime_sec();
     unsigned long c;
     collected_number last = 0;
     for(c = 0; c < test->feed_entries; c++) {
@@ -872,7 +916,7 @@ int run_test(struct test *test)
                 (float)time_now / 1000000.0,
                 ((calculated_number)test->feed[c].value - (calculated_number)last) * (calculated_number)test->multiplier / (calculated_number)test->divisor,
                 (((calculated_number)test->feed[c].value - (calculated_number)last) * (calculated_number)test->multiplier / (calculated_number)test->divisor) / (calculated_number)test->feed[c].microseconds * (calculated_number)1000000);
-            rrdset_next_usec(st, test->feed[c].microseconds);
+            rrdset_next_usec_unfiltered(st, test->feed[c].microseconds);
         }
         else {
             fprintf(stderr, "    > %s: feeding position %lu\n", test->name, c+1);
@@ -932,8 +976,56 @@ int run_test(struct test *test)
     return errors;
 }
 
+static int test_variable_renames(void) {
+    fprintf(stderr, "Creating chart\n");
+    RRDSET *st = rrdset_create_localhost("chart", "ID", NULL, "family", "context", "Unit Testing", "a value", 1, 1
+                                         , RRDSET_TYPE_LINE);
+    fprintf(stderr, "Created chart with id '%s', name '%s'\n", st->id, st->name);
+
+    fprintf(stderr, "Creating dimension DIM1\n");
+    RRDDIM *rd1 = rrddim_add(st, "DIM1", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
+    fprintf(stderr, "Created dimension with id '%s', name '%s'\n", rd1->id, rd1->name);
+
+    fprintf(stderr, "Creating dimension DIM2\n");
+    RRDDIM *rd2 = rrddim_add(st, "DIM2", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
+    fprintf(stderr, "Created dimension with id '%s', name '%s'\n", rd2->id, rd2->name);
+
+    fprintf(stderr, "Renaming chart to CHARTNAME1\n");
+    rrdset_set_name(st, "CHARTNAME1");
+    fprintf(stderr, "Renamed chart with id '%s' to name '%s'\n", st->id, st->name);
+
+    fprintf(stderr, "Renaming chart to CHARTNAME2\n");
+    rrdset_set_name(st, "CHARTNAME2");
+    fprintf(stderr, "Renamed chart with id '%s' to name '%s'\n", st->id, st->name);
+
+    fprintf(stderr, "Renaming dimension DIM1 to DIM1NAME1\n");
+    rrddim_set_name(st, rd1, "DIM1NAME1");
+    fprintf(stderr, "Renamed dimension with id '%s' to name '%s'\n", rd1->id, rd1->name);
+
+    fprintf(stderr, "Renaming dimension DIM1 to DIM1NAME2\n");
+    rrddim_set_name(st, rd1, "DIM1NAME2");
+    fprintf(stderr, "Renamed dimension with id '%s' to name '%s'\n", rd1->id, rd1->name);
+
+    fprintf(stderr, "Renaming dimension DIM2 to DIM2NAME1\n");
+    rrddim_set_name(st, rd2, "DIM2NAME1");
+    fprintf(stderr, "Renamed dimension with id '%s' to name '%s'\n", rd2->id, rd2->name);
+
+    fprintf(stderr, "Renaming dimension DIM2 to DIM2NAME2\n");
+    rrddim_set_name(st, rd2, "DIM2NAME2");
+    fprintf(stderr, "Renamed dimension with id '%s' to name '%s'\n", rd2->id, rd2->name);
+
+    BUFFER *buf = buffer_create(1);
+    health_api_v1_chart_variables2json(st, buf);
+    fprintf(stderr, "%s", buffer_tostring(buf));
+    buffer_free(buf);
+    return 1;
+}
+
 int run_all_mockup_tests(void)
 {
+    if(!test_variable_renames())
+        return 1;
+
     if(run_test(&test1))
         return 1;
 
@@ -982,6 +1074,11 @@ int run_all_mockup_tests(void)
     if(run_test(&test14c))
         return 1;
 
+    if(run_test(&test15))
+        return 1;
+
+
+
     return 0;
 }
 
@@ -994,26 +1091,27 @@ int unit_test(long delay, long shift)
     snprintfz(name, 100, "unittest-%d-%ld-%ld", repeat, delay, shift);
 
     //debug_flags = 0xffffffff;
-    rrd_memory_mode = RRD_MEMORY_MODE_RAM;
-    rrd_update_every = 1;
+    default_rrd_memory_mode = RRD_MEMORY_MODE_RAM;
+    default_rrd_update_every = 1;
 
     int do_abs = 1;
     int do_inc = 1;
     int do_abst = 0;
     int do_absi = 0;
 
-    RRDSET *st = rrdset_create("netdata", name, name, "netdata", NULL, "Unit Testing", "a value", 1, 1, RRDSET_TYPE_LINE);
-    st->debug = 1;
+    RRDSET *st = rrdset_create_localhost("netdata", name, name, "netdata", NULL, "Unit Testing", "a value", 1, 1
+                                         , RRDSET_TYPE_LINE);
+    rrdset_flag_set(st, RRDSET_FLAG_DEBUG);
 
     RRDDIM *rdabs = NULL;
     RRDDIM *rdinc = NULL;
     RRDDIM *rdabst = NULL;
     RRDDIM *rdabsi = NULL;
 
-    if(do_abs) rdabs = rrddim_add(st, "absolute", "absolute", 1, 1, RRDDIM_ABSOLUTE);
-    if(do_inc) rdinc = rrddim_add(st, "incremental", "incremental", 1, 1, RRDDIM_INCREMENTAL);
-    if(do_abst) rdabst = rrddim_add(st, "percentage-of-absolute-row", "percentage-of-absolute-row", 1, 1, RRDDIM_PCENT_OVER_ROW_TOTAL);
-    if(do_absi) rdabsi = rrddim_add(st, "percentage-of-incremental-row", "percentage-of-incremental-row", 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+    if(do_abs) rdabs = rrddim_add(st, "absolute", "absolute", 1, 1, RRD_ALGORITHM_ABSOLUTE);
+    if(do_inc) rdinc = rrddim_add(st, "incremental", "incremental", 1, 1, RRD_ALGORITHM_INCREMENTAL);
+    if(do_abst) rdabst = rrddim_add(st, "percentage-of-absolute-row", "percentage-of-absolute-row", 1, 1, RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL);
+    if(do_absi) rdabsi = rrddim_add(st, "percentage-of-incremental-row", "percentage-of-incremental-row", 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
 
     long increment = 1000;
     collected_number i = 0;
@@ -1027,7 +1125,7 @@ int unit_test(long delay, long shift)
 
         fprintf(stderr, "\n\nLOOP = %lu, DELAY = %ld, VALUE = " COLLECTED_NUMBER_FORMAT "\n", c, delay, i);
         if(c) {
-            rrdset_next_usec(st, delay);
+            rrdset_next_usec_unfiltered(st, delay);
         }
         if(do_abs) rrddim_set(st, "absolute", i);
         if(do_inc) rrddim_set(st, "incremental", i);
@@ -1035,7 +1133,7 @@ int unit_test(long delay, long shift)
         if(do_absi) rrddim_set(st, "percentage-of-incremental-row", i);
 
         if(!c) {
-            gettimeofday(&st->last_collected_time, NULL);
+            now_realtime_timeval(&st->last_collected_time);
             st->last_collected_time.tv_usec = shift;
         }