summaryrefslogtreecommitdiff
path: root/src/namestore/test_namestore_api_lookup_nick.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/namestore/test_namestore_api_lookup_nick.c')
-rw-r--r--src/namestore/test_namestore_api_lookup_nick.c367
1 files changed, 183 insertions, 184 deletions
diff --git a/src/namestore/test_namestore_api_lookup_nick.c b/src/namestore/test_namestore_api_lookup_nick.c
index 392a2521d..130f9bc1e 100644
--- a/src/namestore/test_namestore_api_lookup_nick.c
+++ b/src/namestore/test_namestore_api_lookup_nick.c
@@ -11,12 +11,12 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
18 SPDX-License-Identifier: AGPL3.0-or-later 18 SPDX-License-Identifier: AGPL3.0-or-later
19*/ 19 */
20/** 20/**
21 * @file namestore/test_namestore_api_lookup_nick.c 21 * @file namestore/test_namestore_api_lookup_nick.c
22 * @brief testcase for namestore_api.c: NICK records 22 * @brief testcase for namestore_api.c: NICK records
@@ -34,7 +34,7 @@
34 34
35#define TEST_RECORD_DATA 'a' 35#define TEST_RECORD_DATA 'a'
36 36
37#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10) 37#define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 10)
38 38
39static struct GNUNET_NAMESTORE_Handle *nsh; 39static struct GNUNET_NAMESTORE_Handle *nsh;
40 40
@@ -55,20 +55,20 @@ static const char * name = "d";
55 55
56 56
57static void 57static void
58cleanup () 58cleanup()
59{ 59{
60 GNUNET_free_non_null ((void *)rd_orig.data); 60 GNUNET_free_non_null((void *)rd_orig.data);
61 if (NULL != nsh) 61 if (NULL != nsh)
62 { 62 {
63 GNUNET_NAMESTORE_disconnect (nsh); 63 GNUNET_NAMESTORE_disconnect(nsh);
64 nsh = NULL; 64 nsh = NULL;
65 } 65 }
66 if (NULL != privkey) 66 if (NULL != privkey)
67 { 67 {
68 GNUNET_free (privkey); 68 GNUNET_free(privkey);
69 privkey = NULL; 69 privkey = NULL;
70 } 70 }
71 GNUNET_SCHEDULER_shutdown (); 71 GNUNET_SCHEDULER_shutdown();
72} 72}
73 73
74 74
@@ -79,32 +79,32 @@ cleanup ()
79 * @param tc scheduler context 79 * @param tc scheduler context
80 */ 80 */
81static void 81static void
82endbadly (void *cls) 82endbadly(void *cls)
83{ 83{
84 if (NULL != nsqe) 84 if (NULL != nsqe)
85 { 85 {
86 GNUNET_NAMESTORE_cancel (nsqe); 86 GNUNET_NAMESTORE_cancel(nsqe);
87 nsqe = NULL; 87 nsqe = NULL;
88 } 88 }
89 cleanup (); 89 cleanup();
90 res = 1; 90 res = 1;
91} 91}
92 92
93 93
94static void 94static void
95end (void *cls) 95end(void *cls)
96{ 96{
97 cleanup (); 97 cleanup();
98 res = 0; 98 res = 0;
99} 99}
100 100
101 101
102static void 102static void
103lookup_it (void *cls, 103lookup_it(void *cls,
104 const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone, 104 const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
105 const char *label, 105 const char *label,
106 unsigned int rd_count, 106 unsigned int rd_count,
107 const struct GNUNET_GNSRECORD_Data *rd) 107 const struct GNUNET_GNSRECORD_Data *rd)
108{ 108{
109 nsqe = NULL; 109 nsqe = NULL;
110 int c; 110 int c;
@@ -112,222 +112,221 @@ lookup_it (void *cls,
112 int found_nick = GNUNET_NO; 112 int found_nick = GNUNET_NO;
113 113
114 if (0 != GNUNET_memcmp(privkey, zone)) 114 if (0 != GNUNET_memcmp(privkey, zone))
115 { 115 {
116 GNUNET_break(0); 116 GNUNET_break(0);
117 GNUNET_SCHEDULER_cancel (endbadly_task); 117 GNUNET_SCHEDULER_cancel(endbadly_task);
118 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL ); 118 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
119 return; 119 return;
120 } 120 }
121 121
122 if (NULL == label) 122 if (NULL == label)
123 { 123 {
124 GNUNET_break(0); 124 GNUNET_break(0);
125 GNUNET_SCHEDULER_cancel (endbadly_task); 125 GNUNET_SCHEDULER_cancel(endbadly_task);
126 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL ); 126 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
127 return; 127 return;
128 } 128 }
129
130 if (0 != strcmp (label, name))
131 {
132 GNUNET_break(0);
133 GNUNET_SCHEDULER_cancel (endbadly_task);
134 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL );
135 return;
136 }
137
138 if (2 != rd_count)
139 {
140 GNUNET_break(0);
141 GNUNET_SCHEDULER_cancel (endbadly_task);
142 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL );
143 return;
144 }
145 129
146 for (c = 0; c < rd_count; c++) 130 if (0 != strcmp(label, name))
147 {
148 if (GNUNET_GNSRECORD_TYPE_NICK == rd[c].record_type)
149 { 131 {
150 if (rd[c].data_size != strlen(TEST_NICK)+1) 132 GNUNET_break(0);
151 { 133 GNUNET_SCHEDULER_cancel(endbadly_task);
152 GNUNET_break(0); 134 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
153 GNUNET_SCHEDULER_cancel (endbadly_task); 135 return;
154 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL );
155 return;
156 }
157 if (0 != (rd[c].flags & GNUNET_GNSRECORD_RF_PRIVATE))
158 {
159 GNUNET_break(0);
160 GNUNET_SCHEDULER_cancel (endbadly_task);
161 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL );
162 return;
163 }
164 if (0 != strcmp(rd[c].data, TEST_NICK))
165 {
166 GNUNET_SCHEDULER_cancel (endbadly_task);
167 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL );
168 return;
169 }
170 found_nick = GNUNET_YES;
171 } 136 }
172 else 137
138 if (2 != rd_count)
173 { 139 {
174 if (rd[c].record_type != TEST_RECORD_TYPE) 140 GNUNET_break(0);
175 { 141 GNUNET_SCHEDULER_cancel(endbadly_task);
176 GNUNET_break(0); 142 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
177 GNUNET_SCHEDULER_cancel (endbadly_task); 143 return;
178 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL );
179 return;
180 }
181 if (rd[c].data_size != TEST_RECORD_DATALEN)
182 {
183 GNUNET_break(0);
184 GNUNET_SCHEDULER_cancel (endbadly_task);
185 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL );
186 return;
187 }
188 if (0 != memcmp (rd[c].data, rd_orig.data, TEST_RECORD_DATALEN))
189 {
190 GNUNET_break(0);
191 GNUNET_SCHEDULER_cancel (endbadly_task);
192 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL );
193 return;
194 }
195 if (rd[c].flags != rd->flags)
196 {
197 GNUNET_break(0);
198 GNUNET_SCHEDULER_cancel (endbadly_task);
199 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL );
200 return;
201 }
202 found_record = GNUNET_YES;
203 } 144 }
204 145
205 } 146 for (c = 0; c < rd_count; c++)
147 {
148 if (GNUNET_GNSRECORD_TYPE_NICK == rd[c].record_type)
149 {
150 if (rd[c].data_size != strlen(TEST_NICK) + 1)
151 {
152 GNUNET_break(0);
153 GNUNET_SCHEDULER_cancel(endbadly_task);
154 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
155 return;
156 }
157 if (0 != (rd[c].flags & GNUNET_GNSRECORD_RF_PRIVATE))
158 {
159 GNUNET_break(0);
160 GNUNET_SCHEDULER_cancel(endbadly_task);
161 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
162 return;
163 }
164 if (0 != strcmp(rd[c].data, TEST_NICK))
165 {
166 GNUNET_SCHEDULER_cancel(endbadly_task);
167 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
168 return;
169 }
170 found_nick = GNUNET_YES;
171 }
172 else
173 {
174 if (rd[c].record_type != TEST_RECORD_TYPE)
175 {
176 GNUNET_break(0);
177 GNUNET_SCHEDULER_cancel(endbadly_task);
178 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
179 return;
180 }
181 if (rd[c].data_size != TEST_RECORD_DATALEN)
182 {
183 GNUNET_break(0);
184 GNUNET_SCHEDULER_cancel(endbadly_task);
185 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
186 return;
187 }
188 if (0 != memcmp(rd[c].data, rd_orig.data, TEST_RECORD_DATALEN))
189 {
190 GNUNET_break(0);
191 GNUNET_SCHEDULER_cancel(endbadly_task);
192 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
193 return;
194 }
195 if (rd[c].flags != rd->flags)
196 {
197 GNUNET_break(0);
198 GNUNET_SCHEDULER_cancel(endbadly_task);
199 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
200 return;
201 }
202 found_record = GNUNET_YES;
203 }
204 }
206 205
207 /* Done */ 206 /* Done */
208 if ((GNUNET_YES == found_nick) && (GNUNET_YES == found_record)) 207 if ((GNUNET_YES == found_nick) && (GNUNET_YES == found_record))
209 { 208 {
210 GNUNET_SCHEDULER_cancel (endbadly_task); 209 GNUNET_SCHEDULER_cancel(endbadly_task);
211 endbadly_task = NULL; 210 endbadly_task = NULL;
212 GNUNET_SCHEDULER_add_now (&end, NULL ); 211 GNUNET_SCHEDULER_add_now(&end, NULL);
213 } 212 }
214 else 213 else
215 { 214 {
216 GNUNET_break (0); 215 GNUNET_break(0);
217 GNUNET_SCHEDULER_cancel (endbadly_task); 216 GNUNET_SCHEDULER_cancel(endbadly_task);
218 endbadly_task = NULL; 217 endbadly_task = NULL;
219 GNUNET_SCHEDULER_add_now (&endbadly, NULL ); 218 GNUNET_SCHEDULER_add_now(&endbadly, NULL);
220 } 219 }
221} 220}
222 221
223 222
224static void 223static void
225fail_cb (void *cls) 224fail_cb(void *cls)
226{ 225{
227 GNUNET_assert (0); 226 GNUNET_assert(0);
228} 227}
229 228
230 229
231static void 230static void
232put_cont (void *cls, int32_t success, const char *emsg) 231put_cont(void *cls, int32_t success, const char *emsg)
233{ 232{
234 const char *name = cls; 233 const char *name = cls;
235 234
236 nsqe = NULL; 235 nsqe = NULL;
237 GNUNET_assert (NULL != cls); 236 GNUNET_assert(NULL != cls);
238 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 237 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
239 "Name store added record for `%s': %s\n", 238 "Name store added record for `%s': %s\n",
240 name, 239 name,
241 (success == GNUNET_OK) ? "SUCCESS" : "FAIL"); 240 (success == GNUNET_OK) ? "SUCCESS" : "FAIL");
242 241
243 if (GNUNET_OK != success) 242 if (GNUNET_OK != success)
244 { 243 {
245 GNUNET_SCHEDULER_cancel (endbadly_task); 244 GNUNET_SCHEDULER_cancel(endbadly_task);
246 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL); 245 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL);
247 return; 246 return;
248 } 247 }
249 /* Lookup */ 248 /* Lookup */
250 nsqe = GNUNET_NAMESTORE_records_lookup (nsh, 249 nsqe = GNUNET_NAMESTORE_records_lookup(nsh,
251 privkey, 250 privkey,
252 name, 251 name,
253 &fail_cb, 252 &fail_cb,
254 NULL, 253 NULL,
255 &lookup_it, 254 &lookup_it,
256 NULL); 255 NULL);
257} 256}
258 257
259 258
260static void 259static void
261nick_cont (void *cls, int32_t success, const char *emsg) 260nick_cont(void *cls, int32_t success, const char *emsg)
262{ 261{
263 const char *name = cls; 262 const char *name = cls;
264 263
265 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 264 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
266 "Nick added : %s\n", 265 "Nick added : %s\n",
267 (success == GNUNET_OK) ? "SUCCESS" : "FAIL"); 266 (success == GNUNET_OK) ? "SUCCESS" : "FAIL");
268 267
269 rd_orig.expiration_time = GNUNET_TIME_absolute_get().abs_value_us; 268 rd_orig.expiration_time = GNUNET_TIME_absolute_get().abs_value_us;
270 rd_orig.record_type = TEST_RECORD_TYPE; 269 rd_orig.record_type = TEST_RECORD_TYPE;
271 rd_orig.data_size = TEST_RECORD_DATALEN; 270 rd_orig.data_size = TEST_RECORD_DATALEN;
272 rd_orig.data = GNUNET_malloc (TEST_RECORD_DATALEN); 271 rd_orig.data = GNUNET_malloc(TEST_RECORD_DATALEN);
273 rd_orig.flags = 0; 272 rd_orig.flags = 0;
274 memset ((char *) rd_orig.data, 'a', TEST_RECORD_DATALEN); 273 memset((char *)rd_orig.data, 'a', TEST_RECORD_DATALEN);
275 274
276 nsqe = GNUNET_NAMESTORE_records_store (nsh, privkey, name, 275 nsqe = GNUNET_NAMESTORE_records_store(nsh, privkey, name,
277 1, &rd_orig, &put_cont, (void *) name); 276 1, &rd_orig, &put_cont, (void *)name);
278} 277}
279 278
280 279
281static void 280static void
282run (void *cls, 281run(void *cls,
283 const struct GNUNET_CONFIGURATION_Handle *cfg, 282 const struct GNUNET_CONFIGURATION_Handle *cfg,
284 struct GNUNET_TESTING_Peer *peer) 283 struct GNUNET_TESTING_Peer *peer)
285{ 284{
286 endbadly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, 285 endbadly_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT,
287 &endbadly, 286 &endbadly,
288 NULL); 287 NULL);
289 privkey = GNUNET_CRYPTO_ecdsa_key_create (); 288 privkey = GNUNET_CRYPTO_ecdsa_key_create();
290 GNUNET_assert (privkey != NULL); 289 GNUNET_assert(privkey != NULL);
291 GNUNET_CRYPTO_ecdsa_key_get_public (privkey, 290 GNUNET_CRYPTO_ecdsa_key_get_public(privkey,
292 &pubkey); 291 &pubkey);
293 292
294 nsh = GNUNET_NAMESTORE_connect (cfg); 293 nsh = GNUNET_NAMESTORE_connect(cfg);
295 GNUNET_break (NULL != nsh); 294 GNUNET_break(NULL != nsh);
296 295
297 nsqe = GNUNET_NAMESTORE_set_nick (nsh, 296 nsqe = GNUNET_NAMESTORE_set_nick(nsh,
298 privkey, 297 privkey,
299 TEST_NICK, 298 TEST_NICK,
300 &nick_cont, 299 &nick_cont,
301 (void *) name); 300 (void *)name);
302 if (NULL == nsqe) 301 if (NULL == nsqe)
303 { 302 {
304 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 303 GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
305 _("Namestore cannot store no block\n")); 304 _("Namestore cannot store no block\n"));
306 } 305 }
307} 306}
308 307
309#include "test_common.c" 308#include "test_common.c"
310 309
311 310
312int 311int
313main (int argc, char *argv[]) 312main(int argc, char *argv[])
314{ 313{
315 const char *plugin_name; 314 const char *plugin_name;
316 char *cfg_name; 315 char *cfg_name;
317 316
318 SETUP_CFG (plugin_name, cfg_name); 317 SETUP_CFG(plugin_name, cfg_name);
319 res = 1; 318 res = 1;
320 if (0 != 319 if (0 !=
321 GNUNET_TESTING_peer_run ("test-namestore-api-lookup-nick", 320 GNUNET_TESTING_peer_run("test-namestore-api-lookup-nick",
322 cfg_name, 321 cfg_name,
323 &run, 322 &run,
324 NULL)) 323 NULL))
325 { 324 {
326 res = 1; 325 res = 1;
327 } 326 }
328 GNUNET_DISK_purge_cfg_dir (cfg_name, 327 GNUNET_DISK_purge_cfg_dir(cfg_name,
329 "GNUNET_TEST_HOME"); 328 "GNUNET_TEST_HOME");
330 GNUNET_free (cfg_name); 329 GNUNET_free(cfg_name);
331 return res; 330 return res;
332} 331}
333 332