]> granicus.if.org Git - vnstat/commitdiff
improve test coverage
authorTeemu Toivola <git@humdi.net>
Wed, 13 Mar 2019 21:57:34 +0000 (23:57 +0200)
committerTeemu Toivola <git@humdi.net>
Wed, 13 Mar 2019 21:57:34 +0000 (23:57 +0200)
src/dbsql.c
tests/dbsql_tests.c

index a192a0060ca773f6b28923c4e5c1af0effa08563..3bbeaa9b9f3e88245abbd63e2d0353d86140bbc0 100644 (file)
@@ -533,7 +533,6 @@ int db_getinterfaceinfo(const char *iface, interfaceinfo *info)
                }
                sqlite3_snprintf(512, sql, "select name, alias, active, strftime('%%s', created, 'utc'), strftime('%%s', updated, 'utc'), rxcounter, txcounter, rxtotal, txtotal from interface where id=%"PRId64";", (int64_t)ifaceid);
        } else {
-               /* TODO: tests */
                ifaceidin = db_getinterfaceidin(iface);
                if (ifaceidin == NULL || strlen(ifaceidin) < 1) {
                        return 0;
@@ -1109,6 +1108,7 @@ int db_getdata_range(dbdatalist **dbdata, dbdatalistinfo *listinfo, const char *
        /* note that using the linked list reverses the order */
        /* most recent last in the linked list is considered the normal order */
        if (strcmp(table, "top") == 0) {
+               /* 'top' entries, requires different query due to rx+tx ordering */
                if (strlen(dbegin)) {
                        if (resultlimit > 0) {
                                snprintf(limit, 64, "limit %"PRIu32"", resultlimit);
index 08806f73b8c9cee5903394abee8726e05293b10f..634269f6b945f8adcff91252920cbeb782f16d6e 100644 (file)
@@ -2043,6 +2043,97 @@ START_TEST(db_getinterfaceidin_can_handle_error_situations)
 }
 END_TEST
 
+START_TEST(db_getinterfaceinfo_can_handle_interface_merges)
+{
+       int ret;
+       interfaceinfo info;
+
+       defaultcfg();
+
+       ret = db_open_rw(1);
+       ck_assert_int_eq(ret, 1);
+
+       ret = db_addtraffic("eth0", 1, 1);
+       ck_assert_int_eq(ret, 1);
+
+       ret = db_addtraffic("eth1", 2, 2);
+       ck_assert_int_eq(ret, 1);
+
+       ret = db_addtraffic("eth2", 5, 5);
+       ck_assert_int_eq(ret, 1);
+
+       ret = db_getinterfaceinfo("eth0+ethnone", &info);
+       ck_assert_int_eq(ret, 1);
+       ck_assert_int_eq(info.rxtotal, 1);
+       ck_assert_int_eq(info.txtotal, 1);
+       ck_assert_int_gt(info.updated, 1000);
+       ck_assert_int_lt(info.updated, 2100000000);
+
+       ret = db_getinterfaceinfo("eth0+eth1", &info);
+       ck_assert_int_eq(ret, 1);
+       ck_assert_int_eq(info.rxtotal, 3);
+       ck_assert_int_eq(info.txtotal, 3);
+       ck_assert_int_gt(info.updated, 1000);
+       ck_assert_int_lt(info.updated, 2100000000);
+
+       ret = db_getinterfaceinfo("eth1+eth2", &info);
+       ck_assert_int_eq(ret, 1);
+       ck_assert_int_eq(info.rxtotal, 7);
+       ck_assert_int_eq(info.txtotal, 7);
+       ck_assert_int_gt(info.updated, 1000);
+       ck_assert_int_lt(info.updated, 2100000000);
+
+       ret = db_getinterfaceinfo("eth0+eth1+eth2", &info);
+       ck_assert_int_eq(ret, 1);
+       ck_assert_int_eq(info.rxtotal, 8);
+       ck_assert_int_eq(info.txtotal, 8);
+       ck_assert_int_gt(info.updated, 1000);
+       ck_assert_int_lt(info.updated, 2100000000);
+
+       ret = db_close();
+       ck_assert_int_eq(ret, 1);
+}
+END_TEST
+
+START_TEST(db_getinterfaceinfo_can_handle_invalid_input)
+{
+       int ret;
+       interfaceinfo info;
+
+       defaultcfg();
+
+       ret = db_open_rw(1);
+       ck_assert_int_eq(ret, 1);
+
+       ret = db_addtraffic("eth0", 1, 1);
+       ck_assert_int_eq(ret, 1);
+
+       ret = db_addtraffic("eth1", 2, 2);
+       ck_assert_int_eq(ret, 1);
+
+       ret = db_addtraffic("eth2", 5, 5);
+       ck_assert_int_eq(ret, 1);
+
+       ret = db_getinterfaceinfo("eth0+", &info);
+       ck_assert_int_eq(ret, 0);
+
+       ret = db_getinterfaceinfo("+", &info);
+       ck_assert_int_eq(ret, 0);
+
+       ret = db_getinterfaceinfo("++", &info);
+       ck_assert_int_eq(ret, 0);
+
+       ret = db_getinterfaceinfo("", &info);
+       ck_assert_int_eq(ret, 0);
+
+       ret = db_getinterfaceinfo("ethunknown", &info);
+       ck_assert_int_eq(ret, 0);
+
+       ret = db_close();
+       ck_assert_int_eq(ret, 1);
+}
+END_TEST
+
 void add_dbsql_tests(Suite *s)
 {
        TCase *tc_dbsql = tcase_create("DB SQL");
@@ -2116,5 +2207,7 @@ void add_dbsql_tests(Suite *s)
        tcase_add_test(tc_dbsql, db_getinterfaceid_can_get_ids);
        tcase_add_test(tc_dbsql, db_getinterfaceidin_can_get_in_groups);
        tcase_add_test(tc_dbsql, db_getinterfaceidin_can_handle_error_situations);
+       tcase_add_test(tc_dbsql, db_getinterfaceinfo_can_handle_interface_merges);
+       tcase_add_test(tc_dbsql, db_getinterfaceinfo_can_handle_invalid_input);
        suite_add_tcase(s, tc_dbsql);
 }