Skip to content

Commit

Permalink
improve --alert test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
vergoh committed Jan 1, 2024
1 parent f72b3a9 commit 919de4d
Show file tree
Hide file tree
Showing 2 changed files with 139 additions and 6 deletions.
1 change: 0 additions & 1 deletion src/dbshow.c
Original file line number Diff line number Diff line change
Expand Up @@ -867,7 +867,6 @@ void showhours(const interfaceinfo *ifaceinfo)
timeused_debug(__func__, 0);
}

// TODO: tests
void show95thpercentile(const interfaceinfo *ifaceinfo)
{
struct tm *d;
Expand Down
144 changes: 139 additions & 5 deletions tests/database_tests.c
Original file line number Diff line number Diff line change
Expand Up @@ -822,6 +822,30 @@ START_TEST(showalert_shows_nothing_with_none_type)
}
END_TEST

START_TEST(showalert_shows_nothing_in_json_with_none_type)
{
int ret;

defaultcfg();
cfg.qmode = 10;

ret = db_open_rw(1);
ck_assert_int_eq(ret, 1);

ret = db_addinterface("something");
ck_assert_int_eq(ret, 1);

ret = db_addtraffic("something", 100, 200);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_None, AC_Total, 42);
ck_assert_int_eq(ret, 0);

ret = db_close();
ck_assert_int_eq(ret, 1);
}
END_TEST

START_TEST(showalert_can_alert_on_limit_and_show_things)
{
int ret;
Expand All @@ -838,19 +862,74 @@ START_TEST(showalert_can_alert_on_limit_and_show_things)
ret = db_setalias("something", "anything");
ck_assert_int_eq(ret, 1);

ret = db_addtraffic("something", 100, 200);
ret = db_addtraffic("something", 1000, 2000);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Hour, AC_Total, 2500);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Day, AC_Total, 2500);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Month, AC_Total, 2500);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Hour, AC_Total, 250);
ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_Total, 2500);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Day, AC_Total, 250);
ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Percentile, AC_RX, 2);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Month, AC_Total, 250);
ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Percentile, AC_TX, 4);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_Total, 250);
ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Percentile, AC_Total, 5);
ck_assert_int_eq(ret, 1);

ret = db_close();
ck_assert_int_eq(ret, 1);
}
END_TEST

START_TEST(showalert_can_alert_on_limit_and_show_things_in_json)
{
int ret;

defaultcfg();
cfg.qmode = 10;
suppress_output();

ret = db_open_rw(1);
ck_assert_int_eq(ret, 1);

ret = db_addinterface("something");
ck_assert_int_eq(ret, 1);

ret = db_setalias("something", "anything");
ck_assert_int_eq(ret, 1);

ret = db_addtraffic("something", 1000, 2000);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Hour, AC_Total, 2500);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Day, AC_Total, 2500);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Month, AC_Total, 2500);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_Total, 2500);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Percentile, AC_RX, 2);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Percentile, AC_TX, 4);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Percentile, AC_Total, 5);
ck_assert_int_eq(ret, 1);

ret = db_close();
Expand Down Expand Up @@ -909,6 +988,58 @@ START_TEST(showalert_limit_and_conditions_matter)
}
END_TEST

START_TEST(showalert_limit_and_conditions_matter_also_for_json_output)
{
int ret;

defaultcfg();
cfg.qmode = 10;
suppress_output();

ret = db_open_rw(1);
ck_assert_int_eq(ret, 1);

ret = db_addinterface("something");
ck_assert_int_eq(ret, 1);

ret = db_addtraffic("something", 100, 200);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_Total, 100);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_Total, 280);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_Total, 350);
ck_assert_int_eq(ret, 0);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_Total, 300);
ck_assert_int_eq(ret, 0);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_RX, 80);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_RX, 150);
ck_assert_int_eq(ret, 0);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_TX, 180);
ck_assert_int_eq(ret, 1);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_TX, 250);
ck_assert_int_eq(ret, 0);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_TX, 350);
ck_assert_int_eq(ret, 0);

ret = showalert("something", AO_Always_Output, AE_Exit_1_On_Limit, AT_Year, AC_TX, 200);
ck_assert_int_eq(ret, 0);

ret = db_close();
ck_assert_int_eq(ret, 1);
}
END_TEST

void add_database_tests(Suite *s)
{
TCase *tc_db = tcase_create("Database");
Expand Down Expand Up @@ -946,8 +1077,11 @@ void add_database_tests(Suite *s)
tcase_add_test(tc_db, importlegacydb_can_detect_when_database_read_fails);
tcase_add_test(tc_db, importlegacydb_can_import_legacy_database);
tcase_add_test(tc_db, showalert_shows_nothing_with_none_type);
tcase_add_test(tc_db, showalert_shows_nothing_in_json_with_none_type);
tcase_add_test(tc_db, showalert_can_alert_on_limit_and_show_things);
tcase_add_test(tc_db, showalert_can_alert_on_limit_and_show_things_in_json);
tcase_add_test(tc_db, showalert_limit_and_conditions_matter);
tcase_add_test(tc_db, showalert_limit_and_conditions_matter_also_for_json_output);
suite_add_tcase(s, tc_db);
}

Expand Down

0 comments on commit 919de4d

Please sign in to comment.