Got it, thank you for explanation.

On Thu, Mar 17, 2016 at 12:51 AM, Joseph Wu <jos...@mesosphere.io> wrote:

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



-- 
Best Regards,
Haosdent Huang

Reply via email to