diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..131c61f --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,11 @@ +name: Build +on: [push] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: epimorphics/github-actions/maven-build@v21 + with: + java-version: 11 + aws-access-key-id: ${{ secrets.DEPLOY_MAVEN_PRIVATE_S3_USERNAME }} + aws-secret-access-key: ${{ secrets.DEPLOY_MAVEN_PRIVATE_S3_PASSWORD }} diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 0000000..7732079 --- /dev/null +++ b/.github/workflows/publish.yaml @@ -0,0 +1,13 @@ +name: Publish +on: + push: + branches: [ main ] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: epimorphics/github-actions/maven-publish@v21 + with: + java-version: 8 + aws-access-key-id: ${{ secrets.DEPLOY_MAVEN_PRIVATE_S3_USERNAME }} + aws-secret-access-key: ${{ secrets.DEPLOY_MAVEN_PRIVATE_S3_PASSWORD }} diff --git a/pom.xml b/pom.xml index d6ff0eb..9cf7269 100644 --- a/pom.xml +++ b/pom.xml @@ -1,13 +1,18 @@ 4.0.0 com.epimorphics.lr - 4.0.0 + 4.0.1-SNAPSHOT + + + scm:git:ssh://git@github.com/epimorphics/ppd-text-index.git + HEAD + - 1.8 + 11 ${jdk.version} - 2.2 - 4.5.0 + 2.10 + 4.6.1 @@ -26,71 +31,125 @@ - junit - junit - 4.13.1 - jar - provided - + org.junit.jupiter + junit-jupiter + 5.12.2 + test + commons-io commons-io - 2.7 + + + + ch.qos.logback + logback-classic + 1.5.21 + test + + + + com.fasterxml.jackson.core + jackson-core + 2.15.3 + + + com.fasterxml.jackson.core + jackson-databind + 2.15.3 + + + com.google.protobuf + protobuf-java + 3.25.5 + + + org.apache.commons + commons-lang3 + 3.18.0 + + + commons-io + commons-io + 2.21.0 + + + org.apache.commons + commons-compress + 1.26.2 + + + + - epi-public-repo - ftp://repository.epimorphics.com + epi-public-s3-release + Epimorphics S3 release repository + s3://epi-repository/release + true + false + + + epi-public-s3-snapshot + Epimorphics S3 snapshot repository + s3://epi-repository/snapshot + false + true + - epi-public-repo - Epimorphics Public Repository - http://repository.epimorphics.com - default + epi-public-s3-release + Epimorphics S3 release repository + https://epi-repository.s3-eu-west-1.amazonaws.com/release + true + false + + + + epi-public-s3-snapshot + Epimorphics S3 snapshot repository + https://epi-repository.s3-eu-west-1.amazonaws.com/snapshot + false + true + + + + apache.snapshots + Apache Snapshot Repository + https://repository.apache.org/snapshots - true + false true - - apache.snapshots - Apache Snapshot Repository - https://repository.apache.org/snapshots - - false - - - true - - - ppd-text-index - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.16 - - false - 1 - - + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.4 + + false + 1 + + org.apache.maven.plugins @@ -114,6 +173,21 @@ + + org.apache.maven.plugins + maven-scm-plugin + 2.2.1 + + developerConnection + + + + + org.apache.maven.plugins + maven-release-plugin + 3.3.0 + + @@ -124,8 +198,13 @@ wagon-ftp ${ver.wagon} + + org.springframework.build + aws-maven + 5.0.0.RELEASE + - + diff --git a/src/test/java/com/epimorphics/lr/jena/query/text/ExtendedEntityTest.java b/src/test/java/com/epimorphics/lr/jena/query/text/ExtendedEntityTest.java index ae5b46e..a20030f 100644 --- a/src/test/java/com/epimorphics/lr/jena/query/text/ExtendedEntityTest.java +++ b/src/test/java/com/epimorphics/lr/jena/query/text/ExtendedEntityTest.java @@ -16,10 +16,10 @@ // Imports /////////////// -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; import org.apache.jena.query.text.EntityDefinition; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -74,16 +74,16 @@ public void testExtendedEntityEntityDefinitionNodeNode() { assertEquals( "http://test.com/g", xe.getGraph() ); } - @Test (expected=NotSuitableForIndexingException.class) + @Test public void testExtendedEntityEntityDefinitionNodeNodeNodeNode_1() { // resource o is not suitable for indexing - new ExtendedEntity( ed_withG, Mode.NONE, g, s, p, o ); + assertThrows(NotSuitableForIndexingException.class, () -> new ExtendedEntity(ed_withG, Mode.NONE, g, s, p, o)); } - @Test (expected=NotSuitableForIndexingException.class) + @Test public void testExtendedEntityEntityDefinitionNodeNodeNodeNode_2() { // no field for l - new ExtendedEntity( ed_withG, Mode.NONE, g, s, p, l ); + assertThrows(NotSuitableForIndexingException.class, () -> new ExtendedEntity( ed_withG, Mode.NONE, g, s, p, l )); } @Test @@ -93,16 +93,18 @@ public void testExtendedEntityEntityDefinitionNodeNodeNodeNode_3() { assertEquals( "foo", xe.get( "foo_field" )); } - @Test (expected=NotSuitableForIndexingException.class) + @Test public void testExtendedEntityEntityDefinitionQuad_1() { - Quad q = new Quad( g, s, p, o ); - new ExtendedEntity( ed_withG, Mode.NONE, q ); + Quad q = new Quad(g, s, p, o); + assertThrows(NotSuitableForIndexingException.class, + () -> new ExtendedEntity(ed_withG, Mode.NONE, q)); } - @Test (expected=NotSuitableForIndexingException.class) + @Test public void testExtendedEntityEntityDefinitionQuad_2() { Quad q = new Quad( g, s, p, l ); - new ExtendedEntity( ed_withG, Mode.NONE, q ); + assertThrows(NotSuitableForIndexingException.class, + () -> new ExtendedEntity( ed_withG, Mode.NONE, q )); } @Test @@ -129,4 +131,3 @@ public void testAddProperty() { assertEquals( "foo", xe.get( "foo_field" )); } } - diff --git a/src/test/java/com/epimorphics/lr/jena/query/text/FunctionalTest.java b/src/test/java/com/epimorphics/lr/jena/query/text/FunctionalTest.java index c3b5354..33427ca 100644 --- a/src/test/java/com/epimorphics/lr/jena/query/text/FunctionalTest.java +++ b/src/test/java/com/epimorphics/lr/jena/query/text/FunctionalTest.java @@ -15,7 +15,10 @@ import org.apache.commons.io.FileUtils; import org.apache.jena.query.text.TextQuery; import org.apache.jena.riot.RDFDataMgr; -import org.junit.*; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,13 +44,13 @@ public class FunctionalTest extends SharedIndexTestSupport { /***********************************/ /** Ensure assembler initialized. */ - @BeforeClass + @BeforeAll public static void setupClass() { TextQuery.init() ; } /** Reset the TDB dataset each time by deleting and reloading */ - @Before + @BeforeEach public void resetTDB() { log.debug( "Reset TDB" ); StoreConnection.expel( Location.create(TDB_TEST_ROOT), true ); @@ -74,7 +77,7 @@ public void resetTDB() { ds = loadDataset( ASSEMBLER_CONFIG, PPD_BASE_TEST_DATA ); } - @After + @AfterEach public void closeDataset() { ds.close(); } diff --git a/src/test/java/com/epimorphics/lr/jena/query/text/NodeTermConverterTest.java b/src/test/java/com/epimorphics/lr/jena/query/text/NodeTermConverterTest.java index a43ecd1..fb20363 100644 --- a/src/test/java/com/epimorphics/lr/jena/query/text/NodeTermConverterTest.java +++ b/src/test/java/com/epimorphics/lr/jena/query/text/NodeTermConverterTest.java @@ -16,11 +16,11 @@ // Imports /////////////// -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; import org.apache.jena.query.text.TextIndexException; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.BeforeEach; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,27 +53,31 @@ public class NodeTermConverterTest /***********************************/ /* Constructors */ - /***********************************/ + /**********************************/ /***********************************/ /* External signature methods */ /***********************************/ - @Before + @BeforeEach public void setUp() { l = ResourceFactory.createPlainLiteral( "foo" ).asNode(); r = ResourceFactory.createResource( "http://test/foo" ).asNode(); a = ResourceFactory.createResource().asNode(); } - @Test (expected=IllegalArgumentException.class ) + @Test public void testSubjectToTerm0() { - NodeTermConverter.subjectToTerm( null ); + assertThrows(IllegalArgumentException.class, () -> { + NodeTermConverter.subjectToTerm(null); + }); } - @Test (expected=TextIndexException.class ) + @Test public void testSubjectToTerm1() { - NodeTermConverter.subjectToTerm( l ); + assertThrows(TextIndexException.class, () -> { + NodeTermConverter.subjectToTerm( l ); + }); } @Test @@ -87,9 +91,11 @@ public void testGraphNodeToTerm0() { assertNull( NodeTermConverter.graphNodeToTerm( null ) ); } - @Test (expected=TextIndexException.class ) + @Test public void testGraphNodeToTerm1() { - NodeTermConverter.graphNodeToTerm( l ); + assertThrows(TextIndexException.class, () -> { + NodeTermConverter.graphNodeToTerm( l ); + }); } @Test @@ -121,4 +127,3 @@ public void testTermToNode1() { /***********************************/ } - diff --git a/src/test/java/com/epimorphics/lr/jena/query/text/SharedIndexTestSupport.java b/src/test/java/com/epimorphics/lr/jena/query/text/SharedIndexTestSupport.java index 6a254f8..b7020b7 100644 --- a/src/test/java/com/epimorphics/lr/jena/query/text/SharedIndexTestSupport.java +++ b/src/test/java/com/epimorphics/lr/jena/query/text/SharedIndexTestSupport.java @@ -19,8 +19,9 @@ import org.apache.jena.rdf.model.Literal; import org.apache.jena.update.UpdateAction; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** IntegrationBase contains constants and code used by FunctionalText @@ -45,7 +46,7 @@ public class SharedIndexTestSupport { public void testQueryPostcodeCount( String sparql, String expectedPostcode, int expectedHits ) { ResultSet results = queryData( ds, loadQuery( TEST_RESOURCES + sparql ) ); - assertTrue( "Query failed to return any results", results.hasNext() ); + assertTrue( results.hasNext(), "Query failed to return any results" ); int n = 0; boolean seenPostcode = false; @@ -59,8 +60,8 @@ public void testQueryPostcodeCount( String sparql, String expectedPostcode, int seenPostcode = seenPostcode || (postcode != null && postcode.equals( expectedPostcode )); } - assertTrue( "Expected to see postcode " + expectedPostcode, seenPostcode ); - assertEquals( "Expected " + expectedHits + " results", expectedHits, n ); + assertTrue( seenPostcode, "Expected to see postcode " + expectedPostcode); + assertEquals( expectedHits, n, "Expected " + expectedHits + " results"); } /** @@ -69,7 +70,7 @@ public void testQueryPostcodeCount( String sparql, String expectedPostcode, int public String loadQuery( String queryFile ) { try { File file = new File( queryFile ); - assertTrue( "Query file does not exist: " + queryFile, file.exists() ); + assertTrue( file.exists(), "Query file does not exist: " + queryFile); return FileUtils.readFileToString( file ); } diff --git a/src/test/java/com/epimorphics/lr/jena/query/text/TestDatasetWithBatchProducer.java b/src/test/java/com/epimorphics/lr/jena/query/text/TestDatasetWithBatchProducer.java index 83e0eb9..05c13f3 100644 --- a/src/test/java/com/epimorphics/lr/jena/query/text/TestDatasetWithBatchProducer.java +++ b/src/test/java/com/epimorphics/lr/jena/query/text/TestDatasetWithBatchProducer.java @@ -2,8 +2,8 @@ -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; import java.io.Reader; @@ -14,10 +14,7 @@ import org.apache.jena.atlas.lib.StrUtils; import org.apache.jena.query.text.DatasetGraphText; import org.apache.jena.query.text.assembler.TextAssembler; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -96,7 +93,7 @@ public class TestDatasetWithBatchProducer { ); } - @Before + @BeforeEach public void init() { Reader reader = new StringReader(SPEC); Model specModel = ModelFactory.createDefaultModel(); @@ -108,7 +105,7 @@ public void init() { dataset = (Dataset) Assembler.general.open(root); } - @After + @AfterEach public void closeDataset() { if (dataset == null) { log.warn("dataset was not set up"); @@ -117,7 +114,7 @@ public void closeDataset() { } } - @AfterClass + @AfterAll public static void deleteOldFiles() { if (indexDir.exists()) { emptyAndDeleteDirectory(indexDir); @@ -251,17 +248,18 @@ private static void emptyAndDeleteDirectory(File dir) { private static void doTestQuery(Dataset dataset, String label, String queryString, Set expectedEntityURIs, int expectedNumResults) { Query query = QueryFactory.create(queryString) ; - QueryExecution qexec = QueryExecutionFactory.create(query, dataset) ; - try { + try (QueryExecution qexec = QueryExecutionFactory.create(query, dataset)) { dataset.begin(ReadWrite.READ); - ResultSet results = qexec.execSelect() ; + ResultSet results = qexec.execSelect(); int count; - for (count=0; results.hasNext(); count++) { + for (count = 0; results.hasNext(); count++) { String entityURI = results.next().getResource("s").getURI(); - assertTrue(label + ": unexpected result: " + entityURI, expectedEntityURIs.contains(entityURI)); + assertTrue(expectedEntityURIs.contains(entityURI), label + ": unexpected result: " + entityURI); } - assertEquals(label, expectedNumResults, count); - } finally { qexec.close() ; dataset.end() ; } + assertEquals(expectedNumResults, count, label); + } finally { + dataset.end(); + } } } diff --git a/src/test/java/com/epimorphics/lr/jena/query/text/TestQueryByKey.java b/src/test/java/com/epimorphics/lr/jena/query/text/TestQueryByKey.java index 2d5d88d..4f71249 100644 --- a/src/test/java/com/epimorphics/lr/jena/query/text/TestQueryByKey.java +++ b/src/test/java/com/epimorphics/lr/jena/query/text/TestQueryByKey.java @@ -8,7 +8,7 @@ import org.apache.jena.query.text.TextIndexLucene; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; -import org.junit.Test; +import org.junit.jupiter.api.Test; public class TestQueryByKey { diff --git a/src/test/java/com/epimorphics/lr/jena/query/text/TestTextIndexingCommand.java b/src/test/java/com/epimorphics/lr/jena/query/text/TestTextIndexingCommand.java index 7b60a4b..aba0c58 100644 --- a/src/test/java/com/epimorphics/lr/jena/query/text/TestTextIndexingCommand.java +++ b/src/test/java/com/epimorphics/lr/jena/query/text/TestTextIndexingCommand.java @@ -7,10 +7,10 @@ import org.apache.commons.io.FileUtils; import org.apache.jena.query.text.TextQuery; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,7 +23,7 @@ public class TestTextIndexingCommand extends SharedIndexTestSupport { private static final Logger log = LoggerFactory.getLogger( TestTextIndexingCommand.class ); - @BeforeClass public static void runTextIndexer() throws IOException { + @BeforeAll public static void runTextIndexer() throws IOException { clearIndex(); clearTDB(); loadDataIntoDataset(); @@ -44,11 +44,11 @@ protected static void clearTDB() throws IOException { tdbDir.mkdir(); } - @Before public void openDataset() { + @BeforeEach public void openDataset() { ds = assembleDataset(); } - @After public void closeDataset() { + @AfterEach public void closeDataset() { if (ds == null) { log.warn("Dataset was null"); } else { diff --git a/src/test/java/com/epimorphics/lr/jena/threadtesting/TestBatchBatching.java b/src/test/java/com/epimorphics/lr/jena/threadtesting/TestBatchBatching.java index a09ea8e..fed87da 100644 --- a/src/test/java/com/epimorphics/lr/jena/threadtesting/TestBatchBatching.java +++ b/src/test/java/com/epimorphics/lr/jena/threadtesting/TestBatchBatching.java @@ -19,7 +19,7 @@ import org.apache.jena.vocabulary.RDFS; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.io.IOException; @@ -28,7 +28,7 @@ import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class TestBatchBatching { diff --git a/src/test/java/com/epimorphics/lr/jena/threadtesting/TestBatchThreadSafety.java b/src/test/java/com/epimorphics/lr/jena/threadtesting/TestBatchThreadSafety.java index c70a1f7..4d7c6e4 100644 --- a/src/test/java/com/epimorphics/lr/jena/threadtesting/TestBatchThreadSafety.java +++ b/src/test/java/com/epimorphics/lr/jena/threadtesting/TestBatchThreadSafety.java @@ -1,7 +1,5 @@ package com.epimorphics.lr.jena.threadtesting; -import static org.junit.Assert.*; - import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -24,10 +22,9 @@ import org.apache.jena.shared.Lock; import org.apache.jena.sparql.core.DatasetGraph; import org.apache.jena.sparql.core.Quad; -import org.apache.jena.sparql.core.QuadAction; import org.apache.jena.sparql.util.Context; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import com.epimorphics.lr.jena.query.text.TextDocProducerBatch; @@ -343,7 +340,8 @@ static final class ThreadVar { boolean retain = false; - @Test @Ignore public void testDoesNotRetainGarbage() throws InterruptedException { + @Test @Disabled + public void testDoesNotRetainGarbage() throws InterruptedException { TextIndex ti = new TextIndexTesting(); DatasetGraph dsg = new DatasetGraphTesting(); final TextDocProducerBatch b = new TextDocProducerBatch(dsg, ti); diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties deleted file mode 100644 index 433430a..0000000 --- a/src/test/resources/log4j.properties +++ /dev/null @@ -1,33 +0,0 @@ -log4j.rootLogger=INFO, stderr - -# Set up logging to include a file record of the output -# Note: the file is always created, even if there is -# no actual output. -# log4j.rootLogger=INFO, stderr, R - -# Example of switching on debug level logging for part of tree -# log4j.logger.com.hp.hpl.jena.graph.test=debug -log4j.logger.com.hp.hpl.jena.reasoner.rulesys=info -log4j.logger.com.epimorphics=info - -# Log format to standard out -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -# Pattern to output the caller's file name and line number. -log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n - -# Log format to standard error -log4j.appender.stderr=org.apache.log4j.ConsoleAppender -log4j.appender.stderr.target=System.err -log4j.appender.stderr.layout=org.apache.log4j.PatternLayout -# Pattern to output the caller's file name and line number. -log4j.appender.stderr.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n - -# File based log output -log4j.appender.R=org.apache.log4j.RollingFileAppender -log4j.appender.R.File=jena2.log -log4j.appender.R.MaxFileSize=5000KB -# Keep one backup file -log4j.appender.R.MaxBackupIndex=1 -log4j.appender.R.layout=org.apache.log4j.PatternLayout -log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml new file mode 100644 index 0000000..9d05420 --- /dev/null +++ b/src/test/resources/logback-test.xml @@ -0,0 +1,15 @@ + + + + + + %5p [%t] %logger - %m%n + + + + + + + + +