Home | History | Annotate | Line # | Download | only in tests
kodDatabase.c revision 1.1.1.2
      1 /*	$NetBSD: kodDatabase.c,v 1.1.1.2 2015/07/10 13:11:13 christos Exp $	*/
      2 
      3 #include "config.h"
      4 
      5 #include "ntp_types.h"
      6 #include "sntptest.h"
      7 #include "ntp_stdlib.h"
      8 #include "sntp-opts.h"
      9 
     10 #include "kod_management.h"
     11 
     12 #include "unity.h"
     13 
     14 void setUp(void)
     15 {
     16 	kod_init_kod_db("/dev/null", TRUE);
     17 }
     18 
     19 void tearDown(void)
     20 {
     21 }
     22 
     23 
     24 void test_SingleEntryHandling() {
     25 	char HOST[] = "192.0.2.5";
     26 	char REASON[] = "DENY";
     27 
     28 	add_entry(HOST, REASON);
     29 
     30 	struct kod_entry* result;
     31 
     32 	TEST_ASSERT_EQUAL(1, search_entry(HOST, &result));
     33 	TEST_ASSERT_EQUAL_STRING(HOST, result->hostname);
     34 	TEST_ASSERT_EQUAL_STRING(REASON, result->type);
     35 }
     36 
     37 void test_MultipleEntryHandling() {
     38 	char HOST1[] = "192.0.2.3";
     39 	char REASON1[] = "DENY";
     40 
     41 	char HOST2[] = "192.0.5.5";
     42 	char REASON2[] = "RATE";
     43 
     44 	char HOST3[] = "192.0.10.1";
     45 	char REASON3[] = "DENY";
     46 
     47 	add_entry(HOST1, REASON1);
     48 	add_entry(HOST2, REASON2);
     49 	add_entry(HOST3, REASON3);
     50 
     51 	struct kod_entry* result;
     52 
     53 	TEST_ASSERT_EQUAL(1, search_entry(HOST1, &result));
     54 	TEST_ASSERT_EQUAL_STRING(HOST1, result->hostname);
     55 	TEST_ASSERT_EQUAL_STRING(REASON1, result->type);
     56 
     57 	TEST_ASSERT_EQUAL(1, search_entry(HOST2, &result));
     58 	TEST_ASSERT_EQUAL_STRING(HOST2, result->hostname);
     59 	TEST_ASSERT_EQUAL_STRING(REASON2, result->type);
     60 
     61 	TEST_ASSERT_EQUAL(1, search_entry(HOST3, &result));
     62 	TEST_ASSERT_EQUAL_STRING(HOST3, result->hostname);
     63 	TEST_ASSERT_EQUAL_STRING(REASON3, result->type);
     64 
     65 	free(result);
     66 }
     67 
     68 void test_NoMatchInSearch() {
     69 	char HOST_ADD[] = "192.0.2.6";
     70 	char HOST_NOTADD[] = "192.0.6.1";
     71 	char REASON[] = "DENY";
     72 
     73 	add_entry(HOST_ADD, REASON);
     74 
     75 	struct kod_entry* result;
     76 
     77 	TEST_ASSERT_EQUAL(0, search_entry(HOST_NOTADD, &result));
     78 	TEST_ASSERT_TRUE(result == NULL);
     79 }
     80 
     81 void test_AddDuplicate() {
     82 	char HOST[] = "192.0.2.3";
     83 	char REASON1[] = "RATE";
     84 	char REASON2[] = "DENY";
     85 
     86 	add_entry(HOST, REASON1);
     87 	struct kod_entry* result1;
     88 	TEST_ASSERT_EQUAL(1, search_entry(HOST, &result1));
     89 
     90 	/*
     91 	 * Sleeps for two seconds since we want to ensure that
     92 	 * the timestamp is updated to a new value.
     93 	 */
     94 	sleep(2);
     95 
     96 	add_entry(HOST, REASON2);
     97 	struct kod_entry* result2;
     98 	TEST_ASSERT_EQUAL(1, search_entry(HOST, &result2));
     99 
    100 	TEST_ASSERT_FALSE(result1->timestamp == result2->timestamp);
    101 
    102 	free(result1);
    103 	free(result2);
    104 }
    105 
    106 void test_DeleteEntry() {
    107 	char HOST1[] = "192.0.2.1";
    108 	char HOST2[] = "192.0.2.2";
    109 	char HOST3[] = "192.0.2.3";
    110 	char REASON[] = "DENY";
    111 
    112 	add_entry(HOST1, REASON);
    113 	add_entry(HOST2, REASON);
    114 	add_entry(HOST3, REASON);
    115 
    116 	struct kod_entry* result;
    117 
    118 	TEST_ASSERT_EQUAL(1, search_entry(HOST2, &result));
    119 	free(result);
    120 
    121 	delete_entry(HOST2, REASON);
    122 
    123 	TEST_ASSERT_EQUAL(0, search_entry(HOST2, &result));
    124 
    125 	// Ensure that the other entry is still there.
    126 	TEST_ASSERT_EQUAL(1, search_entry(HOST1, &result));
    127 	free(result);
    128 }
    129