3 Copyright (c) Scott Gasch
11 Test of the main hash table code.
24 extern UCHAR g_cDirty;
26 #define CONVERT_HASH_DEPTH_TO_SEARCH_DEPTH(x) \
27 ASSERT(((x) & 0xffffff00) == 0); \
31 SanityCheckHashEntry(HASH_ENTRY *p)
36 Make sure a hash table entry looks valid.
52 if ((p->mv.uMove != 0) ||
64 CONVERT_HASH_DEPTH_TO_SEARCH_DEPTH(uDepth);
65 if (!IS_VALID_DEPTH(uDepth))
71 switch(p->bvFlags & HASH_FLAG_VALID_BOUNDS)
95 AnalyzeFullHashTable(void)
100 Walk over the hash table and validate populated entries.
114 ULONG uNumEntries = g_uHashTableSizeBytes / sizeof(HASH_ENTRY);
126 uEntry < uNumEntries;
129 if ((uEntry % NUM_HASH_ENTRIES_PER_LINE) == 0)
134 p = &(g_pHashTable[uEntry]);
139 if ((p->bvFlags & 0xF0) != g_cDirty)
147 if (FALSE == SanityCheckHashEntry(p))
149 UtilPanic(TESTCASE_FAILURE,
150 NULL, "TestHash", NULL, NULL,
166 // See if it's unique
168 if (uEntry % NUM_HASH_ENTRIES_PER_LINE)
174 if (p->u64Sig == g_pHashTable[u].u64Sig)
181 while(u % NUM_HASH_ENTRIES_PER_LINE);
194 Trace("There are %u entries in the hash table.\n", uNumEntries);
196 d = (double)uStale / (double)uNumEntries * 100.0;
197 Trace("The hash table is %6.3f percent stale.\n", d);
199 d = (double)uEmpty / (double)uNumEntries * 100.0;
200 Trace("The hash table is %6.3f percent empty.\n", d);
202 d = (double)uUnique / (double)uCount * 100.0;
203 Trace("The hash table is %6.3f percent unique.\n", d);