We tried to reduce segfaults of this particular pattern (de-referencing
out-of-scope stack variables), as much as possible.  This means the test
suite shouldn't crash due to flaky tests anymore.  And the test suite
should run to completion each time.

(I also replaced a bunch of CHECK_* statements in the tests with ASSERT_*.)

On Wed, Mar 16, 2016 at 8:27 AM, haosdent <haosd...@gmail.com> wrote:

> 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
> >
>

Reply via email to