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