]> granicus.if.org Git - vnstat/commitdiff
yet another fix for hourly image rate scaling, this time for getting the axis numbers...
authorTeemu Toivola <git@humdi.net>
Fri, 26 Jan 2018 21:38:27 +0000 (23:38 +0200)
committerTeemu Toivola <git@humdi.net>
Fri, 26 Jan 2018 21:38:27 +0000 (23:38 +0200)
src/image.c
tests/image_tests.c

index 207a112432493cb332ec9b7426e3f152857f70c5..9952544e05b39e1c772a089322d78e4b4dbd4c45 100644 (file)
@@ -831,7 +831,7 @@ uint64_t getscale(const uint64_t input, const int rate)
        }
 
        /* round result depending of scale */
-       if (result>300) {
+       if (result>=300) {
                result = result/4 + (100 - ((result/4) % 100));
        } else if (result>20) {
                result = result/4 + (10 - ((result/4) % 10));
@@ -841,13 +841,13 @@ uint64_t getscale(const uint64_t input, const int rate)
 
        /* put unit back */
        if (i) {
-               result = result * pow(div, i-1) * 1000;
+               result = result * pow(div, i);
        }
 
        /* make sure result isn't zero */
        if (!result) {
                if (i) {
-                       result = pow(div, i-1) * 1000;
+                       result = pow(div, i);
                } else {
                        result = 1;
                }
index 94c2017a67bbfa09a2e475865059d720e6cb7b30..60c76e69e635ad704c6b5b561c48f08726d18fb7 100644 (file)
@@ -146,17 +146,17 @@ START_TEST(getscale_nonzero_1024)
        ck_assert_int_eq(getscale(50, 0), 20);
        ck_assert_int_eq(getscale(1000, 0), 300);
        ck_assert_int_eq(getscale(1023, 0), 300);
-       ck_assert_int_eq(getscale(1024, 0), 1000);
-       ck_assert_int_eq(getscale(1025, 0), 1000);
-       ck_assert_int_eq(getscale(1026, 0), 1000);
-       ck_assert_int_eq(getscale(1500, 0), 1000);
-       ck_assert_int_eq(getscale(2047, 0), 1000);
-       ck_assert_int_eq(getscale(2048, 0), 1000);
-       ck_assert_int_eq(getscale(2049, 0), 1000);
-       ck_assert_int_eq(getscale(8191, 0), 1000);
-       ck_assert_int_eq(getscale(8192, 0), 2000);
-       ck_assert_int_eq(getscale(8193, 0), 2000);
-       ck_assert_int_eq(getscale(20000, 0), 4000);
+       ck_assert_int_eq(getscale(1024, 0), 1024);
+       ck_assert_int_eq(getscale(1025, 0), 1024);
+       ck_assert_int_eq(getscale(1026, 0), 1024);
+       ck_assert_int_eq(getscale(1500, 0), 1024);
+       ck_assert_int_eq(getscale(2047, 0), 1024);
+       ck_assert_int_eq(getscale(2048, 0), 1024);
+       ck_assert_int_eq(getscale(2049, 0), 1024);
+       ck_assert_int_eq(getscale(8191, 0), 1024);
+       ck_assert_int_eq(getscale(8192, 0), 2048);
+       ck_assert_int_eq(getscale(8193, 0), 2048);
+       ck_assert_int_eq(getscale(20000, 0), 4096);
 
        ck_assert_int_eq(getscale(1, 1), 1);
        ck_assert_int_eq(getscale(2, 1), 1);
@@ -165,17 +165,18 @@ START_TEST(getscale_nonzero_1024)
        ck_assert_int_eq(getscale(50, 1), 20);
        ck_assert_int_eq(getscale(1000, 1), 300);
        ck_assert_int_eq(getscale(1023, 1), 300);
-       ck_assert_int_eq(getscale(1024, 1), 1000);
-       ck_assert_int_eq(getscale(1025, 1), 1000);
-       ck_assert_int_eq(getscale(1026, 1), 1000);
-       ck_assert_int_eq(getscale(1500, 1), 1000);
-       ck_assert_int_eq(getscale(2047, 1), 1000);
-       ck_assert_int_eq(getscale(2048, 1), 1000);
-       ck_assert_int_eq(getscale(2049, 1), 1000);
-       ck_assert_int_eq(getscale(8191, 1), 1000);
-       ck_assert_int_eq(getscale(8192, 1), 2000);
-       ck_assert_int_eq(getscale(8193, 1), 2000);
-       ck_assert_int_eq(getscale(20000, 1), 4000);
+       ck_assert_int_eq(getscale(1024, 1), 1024);
+       ck_assert_int_eq(getscale(1025, 1), 1024);
+       ck_assert_int_eq(getscale(1026, 1), 1024);
+       ck_assert_int_eq(getscale(1500, 1), 1024);
+       ck_assert_int_eq(getscale(2047, 1), 1024);
+       ck_assert_int_eq(getscale(2048, 1), 1024);
+       ck_assert_int_eq(getscale(2049, 1), 1024);
+       ck_assert_int_eq(getscale(8191, 1), 1024);
+       ck_assert_int_eq(getscale(8192, 1), 2048);
+       ck_assert_int_eq(getscale(8193, 1), 2048);
+       ck_assert_int_eq(getscale(20000, 1), 4096);
+       ck_assert_int_eq(getscale(720000, 1), 204800);
 }
 END_TEST
 
@@ -190,17 +191,17 @@ START_TEST(getscale_nonzero_1000)
        ck_assert_int_eq(getscale(50, 0), 20);
        ck_assert_int_eq(getscale(1000, 0), 300);
        ck_assert_int_eq(getscale(1023, 0), 300);
-       ck_assert_int_eq(getscale(1024, 0), 1000);
-       ck_assert_int_eq(getscale(1025, 0), 1000);
-       ck_assert_int_eq(getscale(1026, 0), 1000);
-       ck_assert_int_eq(getscale(1500, 0), 1000);
-       ck_assert_int_eq(getscale(2047, 0), 1000);
-       ck_assert_int_eq(getscale(2048, 0), 1000);
-       ck_assert_int_eq(getscale(2049, 0), 1000);
-       ck_assert_int_eq(getscale(8191, 0), 1000);
-       ck_assert_int_eq(getscale(8192, 0), 2000);
-       ck_assert_int_eq(getscale(8193, 0), 2000);
-       ck_assert_int_eq(getscale(20000, 0), 4000);
+       ck_assert_int_eq(getscale(1024, 0), 1024);
+       ck_assert_int_eq(getscale(1025, 0), 1024);
+       ck_assert_int_eq(getscale(1026, 0), 1024);
+       ck_assert_int_eq(getscale(1500, 0), 1024);
+       ck_assert_int_eq(getscale(2047, 0), 1024);
+       ck_assert_int_eq(getscale(2048, 0), 1024);
+       ck_assert_int_eq(getscale(2049, 0), 1024);
+       ck_assert_int_eq(getscale(8191, 0), 1024);
+       ck_assert_int_eq(getscale(8192, 0), 2048);
+       ck_assert_int_eq(getscale(8193, 0), 2048);
+       ck_assert_int_eq(getscale(20000, 0), 4096);
 
        ck_assert_int_eq(getscale(1, 1), 1);
        ck_assert_int_eq(getscale(2, 1), 1);
@@ -281,7 +282,7 @@ START_TEST(hourly_imagescaling_normal)
        ck_assert_str_eq(unittext, "KiB");
 
        unittext = hourly_imagescale_logic(1000000, 0);
-       ck_assert_str_eq(unittext, "MiB");
+       ck_assert_str_eq(unittext, "KiB");
 
        unittext = hourly_imagescale_logic(1024000, 0);
        ck_assert_str_eq(unittext, "MiB");
@@ -329,7 +330,7 @@ START_TEST(hourly_imagescaling_rate_1024)
        ck_assert_str_eq(unittext, "KiB/s");
 
        unittext = hourly_imagescale_logic(1000000, 1);
-       ck_assert_str_eq(unittext, "MiB/s");
+       ck_assert_str_eq(unittext, "KiB/s");
 
        unittext = hourly_imagescale_logic(1024000, 1);
        ck_assert_str_eq(unittext, "MiB/s");