source: tests/fw_query.c @ 1cdba3

Revision 1cdba3, 1.9 KB checked in by Erik Ekman <yarrick@…>, 3 years ago (diff)

Added tests on forwarded query cache

  • Property mode set to 100644
Line 
1/*
2 * Copyright (c) 2006-2009 Erik Ekman <yarrick@kryo.se>
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17#include <check.h>
18
19#include "fw_query.h"
20#include "test.h"
21
22START_TEST(test_fw_query_simple)
23{
24        struct fw_query q;
25        struct fw_query *qp;
26
27        q.addrlen = 33;
28        q.id = 0x848A;
29
30        fw_query_init();
31       
32        /* Test empty cache */
33        fw_query_get(0x848A, &qp);
34        fail_unless(qp == NULL);
35
36        fw_query_put(&q);
37
38        /* Test cache with one entry */
39        fw_query_get(0x848A, &qp);
40        fail_unless(qp->addrlen == q.addrlen);
41        fail_unless(qp->id == q.id);
42}
43END_TEST
44
45START_TEST(test_fw_query_edge)
46{
47        struct fw_query q;
48        struct fw_query *qp;
49        int i;
50
51        fw_query_init();
52       
53        q.addrlen = 33;
54        q.id = 0x848A;
55        fw_query_put(&q);
56
57        for (i = 1; i < FW_QUERY_CACHE_SIZE; i++) {
58                q.addrlen++;
59                q.id++;
60                fw_query_put(&q);
61        }
62
63        /* The query should still be cached */
64        fw_query_get(0x848A, &qp);
65        fail_unless(qp->addrlen == 33);
66        fail_unless(qp->id == 0x848A);
67               
68        q.addrlen++;
69        q.id++;
70        fw_query_put(&q);
71
72        /* but now it is overwritten */
73        fw_query_get(0x848A, &qp);
74        fail_unless(qp == NULL);
75}
76END_TEST
77
78TCase *
79test_fw_query_create_tests()
80{
81        TCase *tc;
82
83        tc = tcase_create("Forwarded query");
84        tcase_add_test(tc, test_fw_query_simple);
85        tcase_add_test(tc, test_fw_query_edge);
86
87        return tc;
88}
Note: See TracBrowser for help on using the repository browser.