MCPcopy Create free account
hub / github.com/ElementsProject/elements / CompareIterators

Function CompareIterators

src/leveldb/db/db_test.cc:2121–2162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2119};
2120
2121static bool CompareIterators(int step, DB* model, DB* db,
2122 const Snapshot* model_snap,
2123 const Snapshot* db_snap) {
2124 ReadOptions options;
2125 options.snapshot = model_snap;
2126 Iterator* miter = model->NewIterator(options);
2127 options.snapshot = db_snap;
2128 Iterator* dbiter = db->NewIterator(options);
2129 bool ok = true;
2130 int count = 0;
2131 for (miter->SeekToFirst(), dbiter->SeekToFirst();
2132 ok && miter->Valid() && dbiter->Valid(); miter->Next(), dbiter->Next()) {
2133 count++;
2134 if (miter->key().compare(dbiter->key()) != 0) {
2135 fprintf(stderr, "step %d: Key mismatch: '%s' vs. '%s'\n", step,
2136 EscapeString(miter->key()).c_str(),
2137 EscapeString(dbiter->key()).c_str());
2138 ok = false;
2139 break;
2140 }
2141
2142 if (miter->value().compare(dbiter->value()) != 0) {
2143 fprintf(stderr, "step %d: Value mismatch for key '%s': '%s' vs. '%s'\n",
2144 step, EscapeString(miter->key()).c_str(),
2145 EscapeString(miter->value()).c_str(),
2146 EscapeString(miter->value()).c_str());
2147 ok = false;
2148 }
2149 }
2150
2151 if (ok) {
2152 if (miter->Valid() != dbiter->Valid()) {
2153 fprintf(stderr, "step %d: Mismatch at end of iterators: %d vs. %d\n",
2154 step, miter->Valid(), dbiter->Valid());
2155 ok = false;
2156 }
2157 }
2158 fprintf(stderr, "%d entries compared: ok=%d\n", count, ok);
2159 delete miter;
2160 delete dbiter;
2161 return ok;
2162}
2163
2164TEST(DBTest, Randomized) {
2165 Random rnd(test::RandomSeed());

Callers 1

TESTFunction · 0.85

Calls 8

EscapeStringFunction · 0.85
compareMethod · 0.80
NewIteratorMethod · 0.45
SeekToFirstMethod · 0.45
ValidMethod · 0.45
NextMethod · 0.45
keyMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected