fold in another changes item
[tor.git] / src / test / test_replay.c
blobde841ad5945fb67105d01dcadeb5d4f8fec70ea2
1 /* Copyright (c) 2012-2013, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
4 #define REPLAYCACHE_PRIVATE
6 #include "orconfig.h"
7 #include "or.h"
8 #include "replaycache.h"
9 #include "test.h"
11 static const char *test_buffer =
12 "Lorem ipsum dolor sit amet, consectetur adipisici elit, sed do eiusmod"
13 " tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
14 " veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
15 " commodo consequat. Duis aute irure dolor in reprehenderit in voluptate"
16 " velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint"
17 " occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
18 " mollit anim id est laborum.";
20 static void
21 test_replaycache_alloc(void)
23 replaycache_t *r = NULL;
25 r = replaycache_new(600, 300);
26 test_assert(r != NULL);
28 done:
29 if (r) replaycache_free(r);
31 return;
34 static void
35 test_replaycache_miss(void)
37 replaycache_t *r = NULL;
38 int result;
40 r = replaycache_new(600, 300);
41 test_assert(r != NULL);
43 result =
44 replaycache_add_and_test_internal(1200, r, test_buffer,
45 (int)strlen(test_buffer), NULL);
46 test_eq(result, 0);
48 done:
49 if (r) replaycache_free(r);
51 return;
54 static void
55 test_replaycache_hit(void)
57 replaycache_t *r = NULL;
58 int result;
60 r = replaycache_new(600, 300);
61 test_assert(r != NULL);
63 result =
64 replaycache_add_and_test_internal(1200, r, test_buffer,
65 (int)strlen(test_buffer), NULL);
66 test_eq(result, 0);
68 result =
69 replaycache_add_and_test_internal(1300, r, test_buffer,
70 (int)strlen(test_buffer), NULL);
71 test_eq(result, 1);
73 done:
74 if (r) replaycache_free(r);
76 return;
79 static void
80 test_replaycache_age(void)
82 replaycache_t *r = NULL;
83 int result;
85 r = replaycache_new(600, 300);
86 test_assert(r != NULL);
88 result =
89 replaycache_add_and_test_internal(1200, r, test_buffer,
90 (int)strlen(test_buffer), NULL);
91 test_eq(result, 0);
93 result =
94 replaycache_add_and_test_internal(1300, r, test_buffer,
95 (int)strlen(test_buffer), NULL);
96 test_eq(result, 1);
98 result =
99 replaycache_add_and_test_internal(3000, r, test_buffer,
100 (int)strlen(test_buffer), NULL);
101 test_eq(result, 0);
103 done:
104 if (r) replaycache_free(r);
106 return;
109 static void
110 test_replaycache_elapsed(void)
112 replaycache_t *r = NULL;
113 int result;
114 time_t elapsed;
116 r = replaycache_new(600, 300);
117 test_assert(r != NULL);
119 result =
120 replaycache_add_and_test_internal(1200, r, test_buffer,
121 (int)strlen(test_buffer), NULL);
122 test_eq(result, 0);
124 result =
125 replaycache_add_and_test_internal(1300, r, test_buffer,
126 (int)strlen(test_buffer), &elapsed);
127 test_eq(result, 1);
128 test_eq(elapsed, 100);
130 done:
131 if (r) replaycache_free(r);
133 return;
136 static void
137 test_replaycache_noexpire(void)
139 replaycache_t *r = NULL;
140 int result;
142 r = replaycache_new(0, 0);
143 test_assert(r != NULL);
145 result =
146 replaycache_add_and_test_internal(1200, r, test_buffer,
147 (int)strlen(test_buffer), NULL);
148 test_eq(result, 0);
150 result =
151 replaycache_add_and_test_internal(1300, r, test_buffer,
152 (int)strlen(test_buffer), NULL);
153 test_eq(result, 1);
155 result =
156 replaycache_add_and_test_internal(3000, r, test_buffer,
157 (int)strlen(test_buffer), NULL);
158 test_eq(result, 1);
160 done:
161 if (r) replaycache_free(r);
163 return;
166 #define REPLAYCACHE_LEGACY(name) \
167 { #name, legacy_test_helper, 0, &legacy_setup, test_replaycache_ ## name }
169 struct testcase_t replaycache_tests[] = {
170 REPLAYCACHE_LEGACY(alloc),
171 REPLAYCACHE_LEGACY(miss),
172 REPLAYCACHE_LEGACY(hit),
173 REPLAYCACHE_LEGACY(age),
174 REPLAYCACHE_LEGACY(elapsed),
175 REPLAYCACHE_LEGACY(noexpire),
176 END_OF_TESTCASES