| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068 |
- #!/usr/bin/env bash
- # This script is executed by Sandcastle
- # to determine next steps to run
- # Usage:
- # EMAIL=<email> ONCALL=<email> TRIGGER=<trigger> SUBSCRIBER=<email> rocks_ci.py <test-name>
- #
- # Input Value
- # -------------------------------------------------------------------------
- # EMAIL Email address to report on trigger conditions
- # ONCALL Email address to raise a task on failure
- # TRIGGER Trigger conditions for email. Valid values are fail, warn, all
- # SUBSCRIBER Email addresss to add as subscriber for task
- #
- #
- # Report configuration
- #
- REPORT_EMAIL=
- if [ ! -z $EMAIL ]; then
- if [ -z $TRIGGER ]; then
- TRIGGER="fail"
- fi
- REPORT_EMAIL="
- {
- 'type':'email',
- 'triggers': [ '$TRIGGER' ],
- 'emails':['$EMAIL']
- },"
- fi
- CREATE_TASK=
- if [ ! -z $ONCALL ]; then
- CREATE_TASK="
- {
- 'type':'task',
- 'triggers':[ 'fail' ],
- 'priority':0,
- 'subscribers':[ '$SUBSCRIBER' ],
- 'tags':[ 'rocksdb', 'ci' ],
- },"
- fi
- # For now, create the tasks using only the dedicated task creation tool.
- CREATE_TASK=
- REPORT=
- if [[ ! -z $REPORT_EMAIL || ! -z $CREATE_TASK ]]; then
- REPORT="'report': [
- $REPORT_EMAIL
- $CREATE_TASK
- ]"
- fi
- #
- # Helper variables
- #
- CLEANUP_ENV="
- {
- 'name':'Cleanup environment',
- 'shell':'rm -rf /dev/shm/rocksdb && mkdir /dev/shm/rocksdb && (chmod +t /dev/shm || true) && make clean',
- 'user':'root'
- }"
- UPLOAD_DB_DIR="
- {
- 'name':'Upload database directory',
- 'shell':'tar -cvzf rocksdb_db.tar.gz /dev/shm/rocksdb/',
- 'user':'root',
- 'cleanup':true,
- 'provide_artifacts': [
- {
- 'name':'rocksdb_db_dir',
- 'paths': ['rocksdb_db.tar.gz'],
- 'bundle': false,
- },
- ],
- }"
- # We will eventually set the RATIO to 1, but we want do this
- # in steps. RATIO=$(nproc) will make it work as J=1
- if [ -z $RATIO ]; then
- RATIO=$(nproc)
- fi
- if [ -z $PARALLEL_J ]; then
- PARALLEL_J="J=$(expr $(nproc) / ${RATIO})"
- fi
- if [ -z $PARALLEL_j ]; then
- PARALLEL_j="-j$(expr $(nproc) / ${RATIO})"
- fi
- PARALLELISM="$PARALLEL_J $PARALLEL_j"
- DEBUG="OPT=-g"
- SHM="TEST_TMPDIR=/dev/shm/rocksdb"
- NON_SHM="TMPD=/tmp/rocksdb_test_tmp"
- GCC_481="ROCKSDB_FBCODE_BUILD_WITH_481=1"
- ASAN="COMPILE_WITH_ASAN=1"
- CLANG="USE_CLANG=1"
- # in gcc-5 there are known problems with TSAN like https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71090.
- # using platform007 gives us gcc-8 or higher which has that bug fixed.
- TSAN="ROCKSDB_FBCODE_BUILD_WITH_PLATFORM007=1 COMPILE_WITH_TSAN=1"
- UBSAN="COMPILE_WITH_UBSAN=1"
- TSAN_CRASH='CRASH_TEST_EXT_ARGS="--compression_type=zstd --log2_keys_per_lock=22"'
- NON_TSAN_CRASH="CRASH_TEST_EXT_ARGS=--compression_type=zstd"
- DISABLE_JEMALLOC="DISABLE_JEMALLOC=1"
- HTTP_PROXY="https_proxy=http://fwdproxy.29.prn1:8080 http_proxy=http://fwdproxy.29.prn1:8080 ftp_proxy=http://fwdproxy.29.prn1:8080"
- SETUP_JAVA_ENV="export $HTTP_PROXY; export JAVA_HOME=/usr/local/jdk-8u60-64/; export PATH=\$JAVA_HOME/bin:\$PATH"
- PARSER="'parser':'python build_tools/error_filter.py $1'"
- CONTRUN_NAME="ROCKSDB_CONTRUN_NAME"
- # This code is getting called under various scenarios. What we care about is to
- # understand when it's called from nightly contruns because in that case we'll
- # create tasks for any failures. To follow the existing pattern, we'll check
- # the value of $ONCALL. If it's a diff then just call `false` to make sure
- # that errors will be properly propagated to the caller.
- if [ ! -z $ONCALL ]; then
- TASK_CREATION_TOOL="/usr/local/bin/mysql_mtr_filter --rocksdb --oncall $ONCALL"
- else
- TASK_CREATION_TOOL="false"
- fi
- #
- # A mechanism to disable tests temporarily
- #
- DISABLE_COMMANDS="[
- {
- 'name':'Disable test',
- 'oncall':'$ONCALL',
- 'steps': [
- {
- 'name':'Job disabled. Please contact test owner',
- 'shell':'exit 1',
- 'user':'root'
- },
- ],
- }
- ]"
- #
- # RocksDB unit test
- #
- UNIT_TEST_COMMANDS="[
- {
- 'name':'Rocksdb Unit Test',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and test RocksDB debug version',
- 'shell':'$SHM $DEBUG make $PARALLELISM check || $CONTRUN_NAME=check $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB unit test not under /dev/shm
- #
- UNIT_TEST_NON_SHM_COMMANDS="[
- {
- 'name':'Rocksdb Unit Test',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and test RocksDB debug version',
- 'timeout': 86400,
- 'shell':'$NON_SHM $DEBUG make $PARALLELISM check || $CONTRUN_NAME=non_shm_check $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB release build and unit tests
- #
- RELEASE_BUILD_COMMANDS="[
- {
- 'name':'Rocksdb Release Build',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build RocksDB release',
- 'shell':'make $PARALLEL_j release || $CONTRUN_NAME=release $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB unit test on gcc-4.8.1
- #
- UNIT_TEST_COMMANDS_481="[
- {
- 'name':'Rocksdb Unit Test on GCC 4.8.1',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and test RocksDB debug version',
- 'shell':'$SHM $GCC_481 $DEBUG make $PARALLELISM check || $CONTRUN_NAME=unit_gcc_481_check $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB release build and unit tests
- #
- RELEASE_BUILD_COMMANDS_481="[
- {
- 'name':'Rocksdb Release on GCC 4.8.1',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build RocksDB release on GCC 4.8.1',
- 'shell':'$GCC_481 make $PARALLEL_j release || $CONTRUN_NAME=release_gcc481 $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB unit test with CLANG
- #
- CLANG_UNIT_TEST_COMMANDS="[
- {
- 'name':'Rocksdb Unit Test',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and test RocksDB debug',
- 'shell':'$CLANG $SHM $DEBUG make $PARALLELISM check || $CONTRUN_NAME=clang_check $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB release build with CLANG
- #
- CLANG_RELEASE_BUILD_COMMANDS="[
- {
- 'name':'Rocksdb CLANG Release Build',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build RocksDB release',
- 'shell':'$CLANG make $PARALLEL_j release|| $CONTRUN_NAME=clang_release $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB analyze
- #
- CLANG_ANALYZE_COMMANDS="[
- {
- 'name':'Rocksdb analyze',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'RocksDB build and analyze',
- 'shell':'$CLANG $SHM $DEBUG make $PARALLEL_j analyze || $CONTRUN_NAME=clang_analyze $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB code coverage
- #
- CODE_COV_COMMANDS="[
- {
- 'name':'Rocksdb Unit Test Code Coverage',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build, test and collect code coverage info',
- 'shell':'$SHM $DEBUG make $PARALLELISM coverage || $CONTRUN_NAME=coverage $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB unity
- #
- UNITY_COMMANDS="[
- {
- 'name':'Rocksdb Unity',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build, test unity test',
- 'shell':'$SHM $DEBUG V=1 make J=1 unity_test || $CONTRUN_NAME=unity_test $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # Build RocksDB lite
- #
- LITE_BUILD_COMMANDS="[
- {
- 'name':'Rocksdb Lite build',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build RocksDB debug version',
- 'shell':'make J=1 LITE=1 all check || $CONTRUN_NAME=lite $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # Report RocksDB lite binary size to scuba
- REPORT_LITE_BINARY_SIZE_COMMANDS="[
- {
- 'name':'Rocksdb Lite Binary Size',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Report RocksDB Lite binary size to scuba',
- 'shell':'tools/report_lite_binary_size.sh',
- 'user':'root',
- },
- ],
- ]"
- #
- # RocksDB stress/crash test
- #
- STRESS_CRASH_TEST_COMMANDS="[
- {
- 'name':'Rocksdb Stress and Crash Test',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB debug stress tests',
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH make J=1 db_stress || $CONTRUN_NAME=db_stress $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- {
- 'name':'Build and run RocksDB debug crash tests',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH make J=1 crash_test || $CONTRUN_NAME=crash_test $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB stress/crash test with atomic flush
- #
- STRESS_CRASH_TEST_WITH_ATOMIC_FLUSH_COMMANDS="[
- {
- 'name':'Rocksdb Stress and Crash Test with atomic flush',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB debug stress tests',
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH make J=1 db_stress || $CONTRUN_NAME=db_stress $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- {
- 'name':'Build and run RocksDB debug crash tests with atomic flush',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH make J=1 crash_test_with_atomic_flush || $CONTRUN_NAME=crash_test_with_atomic_flush $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB stress/crash test with txn
- #
- STRESS_CRASH_TEST_WITH_TXN_COMMANDS="[
- {
- 'name':'Rocksdb Stress and Crash Test with txn',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB debug stress tests',
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH make J=1 db_stress || $CONTRUN_NAME=db_stress $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- {
- 'name':'Build and run RocksDB debug crash tests with txn',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH make J=1 crash_test_with_txn || $CONTRUN_NAME=crash_test_with_txn $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- # RocksDB write stress test.
- # We run on disk device on purpose (i.e. no $SHM)
- # because we want to add some randomness to fsync commands
- WRITE_STRESS_COMMANDS="[
- {
- 'name':'Rocksdb Write Stress Test',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB write stress tests',
- 'shell':'make write_stress && python tools/write_stress_runner.py --runtime_sec=3600 --db=/tmp/rocksdb_write_stress || $CONTRUN_NAME=write_stress $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- }
- ],
- 'artifacts': [{'name': 'database', 'paths': ['/tmp/rocksdb_write_stress']}],
- $REPORT
- }
- ]"
- #
- # RocksDB test under address sanitizer
- #
- ASAN_TEST_COMMANDS="[
- {
- 'name':'Rocksdb Unit Test under ASAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Test RocksDB debug under ASAN',
- 'shell':'set -o pipefail && ($SHM $ASAN $DEBUG make $PARALLELISM asan_check || $CONTRUN_NAME=asan_check $TASK_CREATION_TOOL) |& /usr/facebook/ops/scripts/asan_symbolize.py -d',
- 'user':'root',
- $PARSER
- }
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB crash testing under address sanitizer
- #
- ASAN_CRASH_TEST_COMMANDS="[
- {
- 'name':'Rocksdb crash test under ASAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB debug asan_crash_test',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH make J=1 asan_crash_test || $CONTRUN_NAME=asan_crash_test $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB crash testing with atomic flush under address sanitizer
- #
- ASAN_CRASH_TEST_WITH_ATOMIC_FLUSH_COMMANDS="[
- {
- 'name':'Rocksdb crash test with atomic flush under ASAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB debug asan_crash_test_with_atomic_flush',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH make J=1 asan_crash_test_with_atomic_flush || $CONTRUN_NAME=asan_crash_test_with_atomic_flush $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB crash testing with txn under address sanitizer
- #
- ASAN_CRASH_TEST_WITH_TXN_COMMANDS="[
- {
- 'name':'Rocksdb crash test with txn under ASAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB debug asan_crash_test_with_txn',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH make J=1 asan_crash_test_with_txn || $CONTRUN_NAME=asan_crash_test_with_txn $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB test under undefined behavior sanitizer
- #
- UBSAN_TEST_COMMANDS="[
- {
- 'name':'Rocksdb Unit Test under UBSAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Test RocksDB debug under UBSAN',
- 'shell':'set -o pipefail && $SHM $UBSAN $CLANG $DEBUG make $PARALLELISM ubsan_check || $CONTRUN_NAME=ubsan_check $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- }
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB crash testing under udnefined behavior sanitizer
- #
- UBSAN_CRASH_TEST_COMMANDS="[
- {
- 'name':'Rocksdb crash test under UBSAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB debug ubsan_crash_test',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH $CLANG make J=1 ubsan_crash_test || $CONTRUN_NAME=ubsan_crash_test $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB crash testing with atomic flush under undefined behavior sanitizer
- #
- UBSAN_CRASH_TEST_WITH_ATOMIC_FLUSH_COMMANDS="[
- {
- 'name':'Rocksdb crash test with atomic flush under UBSAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB debug ubsan_crash_test_with_atomic_flush',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH $CLANG make J=1 ubsan_crash_test_with_atomic_flush || $CONTRUN_NAME=ubsan_crash_test_with_atomic_flush $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB crash testing with txn under undefined behavior sanitizer
- #
- UBSAN_CRASH_TEST_WITH_TXN_COMMANDS="[
- {
- 'name':'Rocksdb crash test with txn under UBSAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build and run RocksDB debug ubsan_crash_test_with_txn',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG $NON_TSAN_CRASH $CLANG make J=1 ubsan_crash_test_with_txn || $CONTRUN_NAME=ubsan_crash_test_with_txn $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB unit test under valgrind
- #
- VALGRIND_TEST_COMMANDS="[
- {
- 'name':'Rocksdb Unit Test under valgrind',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Run RocksDB debug unit tests',
- 'timeout': 86400,
- 'shell':'$SHM $DEBUG make $PARALLELISM valgrind_test || $CONTRUN_NAME=valgrind_check $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB test under TSAN
- #
- TSAN_UNIT_TEST_COMMANDS="[
- {
- 'name':'Rocksdb Unit Test under TSAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Run RocksDB debug unit test',
- 'timeout': 86400,
- 'shell':'set -o pipefail && $SHM $DEBUG $TSAN make $PARALLELISM check || $CONTRUN_NAME=tsan_check $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB crash test under TSAN
- #
- TSAN_CRASH_TEST_COMMANDS="[
- {
- 'name':'Rocksdb Crash Test under TSAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Compile and run',
- 'timeout': 86400,
- 'shell':'set -o pipefail && $SHM $DEBUG $TSAN $TSAN_CRASH CRASH_TEST_KILL_ODD=1887 make J=1 crash_test || $CONTRUN_NAME=tsan_crash_test $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB crash test with atomic flush under TSAN
- #
- TSAN_CRASH_TEST_WITH_ATOMIC_FLUSH_COMMANDS="[
- {
- 'name':'Rocksdb Crash Test with atomic flush under TSAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Compile and run',
- 'timeout': 86400,
- 'shell':'set -o pipefail && $SHM $DEBUG $TSAN $TSAN_CRASH CRASH_TEST_KILL_ODD=1887 make J=1 crash_test_with_atomic_flush || $CONTRUN_NAME=tsan_crash_test_with_atomic_flush $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB crash test with txn under TSAN
- #
- TSAN_CRASH_TEST_WITH_TXN_COMMANDS="[
- {
- 'name':'Rocksdb Crash Test with txn under TSAN',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'timeout': 86400,
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Compile and run',
- 'timeout': 86400,
- 'shell':'set -o pipefail && $SHM $DEBUG $TSAN $TSAN_CRASH CRASH_TEST_KILL_ODD=1887 make J=1 crash_test_with_txn || $CONTRUN_NAME=tsan_crash_test_with_txn $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- $UPLOAD_DB_DIR,
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB format compatible
- #
- run_format_compatible()
- {
- export TEST_TMPDIR=/dev/shm/rocksdb
- rm -rf /dev/shm/rocksdb
- mkdir /dev/shm/rocksdb
- tools/check_format_compatible.sh
- }
- FORMAT_COMPATIBLE_COMMANDS="[
- {
- 'name':'Rocksdb Format Compatible tests',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Run RocksDB debug unit test',
- 'shell':'build_tools/rocksdb-lego-determinator run_format_compatible || $CONTRUN_NAME=run_format_compatible $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB no compression
- #
- run_no_compression()
- {
- 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 dzstd | 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':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Run RocksDB debug unit test',
- 'shell':'build_tools/rocksdb-lego-determinator run_no_compression || $CONTRUN_NAME=run_no_compression $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB regression
- #
- run_regression()
- {
- 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 --silent "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
- make LITE=1 -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)
- make LITE=1 -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':'$ONCALL',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Make and run script',
- 'shell':'build_tools/rocksdb-lego-determinator run_regression || $CONTRUN_NAME=run_regression $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- #
- # RocksDB Java build
- #
- JAVA_BUILD_TEST_COMMANDS="[
- {
- 'name':'Rocksdb Java Build',
- 'oncall':'$ONCALL',
- 'executeLocal': 'true',
- 'steps': [
- $CLEANUP_ENV,
- {
- 'name':'Build RocksDB for Java',
- 'shell':'$SETUP_JAVA_ENV; $SHM make rocksdbjava || $CONTRUN_NAME=rocksdbjava $TASK_CREATION_TOOL',
- 'user':'root',
- $PARSER
- },
- ],
- $REPORT
- }
- ]"
- case $1 in
- unit)
- echo $UNIT_TEST_COMMANDS
- ;;
- unit_non_shm)
- echo $UNIT_TEST_NON_SHM_COMMANDS
- ;;
- release)
- echo $RELEASE_BUILD_COMMANDS
- ;;
- unit_481)
- echo $UNIT_TEST_COMMANDS_481
- ;;
- release_481)
- echo $RELEASE_BUILD_COMMANDS_481
- ;;
- clang_unit)
- echo $CLANG_UNIT_TEST_COMMANDS
- ;;
- clang_release)
- echo $CLANG_RELEASE_BUILD_COMMANDS
- ;;
- clang_analyze)
- echo $CLANG_ANALYZE_COMMANDS
- ;;
- code_cov)
- echo $CODE_COV_COMMANDS
- ;;
- unity)
- echo $UNITY_COMMANDS
- ;;
- lite)
- echo $LITE_BUILD_COMMANDS
- ;;
- report_lite_binary_size)
- echo $REPORT_LITE_BINARY_SIZE_COMMANDS
- ;;
- stress_crash)
- echo $STRESS_CRASH_TEST_COMMANDS
- ;;
- stress_crash_with_atomic_flush)
- echo $STRESS_CRASH_TEST_WITH_ATOMIC_FLUSH_COMMANDS
- ;;
- stress_crash_with_txn)
- echo $STRESS_CRASH_TEST_WITH_TXN_COMMANDS
- ;;
- write_stress)
- echo $WRITE_STRESS_COMMANDS
- ;;
- asan)
- echo $ASAN_TEST_COMMANDS
- ;;
- asan_crash)
- echo $ASAN_CRASH_TEST_COMMANDS
- ;;
- asan_crash_with_atomic_flush)
- echo $ASAN_CRASH_TEST_WITH_ATOMIC_FLUSH_COMMANDS
- ;;
- asan_crash_with_txn)
- echo $ASAN_CRASH_TEST_WITH_TXN_COMMANDS
- ;;
- ubsan)
- echo $UBSAN_TEST_COMMANDS
- ;;
- ubsan_crash)
- echo $UBSAN_CRASH_TEST_COMMANDS
- ;;
- ubsan_crash_with_atomic_flush)
- echo $UBSAN_CRASH_TEST_WITH_ATOMIC_FLUSH_COMMANDS
- ;;
- ubsan_crash_with_txn)
- echo $UBSAN_CRASH_TEST_WITH_TXN_COMMANDS
- ;;
- valgrind)
- echo $VALGRIND_TEST_COMMANDS
- ;;
- tsan)
- echo $TSAN_UNIT_TEST_COMMANDS
- ;;
- tsan_crash)
- echo $TSAN_CRASH_TEST_COMMANDS
- ;;
- tsan_crash_with_atomic_flush)
- echo $TSAN_CRASH_TEST_WITH_ATOMIC_FLUSH_COMMANDS
- ;;
- tsan_crash_with_txn)
- echo $TSAN_CRASH_TEST_WITH_TXN_COMMANDS
- ;;
- format_compatible)
- echo $FORMAT_COMPATIBLE_COMMANDS
- ;;
- run_format_compatible)
- run_format_compatible
- ;;
- no_compression)
- echo $NO_COMPRESSION_COMMANDS
- ;;
- run_no_compression)
- run_no_compression
- ;;
- regression)
- echo $REGRESSION_COMMANDS
- ;;
- run_regression)
- run_regression
- ;;
- java_build)
- echo $JAVA_BUILD_TEST_COMMANDS
- ;;
- *)
- echo "Invalid determinator command"
- exit 1
- ;;
- esac
|