Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: test/replay_driver.c

Issue 2344973002: Update libsrtp to version 2.0 (Closed)
Patch Set: Add '.' back to include_dirs Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/rdbx_driver.c ('k') | test/roc_driver.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * replay_driver.c 2 * replay_driver.c
3 * 3 *
4 * A driver for the replay_database implementation 4 * A driver for the replay_database implementation
5 * 5 *
6 * David A. McGrew 6 * David A. McGrew
7 * Cisco Systems, Inc. 7 * Cisco Systems, Inc.
8 */ 8 */
9 9
10 /* 10 /*
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 #include "rdb.h" 52 #include "rdb.h"
53 #include "ut_sim.h" 53 #include "ut_sim.h"
54 54
55 /* 55 /*
56 * num_trials defines the number of trials that are used in the 56 * num_trials defines the number of trials that are used in the
57 * validation functions below 57 * validation functions below
58 */ 58 */
59 59
60 unsigned num_trials = 1 << 16; 60 unsigned num_trials = 1 << 16;
61 61
62 err_status_t 62 srtp_err_status_t
63 test_rdb_db(void); 63 test_rdb_db(void);
64 64
65 double 65 double
66 rdb_check_adds_per_second(void); 66 rdb_check_adds_per_second(void);
67 67
68 int 68 int
69 main (void) { 69 main (void) {
70 err_status_t err; 70 srtp_err_status_t err;
71 71
72 printf("testing anti-replay database (rdb_t)...\n"); 72 printf("testing anti-replay database (srtp_rdb_t)...\n");
73 err = test_rdb_db(); 73 err = test_rdb_db();
74 if (err) { 74 if (err) {
75 printf("failed\n"); 75 printf("failed\n");
76 exit(1); 76 exit(1);
77 } 77 }
78 printf("done\n"); 78 printf("done\n");
79 79
80 printf("rdb_check/rdb_adds per second: %e\n", 80 printf("rdb_check/rdb_adds per second: %e\n",
81 rdb_check_adds_per_second()); 81 rdb_check_adds_per_second());
82 82
83 return 0; 83 return 0;
84 } 84 }
85 85
86 86
87 void 87 void
88 print_rdb(rdb_t *rdb) { 88 print_rdb(srtp_rdb_t *rdb) {
89 printf("rdb: {%u, %s}\n", rdb->window_start, v128_bit_string(&rdb->bitmask)); 89 printf("rdb: {%u, %s}\n", rdb->window_start, v128_bit_string(&rdb->bitmask));
90 } 90 }
91 91
92 err_status_t 92 srtp_err_status_t
93 rdb_check_add(rdb_t *rdb, uint32_t idx) { 93 rdb_check_add(srtp_rdb_t *rdb, uint32_t idx) {
94 94
95 if (rdb_check(rdb, idx) != err_status_ok) { 95 if (srtp_rdb_check(rdb, idx) != srtp_err_status_ok) {
96 printf("rdb_check failed at index %u\n", idx); 96 printf("rdb_check failed at index %u\n", idx);
97 return err_status_fail; 97 return srtp_err_status_fail;
98 } 98 }
99 if (rdb_add_index(rdb, idx) != err_status_ok) { 99 if (srtp_rdb_add_index(rdb, idx) != srtp_err_status_ok) {
100 printf("rdb_add_index failed at index %u\n", idx); 100 printf("rdb_add_index failed at index %u\n", idx);
101 return err_status_fail; 101 return srtp_err_status_fail;
102 } 102 }
103 103
104 return err_status_ok; 104 return srtp_err_status_ok;
105 } 105 }
106 106
107 err_status_t 107 srtp_err_status_t
108 rdb_check_expect_failure(rdb_t *rdb, uint32_t idx) { 108 rdb_check_expect_failure(srtp_rdb_t *rdb, uint32_t idx) {
109 err_status_t err; 109 srtp_err_status_t err;
110 110
111 err = rdb_check(rdb, idx); 111 err = srtp_rdb_check(rdb, idx);
112 if ((err != err_status_replay_old) && (err != err_status_replay_fail)) { 112 if ((err != srtp_err_status_replay_old) && (err != srtp_err_status_replay_fail )) {
113 printf("rdb_check failed at index %u (false positive)\n", idx); 113 printf("rdb_check failed at index %u (false positive)\n", idx);
114 return err_status_fail; 114 return srtp_err_status_fail;
115 } 115 }
116 116
117 return err_status_ok; 117 return srtp_err_status_ok;
118 } 118 }
119 119
120 err_status_t 120 srtp_err_status_t
121 rdb_check_add_unordered(rdb_t *rdb, uint32_t idx) { 121 rdb_check_add_unordered(srtp_rdb_t *rdb, uint32_t idx) {
122 err_status_t rstat; 122 srtp_err_status_t rstat;
123 123
124 /* printf("index: %u\n", idx); */ 124 /* printf("index: %u\n", idx); */
125 rstat = rdb_check(rdb, idx); 125 rstat = srtp_rdb_check(rdb, idx);
126 if ((rstat != err_status_ok) && (rstat != err_status_replay_old)) { 126 if ((rstat != srtp_err_status_ok) && (rstat != srtp_err_status_replay_old)) {
127 printf("rdb_check_add_unordered failed at index %u\n", idx); 127 printf("rdb_check_add_unordered failed at index %u\n", idx);
128 return rstat; 128 return rstat;
129 } 129 }
130 if (rstat == err_status_replay_old) { 130 if (rstat == srtp_err_status_replay_old) {
131 » return err_status_ok; 131 » return srtp_err_status_ok;
132 } 132 }
133 if (rdb_add_index(rdb, idx) != err_status_ok) { 133 if (srtp_rdb_add_index(rdb, idx) != srtp_err_status_ok) {
134 printf("rdb_add_index failed at index %u\n", idx); 134 printf("rdb_add_index failed at index %u\n", idx);
135 return err_status_fail; 135 return srtp_err_status_fail;
136 } 136 }
137 137
138 return err_status_ok; 138 return srtp_err_status_ok;
139 } 139 }
140 140
141 err_status_t 141 srtp_err_status_t
142 test_rdb_db() { 142 test_rdb_db() {
143 rdb_t rdb; 143 srtp_rdb_t rdb;
144 uint32_t idx, ircvd; 144 uint32_t idx, ircvd;
145 ut_connection utc; 145 ut_connection utc;
146 err_status_t err; 146 srtp_err_status_t err;
147 147
148 if (rdb_init(&rdb) != err_status_ok) { 148 if (srtp_rdb_init(&rdb) != srtp_err_status_ok) {
149 printf("rdb_init failed\n"); 149 printf("rdb_init failed\n");
150 return err_status_init_fail; 150 return srtp_err_status_init_fail;
151 } 151 }
152 152
153 /* test sequential insertion */ 153 /* test sequential insertion */
154 for (idx=0; idx < num_trials; idx++) { 154 for (idx=0; idx < num_trials; idx++) {
155 err = rdb_check_add(&rdb, idx); 155 err = rdb_check_add(&rdb, idx);
156 if (err) 156 if (err)
157 return err; 157 return err;
158 } 158 }
159 159
160 /* test for false positives */ 160 /* test for false positives */
161 for (idx=0; idx < num_trials; idx++) { 161 for (idx=0; idx < num_trials; idx++) {
162 err = rdb_check_expect_failure(&rdb, idx); 162 err = rdb_check_expect_failure(&rdb, idx);
163 if (err) 163 if (err)
164 return err; 164 return err;
165 } 165 }
166 166
167 /* re-initialize */ 167 /* re-initialize */
168 if (rdb_init(&rdb) != err_status_ok) { 168 if (srtp_rdb_init(&rdb) != srtp_err_status_ok) {
169 printf("rdb_init failed\n"); 169 printf("rdb_init failed\n");
170 return err_status_fail; 170 return srtp_err_status_fail;
171 } 171 }
172 172
173 /* test non-sequential insertion */ 173 /* test non-sequential insertion */
174 ut_init(&utc); 174 ut_init(&utc);
175 175
176 for (idx=0; idx < num_trials; idx++) { 176 for (idx=0; idx < num_trials; idx++) {
177 ircvd = ut_next_index(&utc); 177 ircvd = ut_next_index(&utc);
178 err = rdb_check_add_unordered(&rdb, ircvd); 178 err = rdb_check_add_unordered(&rdb, ircvd);
179 if (err) 179 if (err)
180 return err; 180 return err;
181 err = rdb_check_expect_failure(&rdb, ircvd); 181 err = rdb_check_expect_failure(&rdb, ircvd);
182 if (err) 182 if (err)
183 return err; 183 return err;
184 } 184 }
185 185
186 /* re-initialize */ 186 /* re-initialize */
187 if (rdb_init(&rdb) != err_status_ok) { 187 if (srtp_rdb_init(&rdb) != srtp_err_status_ok) {
188 printf("rdb_init failed\n"); 188 printf("rdb_init failed\n");
189 return err_status_fail; 189 return srtp_err_status_fail;
190 } 190 }
191 191
192 /* test insertion with large gaps */ 192 /* test insertion with large gaps */
193 for (idx=0, ircvd=0; idx < num_trials; idx++, ircvd += (1 << (rand() % 10))) { 193 for (idx=0, ircvd=0; idx < num_trials; idx++, ircvd += (1 << (rand() % 10))) {
194 err = rdb_check_add(&rdb, ircvd); 194 err = rdb_check_add(&rdb, ircvd);
195 if (err) 195 if (err)
196 return err; 196 return err;
197 err = rdb_check_expect_failure(&rdb, ircvd); 197 err = rdb_check_expect_failure(&rdb, ircvd);
198 if (err) 198 if (err)
199 return err; 199 return err;
200 } 200 }
201 201
202 /* re-initialize */ 202 /* re-initialize */
203 if (rdb_init(&rdb) != err_status_ok) { 203 if (srtp_rdb_init(&rdb) != srtp_err_status_ok) {
204 printf("rdb_init failed\n"); 204 printf("rdb_init failed\n");
205 return err_status_fail; 205 return srtp_err_status_fail;
206 } 206 }
207 207
208 /* test loss of first 513 packets */ 208 /* test loss of first 513 packets */
209 for (idx=0; idx < num_trials; idx++) { 209 for (idx=0; idx < num_trials; idx++) {
210 err = rdb_check_add(&rdb, idx + 513); 210 err = rdb_check_add(&rdb, idx + 513);
211 if (err) 211 if (err)
212 return err; 212 return err;
213 } 213 }
214 214
215 /* test for false positives */ 215 /* test for false positives */
216 for (idx=0; idx < num_trials + 513; idx++) { 216 for (idx=0; idx < num_trials + 513; idx++) {
217 err = rdb_check_expect_failure(&rdb, idx); 217 err = rdb_check_expect_failure(&rdb, idx);
218 if (err) 218 if (err)
219 return err; 219 return err;
220 } 220 }
221 221
222 222
223 return err_status_ok; 223 return srtp_err_status_ok;
224 } 224 }
225 225
226 #include <time.h> /* for clock() */ 226 #include <time.h> /* for clock() */
227 #include <stdlib.h> /* for random() */ 227 #include <stdlib.h> /* for random() */
228 228
229 #define REPLAY_NUM_TRIALS 10000000 229 #define REPLAY_NUM_TRIALS 10000000
230 230
231 double 231 double
232 rdb_check_adds_per_second(void) { 232 rdb_check_adds_per_second(void) {
233 uint32_t i; 233 uint32_t i;
234 rdb_t rdb; 234 srtp_rdb_t rdb;
235 clock_t timer; 235 clock_t timer;
236 int failures = 0; /* count number of failures */ 236 int failures = 0; /* count number of failures */
237 237
238 if (rdb_init(&rdb) != err_status_ok) { 238 if (srtp_rdb_init(&rdb) != srtp_err_status_ok) {
239 printf("rdb_init failed\n"); 239 printf("rdb_init failed\n");
240 exit(1); 240 exit(1);
241 } 241 }
242 242
243 timer = clock(); 243 timer = clock();
244 for(i=0; i < REPLAY_NUM_TRIALS; i+=3) { 244 for(i=0; i < REPLAY_NUM_TRIALS; i+=3) {
245 if (rdb_check(&rdb, i+2) != err_status_ok) 245 if (srtp_rdb_check(&rdb, i+2) != srtp_err_status_ok)
246 ++failures; 246 ++failures;
247 if (rdb_add_index(&rdb, i+2) != err_status_ok) 247 if (srtp_rdb_add_index(&rdb, i+2) != srtp_err_status_ok)
248 ++failures; 248 ++failures;
249 if (rdb_check(&rdb, i+1) != err_status_ok) 249 if (srtp_rdb_check(&rdb, i+1) != srtp_err_status_ok)
250 ++failures; 250 ++failures;
251 if (rdb_add_index(&rdb, i+1) != err_status_ok) 251 if (srtp_rdb_add_index(&rdb, i+1) != srtp_err_status_ok)
252 ++failures; 252 ++failures;
253 if (rdb_check(&rdb, i) != err_status_ok) 253 if (srtp_rdb_check(&rdb, i) != srtp_err_status_ok)
254 ++failures; 254 ++failures;
255 if (rdb_add_index(&rdb, i) != err_status_ok) 255 if (srtp_rdb_add_index(&rdb, i) != srtp_err_status_ok)
256 ++failures; 256 ++failures;
257 } 257 }
258 timer = clock() - timer; 258 timer = clock() - timer;
259 259
260 return (double) CLOCKS_PER_SEC * REPLAY_NUM_TRIALS / timer; 260 return (double) CLOCKS_PER_SEC * REPLAY_NUM_TRIALS / timer;
261 } 261 }
OLDNEW
« no previous file with comments | « test/rdbx_driver.c ('k') | test/roc_driver.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698