mirror of
https://github.com/samba-team/samba.git
synced 2025-01-20 14:03:59 +03:00
9754980b03
The index code (lib/ldb_key_value/ldb_kv_index.c) recapitulates LDB expression logic, and it seemed less than completely obvious that it would never make a mistake and return a different result than an unindexed search. Here we run the same search on an unindexed database and on some that have been indexed with a variety of options. We assert that the results are identical over a number of searches. By default, when run from the command line, that number is 495161, which takes a couple of minutes. But if the SKIP_SLOW_TESTS environment variable is set, the number is 33569, which takes 20 seconds or so. In selftest we set the variable and run the smaller number. The tests will print the cumulative search time for each database for each testsuite, like this: $ python3 lib/ldb/tests/python/index_transparency.py ..........................................................[...] <class '__main__.SearchTest'> 25.78186821937561 <ldb connection tdb:///tmp/tmpf1x72x7l/tdb-indexed-dn.ldb> 17.73349642753601 <ldb connection tdb:///tmp/tmpf1x72x7l/tdb-half-indexed.ldb> 15.14864206314087 <ldb connection tdb:///tmp/tmpf1x72x7l/tdb-indexed-guid.ldb> 13.107165575027466 <ldb connection mdb:///tmp/tmpf1x72x7l/mdb-indexed.ldb> Like all benchmarks it is interesting but misleading. One caveat here is that you have (probably) compiled tdb in developer mode without optimisation, while lmdb is probably a system package compiled with -O2, though perhaps not tuned to your exact architecture. Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Andreas Schneider <asn@samba.org>