Class JournalPerfSpec
- java.lang.Object
-
- org.apache.pekko.persistence.PluginSpec
-
- org.apache.pekko.persistence.journal.JournalSpec
-
- org.apache.pekko.persistence.journal.JournalPerfSpec
-
- All Implemented Interfaces:
java.io.Serializable
,CapabilityFlags
,JournalCapabilityFlags
,MayVerb
,OptionalTests
,TestKitBase
,org.scalactic.Explicitly
,org.scalactic.Tolerance
,org.scalactic.TripleEquals
,org.scalactic.TripleEqualsSupport
,org.scalatest.Alerting
,org.scalatest.Assertions
,org.scalatest.BeforeAndAfterAll
,org.scalatest.BeforeAndAfterEach
,org.scalatest.Documenting
,org.scalatest.Informing
,org.scalatest.matchers.dsl.MatcherWords
,org.scalatest.matchers.should.Matchers
,org.scalatest.Notifying
,org.scalatest.Suite
,org.scalatest.SuiteMixin
,org.scalatest.TestRegistration
,org.scalatest.TestSuite
,org.scalatest.verbs.CanVerb
,org.scalatest.verbs.MustVerb
,org.scalatest.verbs.ShouldVerb
,org.scalatest.wordspec.AnyWordSpecLike
- Direct Known Subclasses:
JavaJournalPerfSpec
public abstract class JournalPerfSpec extends JournalSpec
This spec measures execution times of the basic operations that anpekko.persistence.PersistentActor
provides, using the provided Journal (plugin).It is *NOT* meant to be a comprehensive benchmark, but rather aims to help plugin developers to easily determine if their plugin's performance is roughly as expected. It also validates the plugin still works under "more messages" scenarios.
In case your journal plugin needs some kind of setup or teardown, override the
beforeAll
orafterAll
methods (don't forget to callsuper
in your overridden methods).For a Java and JUnit consumable version of the TCK please refer to
pekko.persistence.japi.journal.JavaJournalPerfSpec
.- See Also:
pekko.persistence.journal.JournalSpec
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
JournalPerfSpec.BenchActor
static class
JournalPerfSpec.Cmd
static class
JournalPerfSpec.Cmd$
static class
JournalPerfSpec.ResetCounter$
-
Nested classes/interfaces inherited from interface org.scalatest.wordspec.AnyWordSpecLike
org.scalatest.wordspec.AnyWordSpecLike.AfterWord, org.scalatest.wordspec.AnyWordSpecLike.ItWord, org.scalatest.wordspec.AnyWordSpecLike.ResultOfTaggedAsInvocationOnString, org.scalatest.wordspec.AnyWordSpecLike.TheyWord, org.scalatest.wordspec.AnyWordSpecLike.WordSpecStringWrapper
-
Nested classes/interfaces inherited from interface org.scalatest.Assertions
org.scalatest.Assertions.AssertionsHelper
-
Nested classes/interfaces inherited from interface org.scalatest.verbs.CanVerb
org.scalatest.verbs.CanVerb.StringCanWrapperForVerb
-
Nested classes/interfaces inherited from interface org.scalactic.Explicitly
org.scalactic.Explicitly.DecidedByEquality<A extends java.lang.Object>, org.scalactic.Explicitly.DecidedWord, org.scalactic.Explicitly.DeterminedByEquivalence<T extends java.lang.Object>, org.scalactic.Explicitly.DeterminedWord, org.scalactic.Explicitly.TheAfterWord
-
Nested classes/interfaces inherited from interface org.scalatest.matchers.should.Matchers
org.scalatest.matchers.should.Matchers.AnWord, org.scalatest.matchers.should.Matchers.AnyShouldWrapper<T extends java.lang.Object>, org.scalatest.matchers.should.Matchers.AWord, org.scalatest.matchers.should.Matchers.Collected, org.scalatest.matchers.should.Matchers.HavePropertyMatcherGenerator, org.scalatest.matchers.should.Matchers.KeyWord, org.scalatest.matchers.should.Matchers.RegexWord, org.scalatest.matchers.should.Matchers.RegexWrapper, org.scalatest.matchers.should.Matchers.ResultOfBeWordForAny<T extends java.lang.Object>, org.scalatest.matchers.should.Matchers.ResultOfBeWordForCollectedAny<T extends java.lang.Object>, org.scalatest.matchers.should.Matchers.ResultOfBeWordForCollectedArray<T extends java.lang.Object>, org.scalatest.matchers.should.Matchers.ResultOfCollectedAny<T extends java.lang.Object>, org.scalatest.matchers.should.Matchers.ResultOfContainWordForCollectedAny<T extends java.lang.Object>, org.scalatest.matchers.should.Matchers.ResultOfEndWithWordForCollectedString, org.scalatest.matchers.should.Matchers.ResultOfEndWithWordForString, org.scalatest.matchers.should.Matchers.ResultOfFullyMatchWordForCollectedString, org.scalatest.matchers.should.Matchers.ResultOfFullyMatchWordForString, org.scalatest.matchers.should.Matchers.ResultOfHaveWordForCollectedExtent<A extends java.lang.Object>, org.scalatest.matchers.should.Matchers.ResultOfHaveWordForExtent<A extends java.lang.Object>, org.scalatest.matchers.should.Matchers.ResultOfIncludeWordForCollectedString, org.scalatest.matchers.should.Matchers.ResultOfIncludeWordForString, org.scalatest.matchers.should.Matchers.ResultOfNotWordForCollectedAny<T extends java.lang.Object>, org.scalatest.matchers.should.Matchers.ResultOfStartWithWordForCollectedString, org.scalatest.matchers.should.Matchers.ResultOfStartWithWordForString, org.scalatest.matchers.should.Matchers.StringShouldWrapper, org.scalatest.matchers.should.Matchers.TheSameInstanceAsPhrase, org.scalatest.matchers.should.Matchers.ValueWord
-
Nested classes/interfaces inherited from interface org.apache.pekko.persistence.scalatest.MayVerb
MayVerb.StringMayWrapperForVerb, MayVerb.TestCanceledByFailure, MayVerb.TestCanceledByFailure$
-
Nested classes/interfaces inherited from interface org.scalatest.verbs.MustVerb
org.scalatest.verbs.MustVerb.StringMustWrapperForVerb
-
Nested classes/interfaces inherited from interface org.scalatest.verbs.ShouldVerb
org.scalatest.verbs.ShouldVerb.StringShouldWrapperForVerb
-
Nested classes/interfaces inherited from interface org.scalatest.TestSuite
org.scalatest.TestSuite.NoArgTest, org.scalatest.TestSuite.NoArgTest$
-
Nested classes/interfaces inherited from interface org.scalactic.Tolerance
org.scalactic.Tolerance.PlusOrMinusWrapper<T extends java.lang.Object>
-
Nested classes/interfaces inherited from interface org.scalactic.TripleEqualsSupport
org.scalactic.TripleEqualsSupport.AToBEquivalenceConstraint<A extends java.lang.Object,B extends java.lang.Object>, org.scalactic.TripleEqualsSupport.BToAEquivalenceConstraint<A extends java.lang.Object,B extends java.lang.Object>, org.scalactic.TripleEqualsSupport.CheckingEqualizer<L extends java.lang.Object>, org.scalactic.TripleEqualsSupport.EqualityConstraint<A extends java.lang.Object,B extends java.lang.Object>, org.scalactic.TripleEqualsSupport.Equalizer<L extends java.lang.Object>, org.scalactic.TripleEqualsSupport.Spread<T extends java.lang.Object>, org.scalactic.TripleEqualsSupport.Spread$, org.scalactic.TripleEqualsSupport.TripleEqualsInvocation<T extends java.lang.Object>, org.scalactic.TripleEqualsSupport.TripleEqualsInvocation$, org.scalactic.TripleEqualsSupport.TripleEqualsInvocationOnSpread<T extends java.lang.Object>, org.scalactic.TripleEqualsSupport.TripleEqualsInvocationOnSpread$
-
-
Constructor Summary
Constructors Constructor Description JournalPerfSpec(com.typesafe.config.Config config)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
awaitDurationMillis()
Override in order to customize timeouts used for expectMsg, in order to tune the awaits to your journal's perfActorRef
benchActor(int replyAfter)
int
eventsCount()
Number of messages sent to the PersistentActor under test for each test iterationvoid
feedAndExpectLast(ActorRef actor, java.lang.String mode, scala.collection.immutable.Seq<java.lang.Object> cmnds)
void
measure(scala.Function1<scala.concurrent.duration.Duration,java.lang.String> msg, scala.Function0<scala.runtime.BoxedUnit> block)
Executes a block of code multiple times (no warm-up)int
measurementIterations()
Number of measurement iterations each test will be run.-
Methods inherited from class org.apache.pekko.persistence.journal.JournalSpec
beforeEach, config, journal, preparePersistenceId, replayedMessage, replayedMessage$default$2, supportsAtomicPersistAllOfSeveralEvents, supportsMetadata, supportsSerialization, system, writeMessages
-
Methods inherited from class org.apache.pekko.persistence.PluginSpec
a, actorInstanceId, after, afterAll, an, be, beforeAll, behave, compile, config, contain, decided, defined, determined, empty, endWith, exist, extension, fullyMatch, have, include, invokeBeforeAllAndAfterAllEvenIfNoTestsAreExpected, it, key, length, matchPattern, NoArgTest, not, org$scalactic$Explicitly$_setter_$after_$eq, org$scalactic$Explicitly$_setter_$decided_$eq, org$scalactic$Explicitly$_setter_$determined_$eq, org$scalatest$Assertions$_setter_$succeed_$eq, org$scalatest$BeforeAndAfterAll$_setter_$invokeBeforeAllAndAfterAllEvenIfNoTestsAreExpected_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$be_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$compile_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$contain_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$defined_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$empty_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$endWith_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$exist_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$fullyMatch_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$have_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$include_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$length_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$matchPattern_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$not_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$readable_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$size_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$sorted_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$startWith_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$typeCheck_$eq, org$scalatest$matchers$dsl$MatcherWords$_setter_$writable_$eq, org$scalatest$matchers$should$Matchers$_setter_$a_$eq, org$scalatest$matchers$should$Matchers$_setter_$an_$eq, org$scalatest$matchers$should$Matchers$_setter_$key_$eq, org$scalatest$matchers$should$Matchers$_setter_$regex_$eq, org$scalatest$matchers$should$Matchers$_setter_$theSameInstanceAs_$eq, org$scalatest$matchers$should$Matchers$_setter_$value_$eq, org$scalatest$Suite$_setter_$styleName_$eq, org$scalatest$wordspec$AnyWordSpecLike$_setter_$behave_$eq, org$scalatest$wordspec$AnyWordSpecLike$_setter_$it_$eq, org$scalatest$wordspec$AnyWordSpecLike$_setter_$stackDepth_$eq, org$scalatest$wordspec$AnyWordSpecLike$_setter_$styleName_$eq, org$scalatest$wordspec$AnyWordSpecLike$_setter_$subjectRegistrationFunction_$eq, org$scalatest$wordspec$AnyWordSpecLike$_setter_$subjectWithAfterWordRegistrationFunction_$eq, org$scalatest$wordspec$AnyWordSpecLike$_setter_$they_$eq, pid, readable, regex, size, sorted, startWith, styleName, subjectRegistrationFunction, subjectWithAfterWordRegistrationFunction, subscribe, succeed, testActor, theSameInstanceAs, they, typeCheck, value, writable, writerUuid
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.scalatest.wordspec.AnyWordSpecLike
afterWord, alert, convertToWordSpecStringWrapper, info, markup, note, org$scalatest$wordspec$AnyWordSpecLike$_setter_$org$scalatest$wordspec$AnyWordSpecLike$$engine_$eq, org$scalatest$wordspec$AnyWordSpecLike$$engine, org$scalatest$wordspec$AnyWordSpecLike$$registerBranch, org$scalatest$wordspec$AnyWordSpecLike$$registerShorthandBranch, org$scalatest$wordspec$AnyWordSpecLike$$registerTestToIgnore, org$scalatest$wordspec$AnyWordSpecLike$$registerTestToRun, registerIgnoredTest, registerTest, run, runTest, runTests, tags, testDataFor, testDataFor$default$2, testNames
-
Methods inherited from interface org.scalatest.Assertions
assertResult, assertResult, assertThrows, cancel, cancel, cancel, cancel, fail, fail, fail, fail, intercept, newAssertionFailedException, newTestCanceledException, pending, pendingUntilFixed, withClue
-
Methods inherited from interface org.apache.pekko.persistence.JournalCapabilityFlags
supportsRejectingNonSerializableObjects
-
Methods inherited from interface org.scalatest.matchers.should.Matchers
$greater, $greater$eq, $less, $less$eq, a, all, all, all, all, allElementsOf, allOf, an, atLeast, atLeast, atLeast, atLeast, atLeastOneElementOf, atLeastOneOf, atMost, atMost, atMost, atMost, atMostOneElementOf, atMostOneOf, between, between, between, convertSymbolToHavePropertyMatcherGenerator, convertToAnyShouldWrapper, convertToRegexWrapper, convertToStringShouldWrapper, definedAt, doCollected, equal, equal, every, every, every, every, exactly, exactly, exactly, exactly, inOrder, inOrderElementsOf, inOrderOnly, message, no, no, no, noElementsOf, noneOf, of, oneElementOf, oneOf, only, org$scalatest$matchers$should$Matchers$_setter_$org$scalatest$matchers$should$Matchers$$AllCollected_$eq, org$scalatest$matchers$should$Matchers$_setter_$org$scalatest$matchers$should$Matchers$$EveryCollected_$eq, org$scalatest$matchers$should$Matchers$_setter_$org$scalatest$matchers$should$Matchers$$NoCollected_$eq, org$scalatest$matchers$should$Matchers$_setter_$org$scalatest$matchers$should$Matchers$$ShouldMethodHelper_$eq, org$scalatest$matchers$should$Matchers$$AllCollected, org$scalatest$matchers$should$Matchers$$AtLeastCollected, org$scalatest$matchers$should$Matchers$$AtMostCollected, org$scalatest$matchers$should$Matchers$$BetweenCollected, org$scalatest$matchers$should$Matchers$$EveryCollected, org$scalatest$matchers$should$Matchers$$ExactlyCollected, org$scalatest$matchers$should$Matchers$$NoCollected, org$scalatest$matchers$should$Matchers$$ShouldMethodHelper, the, theSameElementsAs, theSameElementsInOrderAs, thrownBy
-
Methods inherited from interface org.apache.pekko.persistence.scalatest.MayVerb
convertToStringMayWrapper, mayVerbStacktraceContextFrames, optional
-
Methods inherited from interface org.apache.pekko.persistence.scalatest.OptionalTests
optional
-
Methods inherited from interface org.scalatest.Suite
createCatchReporter, execute, execute$default$1, execute$default$2, execute$default$3, execute$default$4, execute$default$5, execute$default$6, execute$default$7, expectedTestCount, nestedSuites, rerunner, runNestedSuites, suiteId, suiteName
-
Methods inherited from interface org.scalatest.SuiteMixin
expectedTestCount, nestedSuites, rerunner, runNestedSuites, runTests, suiteId, suiteName, tags, testDataFor, testNames
-
Methods inherited from interface org.apache.pekko.testkit.TestKitBase
assertForDuration, assertForDuration$default$3, awaitAssert, awaitAssert$default$2, awaitAssert$default$3, awaitCond, awaitCond$default$2, awaitCond$default$3, awaitCond$default$4, checkMissingAndUnexpected, childActorOf, childActorOf, childActorOf, childActorOf, end_$eq, expectMsg, expectMsg, expectMsg, expectMsg_internal, expectMsg_internal$default$3, expectMsgAllClassOf, expectMsgAllClassOf, expectMsgAllConformingOf, expectMsgAllConformingOf, expectMsgAllOf, expectMsgAllOf, expectMsgAllOf_internal, expectMsgAnyClassOf, expectMsgAnyClassOf, expectMsgAnyClassOf_internal, expectMsgAnyOf, expectMsgAnyOf, expectMsgAnyOf_internal, expectMsgClass, expectMsgClass, expectMsgClass_internal, expectMsgPF, expectMsgPF$default$1, expectMsgPF$default$2, expectMsgType, expectMsgType, expectNoMessage, expectNoMessage, expectNoMsg, expectNoMsg, expectNoMsg_internal, expectTerminated, expectTerminated$default$2, fishForMessage, fishForMessage$default$1, fishForMessage$default$2, fishForSpecificMessage, fishForSpecificMessage$default$1, fishForSpecificMessage$default$2, format, ignoreMsg, ignoreNoMsg, internalExpectMsgAllClassOf, internalExpectMsgAllConformingOf, lastSender, lastWasNoMsg_$eq, msgAvailable, now, receiveN, receiveN, receiveN_internal, receiveOne, receiveWhile, receiveWhile$default$1, receiveWhile$default$2, receiveWhile$default$3, remaining, remainingOr, remainingOrDefault, remainingOrDilated, setAutoPilot, shutdown, shutdown$default$1, shutdown$default$2, shutdown$default$3, testActorName, testKitSettings, unwatch, watch, within, within
-
Methods inherited from interface org.scalactic.TripleEquals
conversionCheckedConstraint, convertEquivalenceToAToBConstraint, convertEquivalenceToAToBConversionConstraint, convertEquivalenceToBToAConstraint, convertEquivalenceToBToAConversionConstraint, convertToCheckingEqualizer, convertToEqualizer, lowPriorityConversionCheckedConstraint, lowPriorityTypeCheckedConstraint, typeCheckedConstraint, unconstrainedEquality
-
-
-
-
Method Detail
-
benchActor
public ActorRef benchActor(int replyAfter)
-
feedAndExpectLast
public void feedAndExpectLast(ActorRef actor, java.lang.String mode, scala.collection.immutable.Seq<java.lang.Object> cmnds)
-
measure
public void measure(scala.Function1<scala.concurrent.duration.Duration,java.lang.String> msg, scala.Function0<scala.runtime.BoxedUnit> block)
Executes a block of code multiple times (no warm-up)
-
awaitDurationMillis
public long awaitDurationMillis()
Override in order to customize timeouts used for expectMsg, in order to tune the awaits to your journal's perf
-
eventsCount
public int eventsCount()
Number of messages sent to the PersistentActor under test for each test iteration
-
measurementIterations
public int measurementIterations()
Number of measurement iterations each test will be run.
-
-