5 #define NUM_ITEMS 100000
11 unsigned int vals[NUM_ITEMS];
14 chashtable_t *localHash;
16 dhtInit(0x80C3AF45, DHT_NO_KEY_LIMIT);
18 localHash = chashCreate(HASH_SIZE, LOADFACTOR);
21 for (key = 1; key < NUM_ITEMS; key++)
28 printf("testing dhtInsert() and dhtSearch()\n");
30 for (key = 0; key < NUM_ITEMS; key++)
32 dhtInsert(key, vals[key]);
36 for (key = 1; key < NUM_ITEMS; key++)
38 retval = dhtSearch(key, &val);
41 printf("item not found: key = %d, expected val = %d\n", key, vals[key]);
44 else if (retval == -1)
46 printf("internal error: key = %d, expected val = %d\n", key, vals[key]);
53 printf("unexpected value: key = %d, expected val = %d, val = %d\n", key, vals[key], val);
59 printf("test completed successfully\n");
61 printf("one or more errors occurred\n");
63 printf("(this currently fails if key = 0 OR val = 0, due to underlying hash table)\n");
64 printf("testing underlying hash table (clookup.h)\n");
66 for (key = 1; key < NUM_ITEMS; key++)
68 chashInsert(localHash, key, (void *)vals[key]);
72 for (key = 1; key < NUM_ITEMS; key++)
74 val = (unsigned int)chashSearch(localHash, key);
75 if ((void *)val == NULL)
77 printf("item not found: key = %d, expected val = %d\n", key, vals[key]);
84 printf("unexpected value: key = %d, expected val = %d, val = %d\n", key, vals[key], val);
88 for (key = NUM_ITEMS; key < NUM_ITEMS + 20; key++)
90 val = (unsigned int)chashSearch(localHash, key);
91 if ((void *)val != NULL)
93 printf("error: returned value for key that wasn't inserted: key = %d, val = %d\n", key, val);
100 printf("test completed successfully\n");
102 printf("one or more errors occurred\n");
104 printf("testing dhtRemove(), removing half of the keys, and verifying that the other half is still there\n");
106 for (key = 0; key < NUM_ITEMS / 2; key++)
111 for (key = 0; key < NUM_ITEMS / 2; key++)
113 retval = dhtSearch(key, &val);
116 printf("error: found removed item: key = %d, val = %d\n", key, val);
119 else if (retval == -1)
121 printf("internal error: key = %d, val = %d\n", key, val);
125 for (key = NUM_ITEMS / 2; key < NUM_ITEMS; key++)
127 retval = dhtSearch(key, &val);
130 printf("item not found: key = %d, expected val = %d\n", key, vals[key]);
133 else if (retval == -1)
135 printf("internal error: key = %d, expected val = %d\n", key, vals[key]);
138 else if (retval == 0)
140 if (vals[key] != val)
142 printf("unexpected value: key = %d, expected val = %d, val = %d\n", key, vals[key], val);
149 printf("test completed successfully\n");
151 printf("one or more errors occurred\n");