diff --git a/settings.gradle b/settings.gradle index 8dc44b197..d4e8eac45 100755 --- a/settings.gradle +++ b/settings.gradle @@ -20,6 +20,7 @@ include ':trellis-webac' include ':trellis-app' include ':trellis-karaf' +include ':trellis-osgi' include ':trellis-test' project(':trellis-api').projectDir = "$rootDir/trellis-api" as File @@ -43,4 +44,5 @@ project(':trellis-webac').projectDir = "$rootDir/trellis-webac" as File project(':trellis-app').projectDir = "$rootDir/trellis-app" as File project(':trellis-karaf').projectDir = "$rootDir/trellis-karaf" as File +project(':trellis-osgi').projectDir = "$rootDir/trellis-osgi" as File project(':trellis-test').projectDir = "$rootDir/trellis-test" as File diff --git a/trellis-osgi/build.gradle b/trellis-osgi/build.gradle new file mode 100644 index 000000000..aa7359101 --- /dev/null +++ b/trellis-osgi/build.gradle @@ -0,0 +1,138 @@ +buildscript { + repositories { + jcenter() + } +} + +description = """Integration tests for Trellis components""" + +def randomPort() { + try { + ServerSocket server = new ServerSocket() + server.setReuseAddress(true) + server.bind(new InetSocketAddress(0)) + int port = server.getLocalPort() + server.close() + return port + } catch (IOException e) { + throw new IOException('Failed to find random free port', e) + } +} + +repositories { + jcenter() + mavenLocal() + mavenCentral() +} + +configurations { + karafDistro { + description = 'Configuration used to isolate the dependency on the Karaf distro' + transitive = false + } +} + +sonarqube { + skipProject = true +} + +uploadArchives { + // This should be enabled once this module is more than just a test case + enabled = false +} + +dependencies { + implementation project(':trellis-api') + implementation project(':trellis-http') + implementation project(':trellis-io-jena') + implementation project(':trellis-namespaces') + implementation project(':trellis-vocabulary') + + testCompile project(':trellis-agent') + testCompile project(':trellis-amqp') + testCompile project(':trellis-audit') + testCompile project(':trellis-constraint-rules') + testCompile project(':trellis-event-serialization') + testCompile project(':trellis-file') + testCompile project(':trellis-id') + testCompile project(':trellis-jms') + testCompile project(':trellis-kafka') + testCompile project(':trellis-triplestore') + testCompile project(':trellis-webac') + testCompile project(':trellis-karaf') + + testCompile group: 'ch.qos.logback', name: 'logback-classic', version: logbackVersion + testCompile group: 'org.apache.jena', name: 'jena-osgi', version: jenaVersion + testCompile group: 'org.apache.karaf.features', name: 'standard', version: karafVersion + testCompile group: 'org.apache.karaf.features', name: 'org.apache.karaf.features.core', version: karafVersion + testCompile group: 'org.ops4j.pax.exam', name: 'pax-exam', version: paxExamVersion + testCompile group: 'org.ops4j.pax.exam', name: 'pax-exam-junit4', version: paxExamVersion + testCompile group: 'org.ops4j.pax.exam', name: 'pax-exam-container-karaf', version: paxExamVersion + testCompile group: 'org.osgi', name: 'org.osgi.core', version: osgiVersion + testCompile group: 'org.osgi', name: 'org.osgi.compendium', version: osgiCompendiumVersion + testCompile group: 'org.mockito', name: 'mockito-core', version: mockitoVersion + testCompile group: 'org.glassfish.hk2.external', name: 'javax.inject', version: javaxInjectVersion + + testCompile group: 'org.apache.karaf.features', name: 'standard', version: karafVersion, classifier:'features', ext: 'xml' + + karafDistro group: 'org.apache.karaf', name: 'apache-karaf', version: karafVersion, ext: 'zip' +} + + +task generateDependsFile { + // This is useful for the org.ops4j.pax.exam.CoreOptions.maven() stuff + File outputFileDir = project.file( "${project.buildDir}/classes/java/test/META-INF/maven/" ) + File outputFile = new File( outputFileDir, 'dependencies.properties' ) + outputs.file outputFile + + doFirst { + outputFileDir.mkdirs() + Properties properties = new Properties(); + + // first we add our GAV info + properties.setProperty( "groupId", "${project.group}" ); + properties.setProperty( "artifactId", project.name ); + properties.setProperty( "version", "${project.version}" ); + properties.setProperty( "${project.group}/${project.name}/version", "${project.version}" ); + + // then for all our deps + project.configurations.testRuntime.resolvedConfiguration.resolvedArtifacts.each { + final String keyBase = it.moduleVersion.id.group + '/' + it.moduleVersion.id.name; + properties.setProperty( "${keyBase}/scope", "compile" ) + properties.setProperty( "${keyBase}/type", it.extension ) + properties.setProperty( "${keyBase}/version", it.moduleVersion.id.version ) + } + + FileOutputStream outputStream = new FileOutputStream( outputFile ); + try { + properties.store( outputStream, "Generated from Gradle for PaxExam testing" ) + } + finally { + outputStream.close() + } + } +} + +test { + systemProperty 'karaf.version', karafVersion + systemProperty 'karaf.commonsIo.version', commonsIoVersion + systemProperty 'jena.version', jenaVersion + + systemProperty 'karaf.ssh.port', randomPort() + systemProperty 'karaf.rmiServer.port', randomPort() + systemProperty 'karaf.rmiRegistry.port', randomPort() + + // TODO - re-enable testing for JDK 10 once karaf support catches up + enabled = ! JavaVersion.current().isJava10Compatible() + + jacoco { + enabled = true + } +} + +tasks.test.dependsOn tasks.generateDependsFile + +rootProject.childProjects.findAll { n, p -> p != project }.each { n, p -> + tasks.test.dependsOn p.tasks.install +} + diff --git a/trellis-test/src/test/java/org/trellisldp/test/OSGiTest.java b/trellis-osgi/src/test/java/org/trellisldp/osgi/OSGiTest.java similarity index 99% rename from trellis-test/src/test/java/org/trellisldp/test/OSGiTest.java rename to trellis-osgi/src/test/java/org/trellisldp/osgi/OSGiTest.java index 66417f62c..4f45c6142 100644 --- a/trellis-test/src/test/java/org/trellisldp/test/OSGiTest.java +++ b/trellis-osgi/src/test/java/org/trellisldp/osgi/OSGiTest.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.trellisldp.test; +package org.trellisldp.osgi; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; diff --git a/trellis-test/build.gradle b/trellis-test/build.gradle index ff2cbf954..c66a062cb 100644 --- a/trellis-test/build.gradle +++ b/trellis-test/build.gradle @@ -1,23 +1,4 @@ -buildscript { - repositories { - jcenter() - } -} - -description = """Integration tests for Trellis components""" - -def randomPort() { - try { - ServerSocket server = new ServerSocket() - server.setReuseAddress(true) - server.bind(new InetSocketAddress(0)) - int port = server.getLocalPort() - server.close() - return port - } catch (IOException e) { - throw new IOException('Failed to find random free port', e) - } -} +description = """Common tests for Trellis components""" repositories { jcenter() @@ -25,13 +6,6 @@ repositories { mavenCentral() } -configurations { - karafDistro { - description = 'Configuration used to isolate the dependency on the Karaf distro' - transitive = false - } -} - sonarqube { skipProject = true } @@ -51,94 +25,15 @@ dependencies { implementation project(':trellis-api') implementation project(':trellis-http') implementation project(':trellis-io-jena') - implementation project(':trellis-namespaces') implementation project(':trellis-vocabulary') - testCompile project(':trellis-agent') - testCompile project(':trellis-amqp') - testCompile project(':trellis-audit') - testCompile project(':trellis-constraint-rules') - testCompile project(':trellis-event-serialization') - testCompile project(':trellis-file') - testCompile project(':trellis-id') - testCompile project(':trellis-jms') - testCompile project(':trellis-kafka') - testCompile project(':trellis-triplestore') - testCompile project(':trellis-webac') - testCompile project(':trellis-karaf') - testCompile group: 'ch.qos.logback', name: 'logback-classic', version: logbackVersion - testCompile group: 'org.apache.jena', name: 'jena-osgi', version: jenaVersion - testCompile group: 'org.apache.karaf.features', name: 'standard', version: karafVersion - testCompile group: 'org.apache.karaf.features', name: 'org.apache.karaf.features.core', version: karafVersion - testCompile group: 'org.ops4j.pax.exam', name: 'pax-exam', version: paxExamVersion - testCompile group: 'org.ops4j.pax.exam', name: 'pax-exam-junit4', version: paxExamVersion - testCompile group: 'org.ops4j.pax.exam', name: 'pax-exam-container-karaf', version: paxExamVersion - testCompile group: 'org.osgi', name: 'org.osgi.core', version: osgiVersion - testCompile group: 'org.osgi', name: 'org.osgi.compendium', version: osgiCompendiumVersion testCompile group: 'org.mockito', name: 'mockito-core', version: mockitoVersion - testCompile group: 'org.glassfish.hk2.external', name: 'javax.inject', version: javaxInjectVersion - - testCompile group: 'org.apache.karaf.features', name: 'standard', version: karafVersion, classifier:'features', ext: 'xml' - - karafDistro group: 'org.apache.karaf', name: 'apache-karaf', version: karafVersion, ext: 'zip' -} - - -task generateDependsFile { - // This is useful for the org.ops4j.pax.exam.CoreOptions.maven() stuff - File outputFileDir = project.file( "${project.buildDir}/classes/java/test/META-INF/maven/" ) - File outputFile = new File( outputFileDir, 'dependencies.properties' ) - outputs.file outputFile - - doFirst { - outputFileDir.mkdirs() - Properties properties = new Properties(); - - // first we add our GAV info - properties.setProperty( "groupId", "${project.group}" ); - properties.setProperty( "artifactId", project.name ); - properties.setProperty( "version", "${project.version}" ); - properties.setProperty( "${project.group}/${project.name}/version", "${project.version}" ); - - // then for all our deps - project.configurations.testRuntime.resolvedConfiguration.resolvedArtifacts.each { - final String keyBase = it.moduleVersion.id.group + '/' + it.moduleVersion.id.name; - properties.setProperty( "${keyBase}/scope", "compile" ) - properties.setProperty( "${keyBase}/type", it.extension ) - properties.setProperty( "${keyBase}/version", it.moduleVersion.id.version ) - } - - FileOutputStream outputStream = new FileOutputStream( outputFile ); - try { - properties.store( outputStream, "Generated from Gradle for PaxExam testing" ) - } - finally { - outputStream.close() - } - } } test { - systemProperty 'karaf.version', karafVersion - systemProperty 'karaf.commonsIo.version', commonsIoVersion - systemProperty 'jena.version', jenaVersion - - systemProperty 'karaf.ssh.port', randomPort() - systemProperty 'karaf.rmiServer.port', randomPort() - systemProperty 'karaf.rmiRegistry.port', randomPort() - - // TODO - re-enable testing for JDK 10 once karaf support catches up - enabled = ! JavaVersion.current().isJava10Compatible() - jacoco { enabled = true } } -tasks.test.dependsOn tasks.generateDependsFile - -rootProject.childProjects.findAll { n, p -> p != project }.each { n, p -> - tasks.test.dependsOn p.tasks.install -} -