+
+
+ printf("\n--------- DHT ----------\n\n");
+
+ ston_dht dht;
+ elements = 50;
+ columns = 6;
+ dht = ston_dht32_new(columns, elements, 0, malloc, free);
+ check_ht(dht);
+ elements = 50000;
+ printf("Filling Dynamic hashtable with %i entries\n", (int)elements);
+ for(key = 0xCEED; elements--; key *= 7)
+ { val[0] = key;
+ for(i = 1; i < columns; i++)
+ val[i] = i * key;
+ ston_dht32_insertx(dht,key,val,0,columns);
+ }
+ elements = 50000;
+ printf("Reading entries: ");
+ fail = 0;
+ for(key = 0xCEED; elements--; key *= 7)
+ { htval = ston_dht32_row(dht,key);
+ if (*htval != key)
+ fail++;
+ for(i = 1; i < columns; i++)
+ if (htval[i] != (uint32_t)(i * key))
+ fail++;
+ }
+ if (fail)
+ printf(RED"FAIL"CLRC"(%i)\n", fail);
+ else
+ printf(GREEN"PASS"CLRCN);
+ max_capacity = (ston_up2pow(50 << 1) * (ston_dht_pagemax(dht) - ston_dht_pagestart(dht))) - 50000;
+ cap = max_capacity;
+ printf("Overfilling hashtable with %i entries\n", max_capacity);
+ for(key = 0xCEED2; cap--; key *= 13)
+ { val[0] = key;
+ for(i = 1; i < columns; i++)
+ val[i] = key * -i;
+ ston_dht32_insertx(dht,key,val,0,columns);
+ }
+ printf("Reading entries: ");
+ cap = max_capacity;
+ fail = 0;
+ for(key = 0xCEED2; cap--; key *= 13)
+ { htval = ston_dht32_row(dht,key);
+ if (*htval != key)
+ fail++;
+ for(i = 1; i < columns; i++)
+ if (htval[i] != (uint32_t)(key * -i))
+ fail++;
+ }
+ if (fail)
+ printf(RED"FAIL"CLRC"(%i)\n", fail);
+ else
+ printf(GREEN"PASS"CLRCN);
+
+ cap = 20;
+ printf("Post-capacity insertion of %i\n",cap);
+ for (key = 0xCEED3; cap--; key *= 23)
+ { val[0] = key;
+ for(i = 1; i < columns; i++)
+ val[i] = key * -i;
+ size_t count = ston_dht32_insertx(dht,key,val,0,columns);
+ printf("Insertion %2i wrote %i bytes: %s"CLRCN, (int)cap, (int) count,
+ (count == 0) ? GREEN"PASS" : RED"FAIL");
+ }
+
+
+ printf("Refilling hashtable with %i entries\n", max_capacity);
+ cap = max_capacity;
+ for(key = 0xCEED2; cap--; key *= 13)
+ { val[0] = key;
+ for(i = 1; i < columns; i++)
+ val[i] = key * i;
+ ston_dht32_insertx(dht,key,val,0,columns);
+ }
+ printf("Reading entries: ");
+ cap = max_capacity;
+ fail = 0;
+ for(key = 0xCEED2; cap--; key *= 13)
+ { htval = ston_dht32_row(dht,key);
+ if (*htval != key)
+ fail ++;
+ for (i = 1; i < columns; i++)
+ if (htval[i] != (uint32_t)(key * i))
+ fail++;
+ }
+ if (fail)
+ printf(RED"FAIL"CLRC"(%i)\n", fail);
+ else
+ printf(GREEN"PASS"CLRCN);
+
+ ston_dht32_free(dht);
+