Skip to content

Commit

Permalink
Merge eb9952b into ed998c2
Browse files Browse the repository at this point in the history
  • Loading branch information
mapingo committed May 23, 2019
2 parents ed998c2 + eb9952b commit 0e7a106
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 67 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package uk.gov.justice.services.eventsourcing.repository.jdbc.event;

import uk.gov.justice.services.eventsourcing.publishedevent.jdbc.DatabaseTableTruncator;

import java.sql.SQLException;

import javax.sql.DataSource;

public class PublishedEventTableTruncator {

private final DataSource datasource;
private final DatabaseTableTruncator databaseTableTruncator;

public PublishedEventTableTruncator(final DataSource datasource) {
this.datasource = datasource;
this.databaseTableTruncator = new DatabaseTableTruncator();
}

public void truncate() throws SQLException {
databaseTableTruncator.truncate("published_event", datasource);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.EventJdbcRepository;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.EventRepositoryFactory;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.EventStreamJdbsRepositoryFactory;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.LinkedEventRepositoryTruncator;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.PublishedEventTableTruncator;
import uk.gov.justice.services.eventsourcing.repository.jdbc.eventstream.EventStreamJdbcRepository;
import uk.gov.justice.services.eventsourcing.repository.jdbc.exception.InvalidPositionException;
import uk.gov.justice.services.example.cakeshop.it.helpers.CakeshopEventGenerator;
Expand Down Expand Up @@ -49,7 +49,7 @@ public class CakeShopReplayEventsIT {
private final DataSource eventStoreDataSource = new DatabaseManager().initEventStoreDb();
private final DataSource viewStoreDataSource = new DatabaseManager().initViewStoreDb();
private final EventJdbcRepository eventJdbcRepository = new EventRepositoryFactory().getEventJdbcRepository(eventStoreDataSource);
private final LinkedEventRepositoryTruncator linkedEventRepositoryTruncator = new LinkedEventRepositoryTruncator(eventStoreDataSource);
private final PublishedEventTableTruncator publishedEventTableTruncator = new PublishedEventTableTruncator(eventStoreDataSource);

private final EventStreamJdbsRepositoryFactory eventStreamJdbcRepositoryFactory = new EventStreamJdbsRepositoryFactory();
private final EventStreamJdbcRepository eventStreamJdbcRepository = eventStreamJdbcRepositoryFactory.getEventStreamJdbcRepository(eventStoreDataSource);
Expand Down Expand Up @@ -148,7 +148,7 @@ private void truncateEventLog() throws SQLException {
final Stream<Event> eventStream = eventJdbcRepository.findAll();
eventStream.forEach(event -> eventJdbcRepository.clear(event.getStreamId()));

linkedEventRepositoryTruncator.truncate();
publishedEventTableTruncator.truncate();
}

private void runCatchup() throws Exception {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.EventJdbcRepository;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.EventRepositoryFactory;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.EventStreamJdbsRepositoryFactory;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.LinkedEventRepositoryTruncator;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.PublishedEventTableTruncator;
import uk.gov.justice.services.eventsourcing.repository.jdbc.eventstream.EventStreamJdbcRepository;
import uk.gov.justice.services.eventsourcing.repository.jdbc.exception.InvalidPositionException;
import uk.gov.justice.services.example.cakeshop.it.helpers.CakeshopEventGenerator;
Expand All @@ -22,8 +22,6 @@
import uk.gov.justice.services.example.cakeshop.it.helpers.StandaloneStreamStatusJdbcRepositoryFactory;
import uk.gov.justice.services.jmx.Catchup;
import uk.gov.justice.services.jmx.CatchupMBean;
import uk.gov.justice.services.jmx.Shuttering;
import uk.gov.justice.services.jmx.ShutteringMBean;
import uk.gov.justice.services.test.utils.core.messaging.Poller;

import java.sql.SQLException;
Expand All @@ -48,7 +46,7 @@ public class CatchupPerformanceIT {
private final DataSource eventStoreDataSource = new DatabaseManager().initEventStoreDb();
private final DataSource viewStoreDataSource = new DatabaseManager().initViewStoreDb();
private final EventJdbcRepository eventJdbcRepository = new EventRepositoryFactory().getEventJdbcRepository(eventStoreDataSource);
private final LinkedEventRepositoryTruncator linkedEventRepositoryTruncator = new LinkedEventRepositoryTruncator(eventStoreDataSource);
private final PublishedEventTableTruncator publishedEventTableTruncator = new PublishedEventTableTruncator(eventStoreDataSource);

private final EventStreamJdbsRepositoryFactory eventStreamJdbcRepositoryFactory = new EventStreamJdbsRepositoryFactory();
private final EventStreamJdbcRepository eventStreamJdbcRepository = eventStreamJdbcRepositoryFactory.getEventStreamJdbcRepository(eventStoreDataSource);
Expand All @@ -74,27 +72,13 @@ public void cleanup() {
client.close();
}

@After
public void unShutter() throws Exception {

try (final JMXConnector jmxConnector = mBeanHelper.getJMXConnector()) {
final MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();

final ObjectName objectName = new ObjectName("shuttering", "type", Shuttering.class.getSimpleName());

mBeanHelper.getMbeanProxy(connection, objectName, ShutteringMBean.class).doUnshutteringRequested();
}
}

@Test
public void shouldReplayAndFindRecipesInViewStore() throws Exception {

final int numberOfStreams = 10;
final int numberOfEventsPerStream = 100;
final int totalEvents = numberOfStreams * numberOfEventsPerStream;

shutter();

truncateEventLog();
recipeTableInspector.truncateViewstoreTables();

Expand All @@ -111,10 +95,25 @@ public void shouldReplayAndFindRecipesInViewStore() throws Exception {

if (numberOfEvents.isPresent()) {
System.out.println("Inserted " + numberOfEvents.get() + " events");
} else {
} else {
fail("Failed to insert " + totalEvents + " events");
}

for (final UUID streamId : streamIds) {

final Optional<Long> eventCount = longPoller.pollUntilFound(() -> {
final long eventsPerStream = recipeTableInspector.countEventsPerStream(streamId);
if (eventsPerStream == numberOfEventsPerStream) {
return of(eventsPerStream);
}

return empty();
});

if (!eventCount.isPresent()) {
fail();
}
}

recipeTableInspector.truncateViewstoreTables();

Expand All @@ -127,7 +126,7 @@ public void shouldReplayAndFindRecipesInViewStore() throws Exception {
}


for(final UUID streamId: streamIds) {
for (final UUID streamId : streamIds) {

final Optional<Long> eventCount = longPoller.pollUntilFound(() -> {
final long eventsPerStream = recipeTableInspector.countEventsPerStream(streamId);
Expand All @@ -138,7 +137,7 @@ public void shouldReplayAndFindRecipesInViewStore() throws Exception {
return empty();
});

if (! eventCount.isPresent()) {
if (!eventCount.isPresent()) {
fail();
}
}
Expand Down Expand Up @@ -177,18 +176,7 @@ private void truncateEventLog() throws SQLException {
final Stream<Event> eventStream = eventJdbcRepository.findAll();
eventStream.forEach(event -> eventJdbcRepository.clear(event.getStreamId()));

linkedEventRepositoryTruncator.truncate();
}

private void shutter() throws Exception {

try (final JMXConnector jmxConnector = mBeanHelper.getJMXConnector()) {
final MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();

final ObjectName objectName = new ObjectName("shuttering", "type", Shuttering.class.getSimpleName());

mBeanHelper.getMbeanProxy(connection, objectName, ShutteringMBean.class).doShutteringRequested();
}
publishedEventTableTruncator.truncate();
}

private void runCatchup() throws Exception {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,27 +71,31 @@ public void cleanup() throws MalformedObjectNameException, IntrospectionExceptio
}

@Test
public void shouldNotReturnRecipesAfterShuttering() throws MalformedObjectNameException, IntrospectionException, ReflectionException, InstanceNotFoundException, IOException {
public void shouldNotReturnRecipesAfterShuttering() throws Exception {
//invoke shuttering
invokeShuttering(true);

//add 2 recipes
final String recipeId = addRecipe(MARBLE_CAKE);
final String recipeId2 = addRecipe(CARROT_CAKE);

Thread.sleep(5000L);

//check recipes have not been added due to shuttering
verifyRecipeAdded(recipeId, recipeId2, null, null, false, NOT_FOUND);
}

@Test
public void shouldQueryForRecipesAfterUnShuttering() throws MalformedObjectNameException, IntrospectionException, ReflectionException, InstanceNotFoundException, IOException {
public void shouldQueryForRecipesAfterUnShuttering() throws Exception {
//invoke shuttering
invokeShuttering(true);

//add more recipes
final String recipeId = addRecipe(MARBLE_CAKE);
final String recipeId2 = addRecipe(CARROT_CAKE);

Thread.sleep(5000L);

//check recipes have not been added due to shuttering
verifyRecipeAdded(recipeId, recipeId2, null, null, false, NOT_FOUND);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,6 @@
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.ejb3">
<level name="ERROR"/>
</logger>
<logger category="org.jboss.as.config">
<level name="WARN"/>
</logger>
Expand Down Expand Up @@ -443,6 +440,8 @@
<simple name="java:/app/example-single/audit.blacklist" value="example.*" type="java.lang.String"/>
<simple name="java:/app/example-single/default.strategy.snapshot.threshold" value="3" type="java.lang.String"/>
<simple name="java:global/envelope.validation.exception.handler" value="uk.gov.justice.services.core.envelope.RethrowingValidationExceptionHandler" type="java.lang.String"/>
<simple name="java:global/pre.publish.timer.max.runtime.milliseconds" value="485" type="java.lang.String"/>
<simple name="java:global/event.dequer.timer.max.runtime.milliseconds" value="485" type="java.lang.String"/>
</bindings>
<remote-naming/>
</subsystem>
Expand Down
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
<properties>
<cpp.repo.name>cake-shop</cpp.repo.name>
<common-bom.version>2.0.2</common-bom.version>
<framework.version>6.0.0-M24</framework.version>
<framework.version>6.0.0-M26</framework.version>
<embedded-artemis.version>1.2.0</embedded-artemis.version>
<event-store.version>2.0.0-M25</event-store.version>
<framework-generators.version>2.0.0-M18</framework-generators.version>
<event-store.version>2.0.0-M27</event-store.version>
<framework-generators.version>2.0.0-M20</framework-generators.version>
<file.service.version>1.17.7</file.service.version>
<framework-api.version>4.0.0-M20</framework-api.version>
<framework-api.version>4.0.0-M21</framework-api.version>
<generator-maven-plugin.version>2.7.0</generator-maven-plugin.version>
<json-schema-catalog.version>1.7.0</json-schema-catalog.version>
<jboss-ejb3-ext-api.version>2.2.0.Final</jboss-ejb3-ext-api.version>
Expand Down

0 comments on commit 0e7a106

Please sign in to comment.