Skip to content
This repository has been archived by the owner on May 26, 2020. It is now read-only.

Commit

Permalink
Merge 15dc7bb into 4310b0f
Browse files Browse the repository at this point in the history
  • Loading branch information
Allan Mckenzie committed Dec 28, 2018
2 parents 4310b0f + 15dc7bb commit 6c509c7
Show file tree
Hide file tree
Showing 11 changed files with 220 additions and 271 deletions.
22 changes: 16 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,39 @@ dist: trusty
sudo: required
language: java
jdk:
- oraclejdk8
- oraclejdk8
git:
depth: 3
cache:
directories:
- "$HOME/.m2"
- "$HOME/.m2"
services:
- postgresql
before_script:
- psql -c 'create database frameworkeventstore;' -U postgres
- psql -c 'create database frameworkviewstore;' -U postgres
- psql -c 'create database frameworkfilestore;' -U postgres
- psql -c 'create database frameworkjobstore;' -U postgres
- psql -c "CREATE USER framework WITH PASSWORD 'framework';" -U postgres
addons:
postgresql: '9.5'
sonarcloud:
organization: cjscommonplatform
token:
secure: V3K4bDM9bhHYtX6+JiLLy1IZ6VbT5oo1UlFVXLZhG1BrdsmdOHc+VXqdeVDpu4z6Sr6Te9ky6AYIeAWN4hjkJowvqgzptNPeXIo6WdLKygsAOVcEJy6m556jQR/toGNqiwiOaepbdpCcNDNVEcEEbUi9FEBMAAIdFbmLRCNUdBIxKsdm9sn8IFnWT/lida9W6QHjx7kci/H2FeCOn13OxWa6+SgJVD8V5Gn4DNG+g56P29hZpfEgaUQl6hmdfb5/K6ChWufXxh4UUjMc6c3QkpmM95t5r8fTCKCqB9thD5v3vLffZbgwB/dl3E6BBxSG0rnz9HTi22tcmP9y5P3KwjGcFG14VR+3F5t9/fI68R4RDWywO8dT+mPTi+ZY1mKnzvSoAWVKbfXPTrOaifelI4df0aLbyxe5Xeqi9xxlt8B39Z3KK+3RL5guUz6Tq4yoBFjVnJLOl1iM9hvMbx8yXBpO47H8gYkhRW2UORVJb5YZ7TufgiCnr3E9bwOVjvC06xz+bg1DOKaeghLAPxGrwr8VHEVo99CxFf4Ud2viKBUUO4q3ONamG3FhmNhDcqTtJ6rMKl2nkukFxm2//qn8dAGlmRkFsv9STZ1O5mUZqXxPX62Gd8xoPVAashckyzj5YRGjOq3MNtTl7UUnS+zEBGitJH1XzR58NbDQmAlSKbM=
github_token:
secure: kMzDumuQPiAp1/d7ut2rb0aR+hC1OGSIxZByTm4Wb8lSdIcPsmoTmWx8fwDrNv/jOO9h9l/u8v8ENq/X9CsyOiEeLb0hs0wLeom9lQXPw7+Ae5dgfjeqfl/bPBQu4DXumWbI0TgakZbwxCDmHIcndN/Fp+e81Xit8he9GqLpaUh4DKvF7N6yXo76OBJggUvqAyvpZUTNKdrLEL+sgIXv/EhOP2MamjEFCWAH2GE9mgebnTQeR5f2gY4jzGgP41fXsqCc2xwzoSyyy9TpeHFTwDBQpbu1zsg+gZl/oVibYnDIGyyAKZaWLsOB0TzKtPNduAloeUhZrt33rUhFoCNOS5ubYvC/lkAKkApEPjgDd+1bi3xkgbHpNfs2SNys7lCWmUXy8dUpwoBJmu4VoEaaOtqjq+i8fckbCsDmmsY3gm9YTT3xgZjtuXHJpfMftLp0K0WFGR0Bx7Xq+fR2q2B36MdVRqSuMTrGhFeILUnKwt3atWj28EDacP21GlIqYpJ12kJ2ox3879vfgDWT8Yl6o+oDY7OzlPR+icyIMUMENm1+dv7NX1GERVyPrO0Zgoqn/5/Y1+ndE9W5uZ7CZks1/3eOsrLLAJ9Do6/xj6jtJpyhlp7dIsGEsaRnJ4A9Hsh3nbH0rGTFd1/IdJp7RFlMULhW6CpCk7lq03QS5i3D12w=
before_install:
- git clone https://github.com/CJSCommonPlatform/travis-settings.git target/travis-settings
- ln -sfT ${PWD}/target/travis-settings/settings.xml ${HOME}/.m2/settings.xml
- git clone https://github.com/CJSCommonPlatform/travis-settings.git target/travis-settings
- ln -sfT ${PWD}/target/travis-settings/settings.xml ${HOME}/.m2/settings.xml
install: "${PWD}/target/travis-settings/java/install.sh -e -q -DexcludeGroupIds=uk.gov.justice.service,uk.gov.justice.services"
script: "${PWD}/target/travis-settings/java/script-install.sh coveralls:report sonar:sonar"
after_success: "${PWD}/target/travis-settings/java/after_success.sh"
env:
global:
- secure: M17JUrcPbObQAt3IroCni0vanCdfsxs+Upg0nzHaWHeq+wR/5dg7NyYkQZ4j1MYXIbfje+Jlj6jKbiwvl7wxi8FLMHpF2exbd9ePCiIZESS8xXOwz3Yi99ornzDIJTFlJucn3QAu3MbZiQz4kE8Nzb8NHa6diUl5anqUjMpz2H0tsIK9kdnno+FIhRRz/72ngH54tMSnbEY+9XVRZKT2mGnIpthhT/mg83VWU7zyCFDg/fgLqdm5oL5ZNkB7d62bU5ads6vhtjYWMEllV4QMaGNqZijBpiJgWMkAwewq0xZchLhtcsQMXecREpNpgH1hmB3bqwgwSEJ8UgWithVcCGi1hDG98S5LbNSx1aRH30+oJvVQegBxyJnhpO9eS3tDznzXSVGSQHWLnqbXbG2cKhGL6AkZx10wpUXhJhilOm5IbsXmgaAsZrcpUJ/+QPYdoPc+GQLB9WY0ADtDOLoKYnm0hBwVUftvCnT5By4WkS7s1/aXerNHTvJp9WlRyIAB5MwVY6HLpf6hLds07VBsAfOHapyRMH7P9oiWiB98J/uoHkUFM6tuNKm9A/A7vEy1D2MqY++QTEuD2zs9NmMQ5Z7AWPpohYC7FlH/fl2WdzyZp3r5aeY9pxK4Hpt2yGjKZcNi8haNtoZ/Lj/83waA4DDQaL0jSlI5ayM9NmuAXbE=
- secure: F6wXMuRdCQC6Gq98x/qEiQoiejaIAEVmCsslw25Wvn75dxTcVuvgvn31Qt48La67k6qQn+fTtuB+G+Ygzso8wbvkIF8d2CoEqx6D+Rhs7fwyU4c0E6buZjoed/69nbGUjGMCvbJ/pYpa1i1eAWpqIrRjZRTOdQS4u9V+J/P0loHh20J+Buj0PskbKdOZBWsK7PUUSSNfe7qLfRR7sEYFDl9DV+XW9HAX3MduwnUEWmu6m+wfX9A/VfbapfUEFw6EZlFhwXv8UR7AGPwwaJwJ0L/Cioz9ASSQb1cJmA/k2+7Nt6MqRiBDeJSFBSXUHhh7DV9AUbiL6hDBSb/g9K6DtieKkHG+yjN5LDHEVKE7Qy3n5AGjrpi5887nNhv/NR3E6LaKgnUevojQa/xzsae/uD8T7OddQllZXyFZkTBG1zGWmL8GyFwzADh3Kv7wn06A+TXLgZsw7gJ6R+9ZAoEnXKFeWdA8G617glsaleRKjBEd3tYpL8mEbG2ESpher9Qb/GVzm9QEH02ocZtilYPZWe6ZP7pN10diaI9/DanggH8J5ZDqfs49mgn8sEyll3trPUriQuT1611fN3AHCvAcZ/S+hvKbxOIuIoZ3fjVKWXFpuNPEBTzHpA38Ow8tZiBN4KsShwx47mghxUF6Rd5l9QTzk5GW3QhojJLWnqziJ3k=
- PGPORT=5432
- secure: M17JUrcPbObQAt3IroCni0vanCdfsxs+Upg0nzHaWHeq+wR/5dg7NyYkQZ4j1MYXIbfje+Jlj6jKbiwvl7wxi8FLMHpF2exbd9ePCiIZESS8xXOwz3Yi99ornzDIJTFlJucn3QAu3MbZiQz4kE8Nzb8NHa6diUl5anqUjMpz2H0tsIK9kdnno+FIhRRz/72ngH54tMSnbEY+9XVRZKT2mGnIpthhT/mg83VWU7zyCFDg/fgLqdm5oL5ZNkB7d62bU5ads6vhtjYWMEllV4QMaGNqZijBpiJgWMkAwewq0xZchLhtcsQMXecREpNpgH1hmB3bqwgwSEJ8UgWithVcCGi1hDG98S5LbNSx1aRH30+oJvVQegBxyJnhpO9eS3tDznzXSVGSQHWLnqbXbG2cKhGL6AkZx10wpUXhJhilOm5IbsXmgaAsZrcpUJ/+QPYdoPc+GQLB9WY0ADtDOLoKYnm0hBwVUftvCnT5By4WkS7s1/aXerNHTvJp9WlRyIAB5MwVY6HLpf6hLds07VBsAfOHapyRMH7P9oiWiB98J/uoHkUFM6tuNKm9A/A7vEy1D2MqY++QTEuD2zs9NmMQ5Z7AWPpohYC7FlH/fl2WdzyZp3r5aeY9pxK4Hpt2yGjKZcNi8haNtoZ/Lj/83waA4DDQaL0jSlI5ayM9NmuAXbE=
- secure: F6wXMuRdCQC6Gq98x/qEiQoiejaIAEVmCsslw25Wvn75dxTcVuvgvn31Qt48La67k6qQn+fTtuB+G+Ygzso8wbvkIF8d2CoEqx6D+Rhs7fwyU4c0E6buZjoed/69nbGUjGMCvbJ/pYpa1i1eAWpqIrRjZRTOdQS4u9V+J/P0loHh20J+Buj0PskbKdOZBWsK7PUUSSNfe7qLfRR7sEYFDl9DV+XW9HAX3MduwnUEWmu6m+wfX9A/VfbapfUEFw6EZlFhwXv8UR7AGPwwaJwJ0L/Cioz9ASSQb1cJmA/k2+7Nt6MqRiBDeJSFBSXUHhh7DV9AUbiL6hDBSb/g9K6DtieKkHG+yjN5LDHEVKE7Qy3n5AGjrpi5887nNhv/NR3E6LaKgnUevojQa/xzsae/uD8T7OddQllZXyFZkTBG1zGWmL8GyFwzADh3Kv7wn06A+TXLgZsw7gJ6R+9ZAoEnXKFeWdA8G617glsaleRKjBEd3tYpL8mEbG2ESpher9Qb/GVzm9QEH02ocZtilYPZWe6ZP7pN10diaI9/DanggH8J5ZDqfs49mgn8sEyll3trPUriQuT1611fN3AHCvAcZ/S+hvKbxOIuIoZ3fjVKWXFpuNPEBTzHpA38Ow8tZiBN4KsShwx47mghxUF6Rd5l9QTzk5GW3QhojJLWnqziJ3k=
notifications:
slack:
secure: vm4YDBwfl7UQa2gsSFMvjDaS/1gi92p1KiYhe+wKKEQqDo7XAnfd6sjvqDysvZy/ig+T2GEepsrjuUmhWpf+5hp6+e3zXwZGbwS19031KnCUVeIlW8uhjSxz4lKvx9XuAJOqK6lZ2nMZloId1pD02q72QXeF2yfLUxzQBhmNIOKs3iBdo3hL/h3Ut6xWYecGn/d8JnYr79mk+l6mjNg2hhFNL22EG1xS3jOihOgWxXR8ICDvucllAJeIF341PdreMy1sRjbL+LEuTp9x+Ou3QuR3bQ1mgi4spYMzwJZ7oJ4nuoc1WRHJijOkRyi1UMs/EgYrhF5f38u/pICEf2CGl0BdItByY67L6jKQHPtZB0SeY8npFcm+l5kaFxipxXouFa9x3VYp534jbcfAbQPjuXtdLoB433IL74WvdpwVsi3fSNLsf90pgtVrzpsfPBY3XU2q0m3bc8qaM/I0lsOWwUuMKq/MWMpampxa0UVZsqJrgZXOsIbN9C78f55QN2QtpTKmyVC7v5s+s4LdjVEkhB8GvqHOVV19ztKWylm/upEw+XaUzdoY4lz+SXdR9zLYIBSxOS5y4RPpm4c/ZLuHsOZkAMmIpppGFQGtADj22iseVYJ42rdEMIRS6+a1KwbHuerSd4JAnR2w0MO90d0zjd0r14gb2jf5WFYX9E5ur2M=
Original file line number Diff line number Diff line change
@@ -1,148 +1,140 @@
package uk.gov.moj.cpp.jobmanager.example;


import static uk.gov.moj.cpp.jobmanager.it.util.OpenEjbConfigurationBuilder.createOpenEjbConfigurationBuilder;

import uk.gov.justice.services.cdi.InitialContextProducer;
import uk.gov.justice.services.cdi.LoggerProducer;
import uk.gov.justice.services.common.configuration.JndiBasedServiceContextNameProvider;
import uk.gov.justice.services.common.converter.JsonObjectToObjectConverter;
import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter;
import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer;
import uk.gov.justice.services.common.util.UtcClock;
import uk.gov.justice.services.jdbc.persistence.JdbcRepositoryHelper;
import uk.gov.moj.cpp.jobmanager.example.task.BakeCakeTask;
import uk.gov.moj.cpp.jobmanager.example.task.FillCakeTinTask;
import uk.gov.moj.cpp.jobmanager.example.task.GetIngredientsTask;
import uk.gov.moj.cpp.jobmanager.example.task.GetUtensilsTask;
import uk.gov.moj.cpp.jobmanager.example.task.JobUtil;
import uk.gov.moj.cpp.jobmanager.example.task.MixIngredientsTask;
import uk.gov.moj.cpp.jobmanager.example.task.SliceAndEatCakeTask;
import uk.gov.moj.cpp.jobmanager.example.task.SwitchOvenOnTask;
import uk.gov.moj.cpp.jobmanager.example.util.PropertiesFileValueProducer;
import uk.gov.moj.cpp.jobmanager.it.util.OpenEjbJobJdbcRepository;
import uk.gov.moj.cpp.jobstore.api.ExecutionService;
import uk.gov.moj.cpp.jobstore.api.task.ExecutableTask;
import uk.gov.moj.cpp.jobstore.persistence.AnsiJobSqlProvider;
import uk.gov.moj.cpp.jobstore.persistence.JdbcJobStoreDataSourceProvider;
import uk.gov.moj.cpp.jobstore.persistence.JobRepository;
import uk.gov.moj.cpp.jobstore.persistence.JobSqlProvider;
import uk.gov.moj.cpp.jobstore.service.JobService;
import uk.gov.moj.cpp.task.execution.JobScheduler;
import uk.gov.moj.cpp.task.extension.TaskRegistry;

import java.util.Properties;

import javax.annotation.Resource;
import javax.inject.Inject;
import javax.naming.InitialContext;
import javax.sql.DataSource;

import liquibase.Liquibase;
import liquibase.database.jvm.JdbcConnection;
import liquibase.resource.ClassLoaderResourceAccessor;
import org.apache.commons.logging.LogFactory;
import org.apache.openejb.jee.WebApp;
import org.apache.openejb.jee.jpa.unit.Persistence;
import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.testing.Application;
import org.apache.openejb.testing.Classes;
import org.apache.openejb.testing.Configuration;
import org.apache.openejb.testing.Module;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(ApplicationComposer.class)
public class BakeryServiceIT {

@Inject
private uk.gov.moj.cpp.jobmanager.it.util.OpenEjbJobJdbcRepository repository;

@Inject
private BakeryService bakeryService;

@Resource(name = "openejb/Resource/jobStore")
private DataSource dataSource;

@Module
@Classes(cdi = true, value = {
JobService.class,
ExecutionService.class,
JobRepository.class,
TaskRegistry.class,
JobScheduler.class,
SwitchOvenOnTask.class,
JobUtil.class,
ExecutableTask.class,
GetIngredientsTask.class,
GetUtensilsTask.class,
MixIngredientsTask.class,
FillCakeTinTask.class,
BakeCakeTask.class,
SliceAndEatCakeTask.class,
JdbcJobStoreDataSourceProvider.class,
JdbcRepositoryHelper.class,
JobSqlProvider.class,
LoggerProducer.class,
OpenEjbJobJdbcRepository.class,
JndiBasedServiceContextNameProvider.class,
PropertiesFileValueProducer.class,
BakeryService.class,
ObjectToJsonObjectConverter.class,
JsonObjectToObjectConverter.class,
LogFactory.class,
Persistence.class,
PersistenceUnit.class,
ObjectMapperProducer.class,
InitialContextProducer.class,
UtcClock.class
},
cdiAlternatives = {AnsiJobSqlProvider.class}
)

public WebApp war() {
return new WebApp()
.contextRoot("bakeryservice-test")
.addServlet("ServiceApp", Application.class.getName());
}


@Configuration
public Properties configuration() {
Properties props = createOpenEjbConfigurationBuilder()
.addInitialContext()
.addHttpEjbPort(8080)
.addh2ViewStore()
.build();

return props;

}

@Before
public void setup() throws Exception {
final InitialContext initialContext = new InitialContext();
initialContext.bind("java:/app/BakeryServiceIT/DS.jobstore", dataSource);
initJobStoreDatabase();
}

public void initJobStoreDatabase() throws Exception {

final Liquibase eventStoreLiquibase = new Liquibase("liquibase/jobstore-db-changelog.xml",
new ClassLoaderResourceAccessor(), new JdbcConnection(dataSource.getConnection()));

eventStoreLiquibase.update("");

}

@Test
public void shouldMakeACake() {

bakeryService.makeCake();
repository.waitForAllJobsToBeProcessed();
}


}
package uk.gov.moj.cpp.jobmanager.example;

import static uk.gov.moj.cpp.jobmanager.it.util.OpenEjbConfigurationBuilder.createOpenEjbConfigurationBuilder;

import uk.gov.justice.services.cdi.InitialContextProducer;
import uk.gov.justice.services.cdi.LoggerProducer;
import uk.gov.justice.services.common.configuration.JndiBasedServiceContextNameProvider;
import uk.gov.justice.services.common.converter.JsonObjectToObjectConverter;
import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter;
import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer;
import uk.gov.justice.services.common.util.UtcClock;
import uk.gov.justice.services.jdbc.persistence.JdbcRepositoryHelper;
import uk.gov.moj.cpp.jobmanager.example.task.BakeCakeTask;
import uk.gov.moj.cpp.jobmanager.example.task.FillCakeTinTask;
import uk.gov.moj.cpp.jobmanager.example.task.GetIngredientsTask;
import uk.gov.moj.cpp.jobmanager.example.task.GetUtensilsTask;
import uk.gov.moj.cpp.jobmanager.example.task.JobUtil;
import uk.gov.moj.cpp.jobmanager.example.task.MixIngredientsTask;
import uk.gov.moj.cpp.jobmanager.example.task.SliceAndEatCakeTask;
import uk.gov.moj.cpp.jobmanager.example.task.SwitchOvenOnTask;
import uk.gov.moj.cpp.jobmanager.example.util.PropertiesFileValueProducer;
import uk.gov.moj.cpp.jobmanager.it.util.OpenEjbJobJdbcRepository;
import uk.gov.moj.cpp.jobstore.api.ExecutionService;
import uk.gov.moj.cpp.jobstore.api.task.ExecutableTask;
import uk.gov.moj.cpp.jobstore.persistence.JdbcJobStoreDataSourceProvider;
import uk.gov.moj.cpp.jobstore.persistence.JobRepository;
import uk.gov.moj.cpp.jobstore.persistence.JobSqlProvider;
import uk.gov.moj.cpp.jobstore.persistence.PostgresJobSqlProvider;
import uk.gov.moj.cpp.jobstore.service.JobService;
import uk.gov.moj.cpp.task.execution.JobScheduler;
import uk.gov.moj.cpp.task.extension.TaskRegistry;

import java.util.Properties;

import javax.annotation.Resource;
import javax.inject.Inject;
import javax.naming.InitialContext;
import javax.sql.DataSource;

import liquibase.Liquibase;
import liquibase.database.jvm.JdbcConnection;
import liquibase.resource.ClassLoaderResourceAccessor;
import org.apache.commons.logging.LogFactory;
import org.apache.openejb.jee.WebApp;
import org.apache.openejb.jee.jpa.unit.Persistence;
import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.testing.Application;
import org.apache.openejb.testing.Classes;
import org.apache.openejb.testing.Configuration;
import org.apache.openejb.testing.Module;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(ApplicationComposer.class)
public class BakeryServiceIT {

@Inject
private uk.gov.moj.cpp.jobmanager.it.util.OpenEjbJobJdbcRepository repository;

@Inject
private BakeryService bakeryService;

@Resource(name = "openejb/Resource/jobStore")
private DataSource dataSource;

@Module
@Classes(cdi = true, value = {
JobService.class,
ExecutionService.class,
JobRepository.class,
TaskRegistry.class,
JobScheduler.class,
SwitchOvenOnTask.class,
JobUtil.class,
ExecutableTask.class,
GetIngredientsTask.class,
GetUtensilsTask.class,
MixIngredientsTask.class,
FillCakeTinTask.class,
BakeCakeTask.class,
SliceAndEatCakeTask.class,
JdbcJobStoreDataSourceProvider.class,
JdbcRepositoryHelper.class,
JobSqlProvider.class,
LoggerProducer.class,
OpenEjbJobJdbcRepository.class,
JndiBasedServiceContextNameProvider.class,
PropertiesFileValueProducer.class,
BakeryService.class,
ObjectToJsonObjectConverter.class,
JsonObjectToObjectConverter.class,
LogFactory.class,
Persistence.class,
PersistenceUnit.class,
ObjectMapperProducer.class,
InitialContextProducer.class,
UtcClock.class
},
cdiAlternatives = {PostgresJobSqlProvider.class}
)

public WebApp war() {
return new WebApp()
.contextRoot("bakeryservice-test")
.addServlet("ServiceApp", Application.class.getName());
}

@Configuration
public Properties configuration() {
return createOpenEjbConfigurationBuilder()
.addInitialContext()
.addHttpEjbPort(8080)
.addPostgresViewStore()
.build();
}

@Before
public void setup() throws Exception {
final InitialContext initialContext = new InitialContext();
initialContext.bind("java:/app/BakeryServiceIT/DS.jobstore", dataSource);
initJobStoreDatabase();
}

public void initJobStoreDatabase() throws Exception {
new Liquibase(
"liquibase/jobstore-db-changelog.xml",
new ClassLoaderResourceAccessor(),
new JdbcConnection(dataSource.getConnection()))
.update("");
}

@Test
public void shouldMakeACake() {

bakeryService.makeCake();
repository.waitForAllJobsToBeProcessed();
}
}
Loading

0 comments on commit 6c509c7

Please sign in to comment.