Does it exit like segment when CHECK_xxx failed? Or exit until finish all test cases? On Mar 16, 2016 11:03 PM, "Joseph Wu" <jos...@mesosphere.io> wrote:
> Hello Devs & Contributors, > > We recently committed a refactor of the MesosTest suite and underlying > "Cluster" abstraction. This affects almost every existing test and future > test, so here's a summary of what has changed and what you should be aware > of: > > - The purpose of the refactor is to make the entire test suite more > resilient to flaky tests. Before, every test that used the " > MesosTest::StartMaster" and "MesosTest::StartSlave" helpers also needed > to have "Shutdown()" at the end of the test. If the test failed an > assertion or expectation, it would exit before "Shutdown()" and would > very likely segfault, or hit a "__cxa_pure_virtual__" and exit with a > cryptic stack trace. > - The signatures of "MesosTest::StartMaster" and "MesosTest::StartSlave" > have changed. Both test helpers now return a " > Try<Owned<cluster::Master/Slave>" Instead of a "Try<PID<Master/Slave>>". > To way to access the "PID" was changed from ".get()" to ".get()->pid". > - "Shutdown()" has been removed from MesosTest. It is no longer > necessary. > - The MasterDetector has been exposed at the top-level for all slaves. > This slave dependency was originally populated by the "Cluster" > abstraction > (which held both Masters and Slaves). In most cases, it will be > sufficient > to create the detector like: > > Owned<MasterDetector> detector = master->createDetector(); > - If you need to restart the master in the middle of a test, just reset > the underlying "Owned" pointer. i.e: > > master->reset(); > master = StartMaster(); > > Note: We can't assign master before resetting the pointer. This is a > limitation related to supporting multiple masters in tests, which is > currently not possible. > - If you need to restart the slave in the middle of a test, there are > several ways: > - To clean up any containers associated with that slave: > slave = StartSlave(...); > > Or: > slave.reset(); > slave = StartSlave(...); > - To stop a slave without container cleanup (equivalent to the > original "MesosTest::Stop()"), use: > slave->terminate(); > > Or: > slave->shutdown(); > > These two methods emulate turning off the slave, but have slightly > different semantics. "Terminate" generally emulates a crash. > "Shutdown" > emulates a graceful exit. > > If you have any further questions, feel free to ask. There are still quite > a few improvements to make, but those will likely be less disruptive. > > ~Joseph >