dhttest.c - libdht - A simple helper library for distributed hash tables.
(HTM) git clone git://r-36.net/libdht
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
dhttest.c (2732B)
---
1 /*
2 * Copy me if you can.
3 * by 20h
4 */
5
6 #include <unistd.h>
7 #include <stdlib.h>
8 #include <stdio.h>
9 #include <strings.h>
10
11 #include "dht.h"
12
13 int
14 main(void)
15 {
16 dht_t *dht;
17 dhtnode_t *node, *node78;
18 char nodename[17];
19 dhtlist_t *results;
20
21 bzero(nodename, sizeof(nodename));
22 dht = dht_new("testnetwork");
23
24 for (int i = 0; i < 4096; i++) {
25 node = dhtnode_new();
26 dhtnode_mkid(node);
27 snprintf(nodename, sizeof(nodename)-1, "node%d", i);
28 dhtnode_setaddr(node, nodename);
29
30 if(dht_update(dht, node) == NULL) {
31 dhtnode_free(node);
32 break;
33 }
34
35 if (i == 78)
36 node78 = node;
37 }
38 printf("4096 nodes created.\n");
39
40 printf("node78:\n");
41 dhtnode_print(node78);
42 printf("nearby node78 is:\n");
43 results = dht_find(dht, node78, 5);
44 fordhtlist(results, elem)
45 dhtnode_print(elem->node);
46 dhtlist_free(results);
47
48 node = dhtnode_new();
49 dhtnode_mkid(node);
50 printf("noderand:\n");
51 dhtnode_print(node);
52 printf("nearby noderand is:\n");
53 results = dht_find(dht, node, 10);
54 fordhtlist(results, elem)
55 dhtnode_print(elem->node);
56 dhtlist_free(results);
57 dhtnode_free(node);
58
59 dht_free(dht);
60
61 dht = dht_new("localhost");
62 dhtnode_setid(dht->routing->node, "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00"
63 "\x00\x00\x00\x00\x00\x00\00\x00\x00\x00\x00");
64
65 node = dhtnode_new();
66 dhtnode_setid(node, "\xFF\xFF\xFF\xF0\x00\x00\x00\x00\x00"
67 "\x00\x00\x00\x00\x00\x00\00\x00\x00\x00\x00");
68 dhtnode_setaddr(node, "node1");
69 dht_update(dht, node);
70
71 node = dhtnode_new();
72 dhtnode_setid(node, "\x11\x11\x11\x11\x00\x00\x00\x00\x00"
73 "\x00\x00\x00\x00\x00\x00\00\x00\x00\x00\x00");
74 dhtnode_setaddr(node, "node2");
75 dht_update(dht, node);
76
77 node = dhtnode_new();
78 dhtnode_setid(node, "\x22\x22\x22\x22\x00\x00\x00\x00\x00"
79 "\x00\x00\x00\x00\x00\x00\00\x00\x00\x00\x00");
80 dhtnode_setaddr(node, "nodesearch");
81 printf("searching for one nearby node\n");
82 results = dht_find(dht, node, 1);
83 fordhtlist(results, elem)
84 dhtnode_print(elem->node);
85 dhtlist_free(results);
86 dhtnode_free(node);
87
88 node = dhtnode_new();
89 dhtnode_setid(node, "\xFF\xFF\xFF\xF0\x00\x00\x00\x00\x00"
90 "\x00\x00\x00\x00\x00\x00\00\x00\x00\x00\x00");
91 dhtnode_setaddr(node, "nodesearch2");
92 printf("searching for 10 nearby nodes\n");
93 results = dht_find(dht, node, 10);
94 fordhtlist(results, elem)
95 dhtnode_print(elem->node);
96 dhtlist_free(results);
97 dhtnode_free(node);
98
99 node = dhtnode_new();
100 dhtnode_setid(node, "\x11\x11\x11\x11\x00\x00\x00\x00\x00"
101 "\x00\x00\x00\x00\x00\x00\00\x00\x00\x00\x00");
102 dhtnode_setaddr(node, "nodesearch3");
103 printf("searching for one nearby nodes\n");
104 results = dht_find(dht, node, 1);
105 fordhtlist(results, elem)
106 dhtnode_print(elem->node);
107 dhtlist_free(results);
108 dhtnode_free(node);
109 dht_free(dht);
110
111 return 0;
112 }
113