| 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']  },"fiCREATE_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=1if [ -z $RATIO ]; then  RATIO=$(nproc)fiif [ -z $PARALLEL_J ]; then  PARALLEL_J="J=$(expr $(nproc) / ${RATIO})"fiif [ -z $PARALLEL_j ]; then  PARALLEL_j="-j$(expr $(nproc) / ${RATIO})"fiPARALLELISM="$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 scubaREPORT_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 commandsWRITE_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
 |