Skip to content

MongoRocks' CI

wolfkdy edited this page Mar 15, 2020 · 1 revision

What's MongoRocks' CI

When we say mongoRocks' CI, we mean mongoDB's javascript tests and some of mongoRocks' cpptests in fact. as per this link.

MongoRocks' CppTests

To build mongoRocks' unittests, you'd build unittests by the command below:

scons unittests

Then you will get

  • storage_rocks_index_test
  • storage_rocks_record_store_test
  • storage_rocks_recovery_unit_test

in build directory. These are binaries so you can directly execute them.

MongoRocks' Javascript Tests

Mongodb's javascript tests are in mongodb's repo, not in mongoRocks' repo. So naturally, the javascript tests are designed for Mmap and WiredTiger engine. But fortunally, only a small set of javascript tests are not passed.

To run jstests, you should copy resmokelist and resmoke.sh to mongo's root build dir. and execute

sh resmoke.sh

The resmokelist will be extended when more jstests are analysed. It's encouraged that you run more jstests and make an issue to describe which suite is not passed, how to make it pass, pass it, add it into resmokelist and make a merge request.

Failed Javascript Tests and fail reason

CheckReplDBHash

It is known that some jstests fail with CheckReplDBHash, it fails because jstests hardcode a failpoint name. To workaround, do these things:

  • cd {build_root_dir}
  • find . -type f -name '*.js' |xargs grep WTPreserveSnapshotHistoryIndefinitely
  • replace these tags with RocksPreserveSnapshotHistoryIndefinitely

this will help with run_check_repl_dbhash_background.js

Why not integrate CI with github

Internal CI

github's built-in CI, as per this link says it has 2cores/7GB ram and 14GB disk space, which I believe in this env, a full compiling should take more than 5 hours, and the internal files generated by compiling definitely exceeds the disk space.

Self Hosted CI

To run mongodb's CI, I suggest you prepare a 16U32GB container/virtual machine/vps. This will cost more than 300 dollers per month on aws, which is far beyond my financial means. To donate, you may contact wolfkdy1989@gmail.com