diff --git a/build_tools/rocksdb-lego-determinator b/build_tools/rocksdb-lego-determinator index 3bbd474bf..3d5f8f5ca 100755 --- a/build_tools/rocksdb-lego-determinator +++ b/build_tools/rocksdb-lego-determinator @@ -124,6 +124,60 @@ CLANG_UNIT_TEST_COMMANDS="[ } ]" +# +# RocksDB analyze +# +CLANG_ANALYZE_COMMANDS="[ + { + 'name':'Rocksdb analyze', + $ONCALL, + 'steps': [ + $CLEANUP_ENV, + { + 'name':'RocksDB build and analyze', + 'shell':'$CLANG $SHM $DEBUG make J=1 analyze', + 'user':'root' + }, + ], + } +]" + +# +# RocksDB code coverage +# +CODE_COV_COMMANDS="[ + { + 'name':'Rocksdb Unit Test Code Coverage', + $ONCALL, + 'steps': [ + $CLEANUP_ENV, + { + 'name':'Build, test and collect code coverage info', + 'shell':'$SHM $DEBUG make J=1 coverage', + 'user':'root' + }, + ], + } +]" + +# +# RocksDB unity +# +UNITY_COMMANDS="[ + { + 'name':'Rocksdb Unity', + $ONCALL, + 'steps': [ + $CLEANUP_ENV, + { + 'name':'Build, test unity test', + 'shell':'$SHM $DEBUG V=1 make J=1 unity', + 'user':'root' + }, + ], + } +]" + # # Build RocksDB lite # @@ -231,7 +285,7 @@ VALGRIND_TEST_COMMANDS="[ # # RocksDB test under TSAN # -TSAN_TEST_COMMANDS="[ +TSAN_UNIT_TEST_COMMANDS="[ { 'name':'Rocksdb Unit Test under TSAN', $ONCALL, @@ -247,6 +301,171 @@ TSAN_TEST_COMMANDS="[ } ]" +# +# RocksDB crash test under TSAN +# +TSAN_CRASH_TEST_COMMANDS="[ + { + 'name':'Rocksdb Crash Test under TSAN', + $ONCALL, + 'timeout': 86400, + 'steps': [ + $CLEANUP_ENV, + { + 'name':'Compile and run', + 'timeout': 86400, + 'shell':'set -o pipefail && $SHM $DEBUG $TSAN make J=1 crash_test', + 'user':'root' + }, + ], + } +]" + +# +# RocksDB format compatible +# + +SCRIPT=' +export TEST_TMPDIR=/dev/shm/rocksdb +rm -rf /dev/shm/rocksdb +mkdir /dev/shm/rocksdb + +echo " + +if [ -e "build_tools/build_detect_platform" ] +then + sed "s/tcmalloc/nothingnothingnothing/g" build_tools/build_detect_platform > $TEST_TMPDIR/temp_build_file + rm -rf build_tools/build_detect_platform + cp $TEST_TMPDIR/temp_build_file build_tools/build_detect_platform + chmod +x build_tools/build_detect_platform +fi + +if [ -e "build_detect_platform" ] +then + sed "s/tcmalloc/nothingnothingnothing/g" build_detect_platform > $TEST_TMPDIR/temp_build_file + rm -rf build_detect_platform + cp $TEST_TMPDIR/temp_build_file build_detect_platform + chmod +x build_detect_platform +fi + +make ldb -j32 + +if [ -e "build_detect_platform" ] +then + git checkout -- build_detect_platform +fi + +if [ -e "build_tools/build_detect_platform" ] +then + git checkout -- build_tools/build_detect_platform +fi +" > temp_build_ldb.sh + +sed "s/make ldb -j32/source temp_build_ldb.sh/g" tools/check_format_compatible.sh > tools/temp_check_format_compatible.sh +chmod +x tools/temp_check_format_compatible.sh +tools/temp_check_format_compatible.sh +' + +FORMAT_COMPATIBLE_COMMANDS="[ + { + 'name':'Rocksdb Format Compatible tests', + $ONCALL, + 'steps': [ + $CLEANUP_ENV, + { + 'name':'Run RocksDB debug unit test', + 'shell':'echo \'$SCRIPT\' > .legocmd && cat .legocmd && bash .legocmd', + 'user':'root' + }, + ], + } +]" + +# +# RocksDB no compression +# +SCRIPT=' +export TEST_TMPDIR=/dev/shm/rocksdb +rm -rf /dev/shm/rocksdb +mkdir /dev/shm/rocksdb +make clean +cat build_tools/fbcode_config.sh | grep -iv dzlib | grep -iv dlz4 | grep -iv +dsnappy | grep -iv dbzip2 > .tmp.fbcode_config.sh +mv .tmp.fbcode_config.sh build_tools/fbcode_config.sh +cat Makefile | grep -v tools/ldb_test.py > .tmp.Makefile +mv .tmp.Makefile Makefile +make $DEBUG J=1 check +' + +NO_COMPRESSION_COMMANDS="[ + { + 'name':'Rocksdb No Compression tests', + $ONCALL, + 'steps': [ + $CLEANUP_ENV, + { + 'name':'Run RocksDB debug unit test', + 'shell':'echo \'$SCRIPT\' > .legocmd && cat .legocmd && bash .legocmd', + 'user':'root' + }, + ], + } +]" + +# +# RocksDB regression +# +SCRIPT=' +time -v bash -vx ./build_tools/regression_build_test.sh $(mktemp -d $WORKSPACE/leveldb.XXXX) $(mktemp leveldb_test_stats.XXXX) + +# ======= report size to ODS ======== + +# parameters: $1 -- key, $2 -- value +function send_size_to_ods { + curl -s "https://www.intern.facebook.com/intern/agent/ods_set.php?entity=rocksdb_build&key=rocksdb.build_size.$1&value=$2" \ + --connect-timeout 60 +} + +# === normal build === +make clean +make -j$(nproc) static_lib +send_size_to_ods static_lib $(stat --printf="%s" librocksdb.a) +strip librocksdb.a +send_size_to_ods static_lib_stripped $(stat --printf="%s" librocksdb.a) + +make -j$(nproc) shared_lib +send_size_to_ods shared_lib $(stat --printf="%s" `readlink -f librocksdb.so`) +strip `readlink -f librocksdb.so` +send_size_to_ods shared_lib_stripped $(stat --printf="%s" `readlink -f librocksdb.so`) + +# === lite build === +make clean +OPT=-DROCKSDB_LITE make -j$(nproc) static_lib +send_size_to_ods static_lib_lite $(stat --printf="%s" librocksdb.a) +strip librocksdb.a +send_size_to_ods static_lib_lite_stripped $(stat --printf="%s" librocksdb.a) + +OPT=-DROCKSDB_LITE make -j$(nproc) shared_lib +send_size_to_ods shared_lib_lite $(stat --printf="%s" `readlink -f librocksdb.so`) +strip `readlink -f librocksdb.so` +send_size_to_ods shared_lib_lite_stripped $(stat --printf="%s" `readlink -f librocksdb.so`) +' + +REGRESSION_COMMANDS="[ + { + 'name':'Rocksdb regression commands', + $ONCALL, + 'steps': [ + $CLEANUP_ENV, + { + 'name':'Make and run script', + 'shell':'echo \'$SCRIPT\' > .legocmd && cat .legocmd && bash .legocmd', + 'user':'root' + }, + ], + } +]" + case $1 in punit) echo $PARALLEL_UNIT_TEST_COMMANDS @@ -260,6 +479,15 @@ case $1 in clang_unit) echo $CLANG_UNIT_TEST_COMMANDS ;; + clang_analyze) + echo $CLANG_ANALYZE_COMMANDS + ;; + code_cov) + echo $CODE_COV_COMMANDS + ;; + unity) + echo $UNITY_COMMANDS + ;; lite) echo $LITE_BUILD_COMMANDS ;; @@ -276,7 +504,19 @@ case $1 in echo $VALGRIND_TEST_COMMANDS ;; tsan) - echo $TSAN_TEST_COMMANDS + echo $TSAN_UNIT_TEST_COMMANDS + ;; + tsan_crash) + echo $TSAN_CRASH_TEST_COMMANDS + ;; + format_compatible) + echo $FORMAT_COMPATIBLE_COMMANDS + ;; + no_compression) + echo $NO_COMPRESSION_COMMANDS + ;; + regression) + echo $REGRESSION_COMMANDS ;; *) echo "Invalid determinator command"