/** * Make sure that the transformation from an Execution Trace to a Message * Trace is performed only once. * * @throws InvalidTraceException * If the internally assembled execution trace is somehow invalid. */ @Test public void testMessageTraceTransformationOnlyOnce() throws InvalidTraceException { final ExecutionTrace executionTrace = this.genValidBookstoreTrace(); // Transform Execution Trace to Message Trace representation (twice) and make sure, that the instances are the same. final MessageTrace messageTrace1 = executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); final MessageTrace messageTrace2 = executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); Assert.assertSame(messageTrace1, messageTrace2); }
private List<Object> createTraces() throws InvalidTraceException { final List<Object> traces = new ArrayList<Object>(3); traces.add(this.createValidExecutionTrace()); traces.add(this.createInvalidExecutionTrace()); traces.add(this.createExecutionTraceForValidMessageTrace().toMessageTrace(SystemModelRepository.ROOT_EXECUTION)); return traces; }
if (this.equivalenceMode == TraceEquivalenceClassModes.DISABLED) { super.deliver(OUTPUT_PORT_NAME_EXECUTION_TRACE_REPRESENTATIVES, et); super.deliver(OUTPUT_PORT_NAME_MESSAGE_TRACE_REPRESENTATIVES, et.toMessageTrace(SystemModelRepository.ROOT_EXECUTION)); } else { // mode is ASSEMBLY or ALLOCATION final AbstractExecutionTraceHashContainer polledTraceHashContainer; super.deliver(OUTPUT_PORT_NAME_EXECUTION_TRACE_REPRESENTATIVES, et); super.deliver(OUTPUT_PORT_NAME_MESSAGE_TRACE_REPRESENTATIVES, et.toMessageTrace(SystemModelRepository.ROOT_EXECUTION)); } else { numOccurences.incrementAndGet();
/** * Assert that the transformation of a broken execution trace version of the * "well-known" Bookstore trace leads to an exception. * * The trace is broken in that the eoi/ess values of an execution with eoi/ess * [1,1] are replaced by the eoi/ess values [1,3]. Since ess values must only * increment/decrement by 1, this test must lead to an exception. * * @throws InvalidTraceException * If the internally assembled execution trace is somehow invalid. */ @Test(expected = InvalidTraceException.class) public void testMessageTraceTransformationBrokenTraceEssSkip() throws InvalidTraceException { final ExecutionTrace executionTrace = this.genBrokenBookstoreTraceEssSkip(); // Transform Execution Trace to Message Trace representation // The following call must throw an Exception in this test case executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); }
final MessageTrace messageTrace = executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); super.deliver(OUTPUT_PORT_NAME_EXECUTION_TRACE, executionTrace); super.deliver(OUTPUT_PORT_NAME_MESSAGE_TRACE, messageTrace);
/** * Assert that the transformation of a broken execution trace version of the * "well-known" Bookstore trace leads to an exception. * * The trace is broken in that the eoi/ess values of an execution with eoi/ess * [3,2] are replaced by the eoi/ess values [4,2]. Since eoi values must only * increment by 1, this test must lead to an exception. * * @throws InvalidTraceException * If the internally assembled execution trace is somehow invalid. */ @Test(expected = InvalidTraceException.class) public void testMessageTraceTransformationBrokenTraceEoiSkip() throws InvalidTraceException { // Create an Execution Trace and add Executions in arbitrary order final ExecutionTrace executionTrace = this.genBrokenBookstoreTraceEoiSkip(); // Transform Execution Trace to Message Trace representation // The following call must throw an Exception in this test case executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); } }
private ExecutionTrace createValidExecutionTrace() throws InvalidTraceException { final ExecutionTrace execTrace = new ExecutionTrace(AbstractTraceWriterFilterTest.TRACE_ID_VALID_EXEC_TRACE); execTrace.add(this.execFactory.createBookstoreExecution_exec0_0__bookstore_searchBook(AbstractTraceWriterFilterTest.TRACE_ID_VALID_EXEC_TRACE, AbstractTraceWriterFilterTest.SESSION_ID, AbstractTraceWriterFilterTest.HOSTNAME, AbstractTraceWriterFilterTest.INITIAL_TIMESTAMP_VALID_EXEC_TRACE + BookstoreEventRecordFactory.TSTAMP_OFFSET_entry0_0__bookstore_searchBook, AbstractTraceWriterFilterTest.INITIAL_TIMESTAMP_VALID_EXEC_TRACE + BookstoreEventRecordFactory.TSTAMP_OFFSET_exit0_0__bookstore_searchBook, false)); // assumed execTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); // just to make sure this trace is really valid return execTrace; }
private ExecutionTrace createExecutionTraceForValidMessageTrace() throws InvalidTraceException { final ExecutionTrace execTrace = new ExecutionTrace(AbstractTraceWriterFilterTest.TRACE_ID_VALID_EXEC_TRACE); execTrace.add(this.execFactory.createBookstoreExecution_exec0_0__bookstore_searchBook(AbstractTraceWriterFilterTest.TRACE_ID_VALID_MSG_TRACE, AbstractTraceWriterFilterTest.SESSION_ID, AbstractTraceWriterFilterTest.HOSTNAME, AbstractTraceWriterFilterTest.INITIAL_TIMESTAMP_VALID_MESSAGE_TRACE + BookstoreEventRecordFactory.TSTAMP_OFFSET_entry0_0__bookstore_searchBook, AbstractTraceWriterFilterTest.INITIAL_TIMESTAMP_VALID_MESSAGE_TRACE + BookstoreEventRecordFactory.TSTAMP_OFFSET_exit0_0__bookstore_searchBook, false)); // assumed execTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); // just to make sure this trace is really valid return execTrace; }
try { final MessageTrace mt = executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION);
/** * Make sure that the transformation from an Execution Trace to a Message * Trace is performed only once. * * @throws InvalidTraceException * If the internally assembled execution trace is somehow invalid. */ @Test public void testMessageTraceTransformationTwiceOnChange() throws InvalidTraceException { final ExecutionTrace executionTrace = this.genValidBookstoreTrace(); final Execution exec4_1__catalog_getBook = this.eFactory // NOCS .genExecution("Catalog", "catalog", "getBook", TestExecutionTraceBookstore.TRACE_ID, TestExecutionTraceBookstore.SESSION_ID, 9, 10, 4, 1); final MessageTrace messageTrace1 = executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); executionTrace.add(exec4_1__catalog_getBook); final MessageTrace messageTrace2 = executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); Assert.assertNotSame(messageTrace1, messageTrace2); }
private InvalidExecutionTrace createInvalidExecutionTrace() throws InvalidTraceException { final ExecutionTrace execTrace = new ExecutionTrace(AbstractTraceWriterFilterTest.TRACE_ID_VALID_EXEC_TRACE); execTrace.add(this.execFactory.createBookstoreExecution_exec1_1__catalog_getBook(AbstractTraceWriterFilterTest.TRACE_ID_INVALID_EXEC_TRACE, AbstractTraceWriterFilterTest.SESSION_ID, AbstractTraceWriterFilterTest.HOSTNAME, AbstractTraceWriterFilterTest.INITIAL_TIMESTAMP_INVALID_EXEC_TRACE + BookstoreEventRecordFactory.TSTAMP_OFFSET_entry1_1__catalog_getBook, AbstractTraceWriterFilterTest.INITIAL_TIMESTAMP_INVALID_EXEC_TRACE + BookstoreEventRecordFactory.TSTAMP_OFFSET_exit1_1__catalog_getBook, false)); // assumed try { execTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); Assert.fail("Test invalid: wanted to create an *invalid* trace"); } catch (final InvalidTraceException e) { // NOPMD (EmptyCatchBlock) // that's what we expect here } return new InvalidExecutionTrace(execTrace); }
/** * Generates an execution trace representation of the "well-known" bookstore trace. * * @return * @throws InvalidTraceException * If the internally assembled execution trace is somehow invalid. */ private ExecutionTrace genValidBookstoreTrace() throws InvalidTraceException { // Create an Execution Trace and add Executions in arbitrary order final ExecutionTrace executionTrace = new ExecutionTrace(TestTraceReconstructionFilter.TRACE_ID, TestTraceReconstructionFilter.SESSION_ID); executionTrace.add(this.exec3_2__catalog_getBook); executionTrace.add(this.exec2_1__crm_getOrders); executionTrace.add(this.exec0_0__bookstore_searchBook); executionTrace.add(this.exec1_1__catalog_getBook); executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); return executionTrace; }
/** * Generates an execution trace representation of the "well-known" bookstore * trace. * * Borrowed from {@link kieker.test.tools.junit.traceAnalysis.filter.TestTraceReconstructionFilter}. * * @return * @throws InvalidTraceException * If the internally assembled execution trace is somehow invalid. */ private ExecutionTrace genValidBookstoreTrace() throws InvalidTraceException { // Create an Execution Trace and add Executions in arbitrary order final ExecutionTrace executionTrace = new ExecutionTrace(TestTraceEventRecords2ExecutionAndMessageTraceFilter.TRACE_ID, TestTraceEventRecords2ExecutionAndMessageTraceFilter.SESSION_ID); executionTrace.add(this.exec3_2__catalog_getBook); executionTrace.add(this.exec2_1__crm_getOrders); executionTrace.add(this.exec0_0__bookstore_searchBook); executionTrace.add(this.exec1_1__catalog_getBook); // just to make sure that this trace is valid executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); return executionTrace; }
executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION);
executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION);
@Test public void testValidTraceWithBeforeAndAfterOperationEvents() throws InvalidTraceException, IllegalStateException, AnalysisConfigurationException { // NOPMD // Create an EventRecordTrace, containing only Before- and AfterOperation events. final TraceEventRecords traceEvents = BookstoreEventRecordFactory.validSyncTraceBeforeAfterEvents(this.exec0_0__bookstore_searchBook.getTin(), TestTraceEventRecords2ExecutionAndMessageTraceFilter.TRACE_ID, TestTraceEventRecords2ExecutionAndMessageTraceFilter.SESSION_ID, TestTraceEventRecords2ExecutionAndMessageTraceFilter.HOSTNAME); final ExecutionTrace expectedExecutionTrace; { // NOCS // Create an Execution Trace and add Executions in arbitrary order expectedExecutionTrace = new ExecutionTrace(TestTraceEventRecords2ExecutionAndMessageTraceFilter.TRACE_ID, TestTraceEventRecords2ExecutionAndMessageTraceFilter.SESSION_ID); expectedExecutionTrace.add(this.exec3_2__catalog_getBook_assumed); // assumed because no call event expectedExecutionTrace.add(this.exec2_1__crm_getOrders_assumed); // assumed because no call event expectedExecutionTrace.add(this.exec0_0__bookstore_searchBook); expectedExecutionTrace.add(this.exec1_1__catalog_getBook_assumed); // assumed because no call event // just to make sure that this trace is valid expectedExecutionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION); } this.checkTrace(traceEvents, expectedExecutionTrace); }
executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION);
executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION);
executionTrace.add(exec1_1__catalog_getBook); executionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION);
validMessageTrace = validExecutionTrace.toMessageTrace(SystemModelRepository.ROOT_EXECUTION);