aboutsummaryrefslogtreecommitdiff
path: root/src/util/test_time.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/test_time.c')
-rw-r--r--src/util/test_time.c169
1 files changed, 84 insertions, 85 deletions
diff --git a/src/util/test_time.c b/src/util/test_time.c
index cd1175416..467336e0a 100644
--- a/src/util/test_time.c
+++ b/src/util/test_time.c
@@ -1,6 +1,6 @@
1/* 1/*
2 This file is part of GNUnet. 2 This file is part of GNUnet.
3 (C) 2001, 2002, 2003, 2004, 2006, 2009 Christian Grothoff (and other contributing authors) 3 (C) 2001-2013 Christian Grothoff (and other contributing authors)
4 4
5 GNUnet is free software; you can redistribute it and/or modify 5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published 6 it under the terms of the GNU General Public License as published
@@ -22,8 +22,7 @@
22 * @brief testcase for time.c 22 * @brief testcase for time.c
23 */ 23 */
24#include "platform.h" 24#include "platform.h"
25#include "gnunet_common.h" 25#include "gnunet_util_lib.h"
26#include "gnunet_time_lib.h"
27 26
28 27
29int 28int
@@ -46,186 +45,186 @@ main (int argc, char *argv[])
46 forever = GNUNET_TIME_UNIT_FOREVER_ABS; 45 forever = GNUNET_TIME_UNIT_FOREVER_ABS;
47 relForever = GNUNET_TIME_UNIT_FOREVER_REL; 46 relForever = GNUNET_TIME_UNIT_FOREVER_REL;
48 relUnit = GNUNET_TIME_UNIT_MILLISECONDS; 47 relUnit = GNUNET_TIME_UNIT_MILLISECONDS;
49 zero.abs_value = 0; 48 zero.abs_value_us = 0;
50 49
51 last = now = GNUNET_TIME_absolute_get (); 50 last = now = GNUNET_TIME_absolute_get ();
52 while (now.abs_value == last.abs_value) 51 while (now.abs_value_us == last.abs_value_us)
53 now = GNUNET_TIME_absolute_get (); 52 now = GNUNET_TIME_absolute_get ();
54 GNUNET_assert (now.abs_value > last.abs_value); 53 GNUNET_assert (now.abs_value_us > last.abs_value_us);
55 54
56 /* test overflow checking in multiply */ 55 /* test overflow checking in multiply */
57 rel = GNUNET_TIME_UNIT_SECONDS; 56 rel = GNUNET_TIME_UNIT_MILLISECONDS;
58 GNUNET_log_skip (1, GNUNET_NO); 57 GNUNET_log_skip (1, GNUNET_NO);
59 for (i = 0; i < 55; i++) 58 for (i = 0; i < 55; i++)
60 rel = GNUNET_TIME_relative_multiply (rel, 2); 59 rel = GNUNET_TIME_relative_multiply (rel, 2);
61 GNUNET_log_skip (0, GNUNET_NO); 60 GNUNET_log_skip (0, GNUNET_NO);
62 GNUNET_assert (rel.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value); 61 GNUNET_assert (rel.rel_value_us == GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us);
63 /*check zero */ 62 /*check zero */
64 rel.rel_value = (UINT64_MAX) - 1024; 63 rel.rel_value_us = (UINT64_MAX) - 1024;
65 GNUNET_assert (GNUNET_TIME_UNIT_ZERO.rel_value == 64 GNUNET_assert (GNUNET_TIME_UNIT_ZERO.rel_value_us ==
66 GNUNET_TIME_relative_multiply (rel, 0).rel_value); 65 GNUNET_TIME_relative_multiply (rel, 0).rel_value_us);
67 66
68 /* test infinity-check for relative to absolute */ 67 /* test infinity-check for relative to absolute */
69 GNUNET_log_skip (1, GNUNET_NO); 68 GNUNET_log_skip (1, GNUNET_NO);
70 last = GNUNET_TIME_relative_to_absolute (rel); 69 last = GNUNET_TIME_relative_to_absolute (rel);
71 GNUNET_assert (last.abs_value == GNUNET_TIME_UNIT_FOREVER_ABS.abs_value); 70 GNUNET_assert (last.abs_value_us == GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us);
72 GNUNET_log_skip (0, GNUNET_YES); 71 GNUNET_log_skip (0, GNUNET_YES);
73 72
74 /*check relative to absolute */ 73 /*check relative to absolute */
75 rel.rel_value = 0; 74 rel.rel_value_us = 0;
76 GNUNET_assert (GNUNET_TIME_absolute_get ().abs_value == 75 GNUNET_assert (GNUNET_TIME_absolute_get ().abs_value_us ==
77 GNUNET_TIME_relative_to_absolute (rel).abs_value); 76 GNUNET_TIME_relative_to_absolute (rel).abs_value_us);
78 /*check forever */ 77 /*check forever */
79 rel.rel_value = UINT64_MAX; 78 rel.rel_value_us = UINT64_MAX;
80 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_ABS.abs_value == 79 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us ==
81 GNUNET_TIME_relative_to_absolute (rel).abs_value); 80 GNUNET_TIME_relative_to_absolute (rel).abs_value_us);
82 /* check overflow for r2a */ 81 /* check overflow for r2a */
83 rel.rel_value = (UINT64_MAX) - 1024; 82 rel.rel_value_us = (UINT64_MAX) - 1024;
84 GNUNET_log_skip (1, GNUNET_NO); 83 GNUNET_log_skip (1, GNUNET_NO);
85 last = GNUNET_TIME_relative_to_absolute (rel); 84 last = GNUNET_TIME_relative_to_absolute (rel);
86 GNUNET_log_skip (0, GNUNET_NO); 85 GNUNET_log_skip (0, GNUNET_NO);
87 GNUNET_assert (last.abs_value == GNUNET_TIME_UNIT_FOREVER_ABS.abs_value); 86 GNUNET_assert (last.abs_value_us == GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us);
88 87
89 /* check overflow for relative add */ 88 /* check overflow for relative add */
90 GNUNET_log_skip (1, GNUNET_NO); 89 GNUNET_log_skip (1, GNUNET_NO);
91 rel = GNUNET_TIME_relative_add (rel, rel); 90 rel = GNUNET_TIME_relative_add (rel, rel);
92 GNUNET_log_skip (0, GNUNET_NO); 91 GNUNET_log_skip (0, GNUNET_NO);
93 GNUNET_assert (rel.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value); 92 GNUNET_assert (rel.rel_value_us == GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us);
94 93
95 GNUNET_log_skip (1, GNUNET_NO); 94 GNUNET_log_skip (1, GNUNET_NO);
96 rel = GNUNET_TIME_relative_add (relForever, relForever); 95 rel = GNUNET_TIME_relative_add (relForever, relForever);
97 GNUNET_log_skip (0, GNUNET_NO); 96 GNUNET_log_skip (0, GNUNET_NO);
98 GNUNET_assert (rel.rel_value == relForever.rel_value); 97 GNUNET_assert (rel.rel_value_us == relForever.rel_value_us);
99 98
100 GNUNET_log_skip (1, GNUNET_NO); 99 GNUNET_log_skip (1, GNUNET_NO);
101 rel = GNUNET_TIME_relative_add (relUnit, relUnit); 100 rel = GNUNET_TIME_relative_add (relUnit, relUnit);
102 GNUNET_assert (rel.rel_value == 2 * relUnit.rel_value); 101 GNUNET_assert (rel.rel_value_us == 2 * relUnit.rel_value_us);
103 102
104 /* check relation check in get_duration */ 103 /* check relation check in get_duration */
105 future.abs_value = now.abs_value + 1000000; 104 future.abs_value_us = now.abs_value_us + 1000000;
106 GNUNET_assert (GNUNET_TIME_absolute_get_difference (now, future).rel_value == 105 GNUNET_assert (GNUNET_TIME_absolute_get_difference (now, future).rel_value_us ==
107 1000000); 106 1000000);
108 GNUNET_assert (GNUNET_TIME_absolute_get_difference (future, now).rel_value == 107 GNUNET_assert (GNUNET_TIME_absolute_get_difference (future, now).rel_value_us ==
109 0); 108 0);
110 109
111 GNUNET_assert (GNUNET_TIME_absolute_get_difference (zero, forever).rel_value 110 GNUNET_assert (GNUNET_TIME_absolute_get_difference (zero, forever).rel_value_us
112 == forever.abs_value); 111 == forever.abs_value_us);
113 112
114 past.abs_value = now.abs_value - 1000000; 113 past.abs_value_us = now.abs_value_us - 1000000;
115 rel = GNUNET_TIME_absolute_get_duration (future); 114 rel = GNUNET_TIME_absolute_get_duration (future);
116 GNUNET_assert (rel.rel_value == 0); 115 GNUNET_assert (rel.rel_value_us == 0);
117 rel = GNUNET_TIME_absolute_get_duration (past); 116 rel = GNUNET_TIME_absolute_get_duration (past);
118 GNUNET_assert (rel.rel_value >= 1000000); 117 GNUNET_assert (rel.rel_value_us >= 1000000);
119 118
120 /* check get remaining */ 119 /* check get remaining */
121 rel = GNUNET_TIME_absolute_get_remaining (now); 120 rel = GNUNET_TIME_absolute_get_remaining (now);
122 GNUNET_assert (rel.rel_value == 0); 121 GNUNET_assert (rel.rel_value_us == 0);
123 rel = GNUNET_TIME_absolute_get_remaining (past); 122 rel = GNUNET_TIME_absolute_get_remaining (past);
124 GNUNET_assert (rel.rel_value == 0); 123 GNUNET_assert (rel.rel_value_us == 0);
125 rel = GNUNET_TIME_absolute_get_remaining (future); 124 rel = GNUNET_TIME_absolute_get_remaining (future);
126 GNUNET_assert (rel.rel_value > 0); 125 GNUNET_assert (rel.rel_value_us > 0);
127 GNUNET_assert (rel.rel_value <= 1000000); 126 GNUNET_assert (rel.rel_value_us <= 1000000);
128 forever = GNUNET_TIME_UNIT_FOREVER_ABS; 127 forever = GNUNET_TIME_UNIT_FOREVER_ABS;
129 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value == 128 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us ==
130 GNUNET_TIME_absolute_get_remaining (forever).rel_value); 129 GNUNET_TIME_absolute_get_remaining (forever).rel_value_us);
131 130
132 /* check endianess */ 131 /* check endianess */
133 reln = GNUNET_TIME_relative_hton (rel); 132 reln = GNUNET_TIME_relative_hton (rel);
134 GNUNET_assert (rel.rel_value == GNUNET_TIME_relative_ntoh (reln).rel_value); 133 GNUNET_assert (rel.rel_value_us == GNUNET_TIME_relative_ntoh (reln).rel_value_us);
135 nown = GNUNET_TIME_absolute_hton (now); 134 nown = GNUNET_TIME_absolute_hton (now);
136 GNUNET_assert (now.abs_value == GNUNET_TIME_absolute_ntoh (nown).abs_value); 135 GNUNET_assert (now.abs_value_us == GNUNET_TIME_absolute_ntoh (nown).abs_value_us);
137 136
138 /* check absolute addition */ 137 /* check absolute addition */
139 future = GNUNET_TIME_absolute_add (now, GNUNET_TIME_UNIT_SECONDS); 138 future = GNUNET_TIME_absolute_add (now, GNUNET_TIME_UNIT_SECONDS);
140 GNUNET_assert (future.abs_value == now.abs_value + 1000); 139 GNUNET_assert (future.abs_value_us == now.abs_value_us + 1000 * 1000LL);
141 140
142 future = GNUNET_TIME_absolute_add (forever, GNUNET_TIME_UNIT_ZERO); 141 future = GNUNET_TIME_absolute_add (forever, GNUNET_TIME_UNIT_ZERO);
143 GNUNET_assert (future.abs_value == forever.abs_value); 142 GNUNET_assert (future.abs_value_us == forever.abs_value_us);
144 143
145 rel.rel_value = (UINT64_MAX) - 1024; 144 rel.rel_value_us = (UINT64_MAX) - 1024;
146 now.abs_value = rel.rel_value; 145 now.abs_value_us = rel.rel_value_us;
147 future = GNUNET_TIME_absolute_add (now, rel); 146 future = GNUNET_TIME_absolute_add (now, rel);
148 GNUNET_assert (future.abs_value == forever.abs_value); 147 GNUNET_assert (future.abs_value_us == forever.abs_value_us);
149 148
150 /* check zero */ 149 /* check zero */
151 future = GNUNET_TIME_absolute_add (now, GNUNET_TIME_UNIT_ZERO); 150 future = GNUNET_TIME_absolute_add (now, GNUNET_TIME_UNIT_ZERO);
152 GNUNET_assert (future.abs_value == now.abs_value); 151 GNUNET_assert (future.abs_value_us == now.abs_value_us);
153 152
154 GNUNET_assert (forever.abs_value == 153 GNUNET_assert (forever.abs_value_us ==
155 GNUNET_TIME_absolute_subtract (forever, 154 GNUNET_TIME_absolute_subtract (forever,
156 GNUNET_TIME_UNIT_MINUTES).abs_value); 155 GNUNET_TIME_UNIT_MINUTES).abs_value_us);
157 /*check absolute subtract */ 156 /*check absolute subtract */
158 now.abs_value = 50000; 157 now.abs_value_us = 50000;
159 rel.rel_value = 100000; 158 rel.rel_value_us = 100000;
160 GNUNET_assert (GNUNET_TIME_UNIT_ZERO_ABS.abs_value == 159 GNUNET_assert (GNUNET_TIME_UNIT_ZERO_ABS.abs_value_us ==
161 (GNUNET_TIME_absolute_subtract (now, rel)).abs_value); 160 (GNUNET_TIME_absolute_subtract (now, rel)).abs_value_us);
162 rel.rel_value = 10000; 161 rel.rel_value_us = 10000;
163 GNUNET_assert (40000 == (GNUNET_TIME_absolute_subtract (now, rel)).abs_value); 162 GNUNET_assert (40000 == (GNUNET_TIME_absolute_subtract (now, rel)).abs_value_us);
164 163
165 /*check relative divide */ 164 /*check relative divide */
166 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value == 165 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us ==
167 (GNUNET_TIME_relative_divide (rel, 0)).rel_value); 166 (GNUNET_TIME_relative_divide (rel, 0)).rel_value_us);
168 167
169 rel = GNUNET_TIME_UNIT_FOREVER_REL; 168 rel = GNUNET_TIME_UNIT_FOREVER_REL;
170 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value == 169 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us ==
171 (GNUNET_TIME_relative_divide (rel, 2)).rel_value); 170 (GNUNET_TIME_relative_divide (rel, 2)).rel_value_us);
172 171
173 rel = GNUNET_TIME_relative_divide (relUnit, 2); 172 rel = GNUNET_TIME_relative_divide (relUnit, 2);
174 GNUNET_assert (rel.rel_value == relUnit.rel_value / 2); 173 GNUNET_assert (rel.rel_value_us == relUnit.rel_value_us / 2);
175 174
176 175
177 /* check Return absolute time of 0ms */ 176 /* check Return absolute time of 0ms */
178 zero = GNUNET_TIME_UNIT_ZERO_ABS; 177 zero = GNUNET_TIME_UNIT_ZERO_ABS;
179 178
180 /* check GNUNET_TIME_calculate_eta */ 179 /* check GNUNET_TIME_calculate_eta */
181 last.abs_value = GNUNET_TIME_absolute_get ().abs_value - 1024; 180 last.abs_value_us = GNUNET_TIME_absolute_get ().abs_value_us - 1024;
182 forever = GNUNET_TIME_UNIT_FOREVER_ABS; 181 forever = GNUNET_TIME_UNIT_FOREVER_ABS;
183 forever.abs_value = forever.abs_value - 1024; 182 forever.abs_value_us = forever.abs_value_us - 1024;
184 GNUNET_assert (GNUNET_TIME_UNIT_ZERO_ABS.abs_value == 183 GNUNET_assert (GNUNET_TIME_UNIT_ZERO_ABS.abs_value_us ==
185 GNUNET_TIME_calculate_eta (forever, 50000, 100000).rel_value); 184 GNUNET_TIME_calculate_eta (forever, 50000, 100000).rel_value_us);
186 /* check zero */ 185 /* check zero */
187 GNUNET_log_skip (1, GNUNET_NO); 186 GNUNET_log_skip (1, GNUNET_NO);
188 GNUNET_assert (GNUNET_TIME_UNIT_ZERO.rel_value == 187 GNUNET_assert (GNUNET_TIME_UNIT_ZERO.rel_value_us ==
189 (GNUNET_TIME_calculate_eta (last, 60000, 50000)).rel_value); 188 (GNUNET_TIME_calculate_eta (last, 60000, 50000)).rel_value_us);
190 GNUNET_log_skip (0, GNUNET_YES); 189 GNUNET_log_skip (0, GNUNET_YES);
191 /*check forever */ 190 /*check forever */
192 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value == 191 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us ==
193 (GNUNET_TIME_calculate_eta (last, 0, 50000)).rel_value); 192 (GNUNET_TIME_calculate_eta (last, 0, 50000)).rel_value_us);
194 193
195 /*check relative subtract */ 194 /*check relative subtract */
196 now = GNUNET_TIME_absolute_get (); 195 now = GNUNET_TIME_absolute_get ();
197 rel.rel_value = now.abs_value; 196 rel.rel_value_us = now.abs_value_us;
198 relForever.rel_value = rel.rel_value + 1024; 197 relForever.rel_value_us = rel.rel_value_us + 1024;
199 GNUNET_assert (1024 == 198 GNUNET_assert (1024 ==
200 GNUNET_TIME_relative_subtract (relForever, rel).rel_value); 199 GNUNET_TIME_relative_subtract (relForever, rel).rel_value_us);
201 /*check zero */ 200 /*check zero */
202 GNUNET_assert (GNUNET_TIME_UNIT_ZERO.rel_value == 201 GNUNET_assert (GNUNET_TIME_UNIT_ZERO.rel_value_us ==
203 GNUNET_TIME_relative_subtract (rel, relForever).rel_value); 202 GNUNET_TIME_relative_subtract (rel, relForever).rel_value_us);
204 /*check forever */ 203 /*check forever */
205 rel.rel_value = UINT64_MAX; 204 rel.rel_value_us = UINT64_MAX;
206 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value == 205 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us ==
207 GNUNET_TIME_relative_subtract (rel, relForever).rel_value); 206 GNUNET_TIME_relative_subtract (rel, relForever).rel_value_us);
208 207
209 /*check GNUNET_TIME_relative_min */ 208 /*check GNUNET_TIME_relative_min */
210 now = GNUNET_TIME_absolute_get (); 209 now = GNUNET_TIME_absolute_get ();
211 rel.rel_value = now.abs_value; 210 rel.rel_value_us = now.abs_value_us;
212 relForever.rel_value = rel.rel_value - 1024; 211 relForever.rel_value_us = rel.rel_value_us - 1024;
213 GNUNET_assert (relForever.rel_value == 212 GNUNET_assert (relForever.rel_value_us ==
214 GNUNET_TIME_relative_min (rel, relForever).rel_value); 213 GNUNET_TIME_relative_min (rel, relForever).rel_value_us);
215 214
216 /*check GNUNET_TIME_relative_max */ 215 /*check GNUNET_TIME_relative_max */
217 GNUNET_assert (rel.rel_value == 216 GNUNET_assert (rel.rel_value_us ==
218 GNUNET_TIME_relative_max (rel, relForever).rel_value); 217 GNUNET_TIME_relative_max (rel, relForever).rel_value_us);
219 218
220 /*check GNUNET_TIME_absolute_min */ 219 /*check GNUNET_TIME_absolute_min */
221 now = GNUNET_TIME_absolute_get (); 220 now = GNUNET_TIME_absolute_get ();
222 last.abs_value = now.abs_value - 1024; 221 last.abs_value_us = now.abs_value_us - 1024;
223 GNUNET_assert (last.abs_value == 222 GNUNET_assert (last.abs_value_us ==
224 GNUNET_TIME_absolute_min (now, last).abs_value); 223 GNUNET_TIME_absolute_min (now, last).abs_value_us);
225 224
226 /*check GNUNET_TIME_absolute_max */ 225 /*check GNUNET_TIME_absolute_max */
227 GNUNET_assert (now.abs_value == 226 GNUNET_assert (now.abs_value_us ==
228 GNUNET_TIME_absolute_max (now, last).abs_value); 227 GNUNET_TIME_absolute_max (now, last).abs_value_us);
229 228
230 return 0; 229 return 0;
231} 230}