public abstract class AbstractQuorumTestCase extends TestCase3
MockQuorumFixture
.TestCase2.MyProperties, TestCase2.RandomType
Modifier and Type | Field and Description |
---|---|
protected MockQuorumFixture.MockQuorum.MockQuorumActor[] |
actors
The per-client quorum actor objects.
|
protected com.bigdata.quorum.MockQuorumFixture.MockQuorumMember[] |
clients
The clients.
|
protected MockQuorumFixture |
fixture
The mock shared quorum state object.
|
protected int |
k
The service replication factor (this must be set in
#setupUp() ). |
protected MockQuorumFixture.MockQuorum[] |
quorums
The per-client quorum objects.
|
_randomType, log
Constructor and Description |
---|
AbstractQuorumTestCase() |
AbstractQuorumTestCase(String name) |
Modifier and Type | Method and Description |
---|---|
static void |
assertCondition(Runnable cond,
long timeout,
TimeUnit units)
Wait up to a timeout until some condition succeeds.
|
protected void |
setUp() |
protected void |
tearDown() |
static String |
toString(Map<Long,UUID[]> votes)
Helper method provides nice rendering of a votes snapshot.
|
assertCondition, assertEquals, assertEquals, getBytes, getPort, getRandomData, getRandomData
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEqualsWithinUlps, assertSameArray, assertSameArray, assertSameBigDecimal, assertSameBigDecimal, assertSameBigInteger, assertSameBigInteger, assertSameIterator, assertSameIterator, assertSameIteratorAnyOrder, assertSameIteratorAnyOrder, assertSameValue, assertSameValue, assertZeroUlps, assertZeroUlps, fail, getInnerCause, getNormalInt, getProjectBuildPath, getProperties, getRandomObject, getRandomObject, getRandomOrder, getRandomString, getTestInputStream, getTestResource, getTestResource, getUlps, getUlps, isDEBUG, isDEBUG, isINFO, isINFO, isInnerCause, logProperties
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, createResult, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, runTest, setName, toString
protected int k
#setupUp()
).protected MockQuorumFixture.MockQuorum[] quorums
protected com.bigdata.quorum.MockQuorumFixture.MockQuorumMember[] clients
protected MockQuorumFixture.MockQuorum.MockQuorumActor[] actors
protected MockQuorumFixture fixture
public AbstractQuorumTestCase()
public AbstractQuorumTestCase(String name)
protected void tearDown() throws Exception
public static void assertCondition(Runnable cond, long timeout, TimeUnit units)
Whenever more than one AbstractQuorum
is under test there will be
concurrent indeterminism concerning the precise ordering and timing as
updates propagate from the AbstractQuorum
which takes some action
(castVote(), pipelineAdd(), etc.) to the other quorums attached to the
same MockQuorumFixture
. This uncertainty about the ordering and
timing state changes is not dissimilar from the uncertainty we face in a
real distributed system.
While there are times when this uncertainty does not affect the behavior of the tests, there are other times when we must have a guarantee that a specific vote order or pipeline order was established. For those cases, this method may be used to await an arbitrary condition. This method simply retries until the condition becomes true, sleeping a little after each failure.
Actions executed in the main thread of the unit test will directly update
the internal state of the MockQuorumFixture
, which is shared
across the MockQuorumFixture.MockQuorum
s. However, uncertainty about ordering can
arise as a result of the interleaving of the actions taken by the
QuorumWatcher
s in response to both top-level actions and actions
taken by other QuorumWatcher
s. For example, the vote order or the
pipeline order are fully determined based on sequence such as the
following:
actor0.pipelineAdd(); actor2.pipelineAdd(); actor1.pipelineAdd();When in doubt, or when a unit test displays stochastic behavior, you can use this method to wait until the quorum state has been correctly replicated to the
Quorum
s under test.cond
- The condition, which must throw an
AssertionFailedError
if it does not succeed.timeout
- The timeout.unit
- junit.framework.AssertionFailedError
- if the condition does not succeed within the timeout.public static String toString(Map<Long,UUID[]> votes)
Note: The snapshot uses a UUID
[] rather than a collection for
each lastCommitTime
key. However, by default toString() for
an array does not provide a nice rendering.
votes
- The votes.Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.