Skip to content

Commit

Permalink
[580] Create some integration tests. Create profiles for WildFly and …
Browse files Browse the repository at this point in the history
…Payara for testing.

Signed-off-by: James R. Perkins <jperkins@redhat.com>
  • Loading branch information
jamezp committed Jul 8, 2024
1 parent 92b9fdd commit b2a8c87
Show file tree
Hide file tree
Showing 28 changed files with 1,475 additions and 2 deletions.
84 changes: 84 additions & 0 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# This workflow will build a Java project with Maven
# For more information see: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions

name: Arquillian Integration Tests

on:
push:
branches:
- '**'
pull_request:
branches:
- '**'
schedule:
- cron: '0 0 * * *' # Every day at 00:00 UTC

# Only run the latest job
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true

jobs:
wildfly-integration:
name: 'WildFly Integration Tests'
runs-on: ${{ matrix.os }}
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest ]
java: ['11', '17', '21']

steps:
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
cache: 'maven'
- name: Build with Maven Java ${{ matrix.java }} - ${{ matrix.os }}
run: |
mvn clean install -U -B -fae '-Pwildfly' '-T1' '-Pintegration-tests'
- uses: actions/upload-artifact@v4
if: failure()
with:
name: surefire-reports-${{ matrix.os }}-${{ matrix.java }}
path: '**/surefire-reports/*'
- uses: actions/upload-artifact@v4
if: failure()
with:
name: server-logs-${{ matrix.os }}-${{ matrix.java }}
path: '**/server.log'

payara-integration:
name: 'Payara Integration Tests'
runs-on: ${{ matrix.os }}
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest ]
java: ['11', '17', '21']

steps:
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
cache: 'maven'
- name: Build with Maven Java ${{ matrix.java }} - ${{ matrix.os }}
run: |
mvn clean install -U -B -fae '-Ppayara' '-T1' '-Pintegration-tests'
- uses: actions/upload-artifact@v4
if: failure()
with:
name: surefire-reports-${{ matrix.os }}-${{ matrix.java }}
path: '**/surefire-reports/*'
- uses: actions/upload-artifact@v4
if: failure()
with:
name: server-logs-${{ matrix.os }}-${{ matrix.java }}
path: '**/server.log'
69 changes: 69 additions & 0 deletions integration-tests/common/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jboss.arquillian</groupId>
<artifactId>integration-tests</artifactId>
<version>1.9.0.Final-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

<artifactId>common-tests</artifactId>
<name>Arquillian Core: Common integration tests</name>
<description/>

<properties>
<version.org.junit>5.10.3</version.org.junit>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${version.org.junit}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
</dependency>
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.cdi-api</artifactId>
</dependency>
<dependency>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
</dependency>
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-container-test-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.test</groupId>
<artifactId>arquillian-test-api</artifactId>
</dependency>

<!-- Test Dependencies -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build/>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package org.jboss.arquillian.integration.test.common;

import java.net.URI;

/**
* The test environment setup.
*
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
*/
public class TestEnvironment {

private static final String PROTOCOL = System.getProperty("arq.protocol", "http");
private static final String HOST = System.getProperty("arq.host", "127.0.0.1");
private static final int PORT = Integer.parseInt(System.getProperty("arq.port", "8080"));
public static final String REST_PATH = "/rest";

private TestEnvironment() {
}

/**
* Returns the defined protocol to use for HTTP connections. The default is {@code http} and can be overridden
* with the {@code arq.protocol} system property.
*
* @return the HTTP protocol
*/
public static String protocol() {
return PROTOCOL;
}

/**
* Returns the defined host to use for HTTP connections. The default is {@code 127.0.0.1} and can be overridden
* with the {@code arq.host} system property.
*
* @return the HTTP host
*/
public static String host() {
return HOST;
}

/**
* Returns the defined port to use for HTTP connections. The default is {@code 8080} and can be overridden
* with the {@code arq.port} system property.
*
* @return the HTTP port
*/
public static int port() {
return PORT;
}

/**
* Creates a URI with the given paths appended to the {@linkplain #protocol() protocol}, {@linkplain #host() host}
* and {@linkplain #port() port}.
*
* @param paths the paths to append
*
* @return a new URI for an HTTP connection
*/
public static URI uri(final String... paths) {
final StringBuilder uri = new StringBuilder()
.append(protocol())
.append("://")
.append(host())
.append(':')
.append(port());
for (String path : paths) {
if (!path.isEmpty()) {
if (path.charAt(0) == '/') {
uri.append(path);
} else {
uri.append('/').append(path);
}
}
}
return URI.create(uri.toString());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.jboss.arquillian.integration.test.common.app;

import jakarta.enterprise.context.RequestScoped;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;

/**
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
*/
@Path("echo")
@RequestScoped
public class EchoResource {

@POST
public String echo(final String msg) {
return msg;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.jboss.arquillian.integration.test.common.app;

import jakarta.enterprise.context.ApplicationScoped;

/**
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
*/
@ApplicationScoped
public class Greeter {

public String greet(String name) {
return "Hello " + name + "!";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.jboss.arquillian.integration.test.common.app;

import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;
import org.jboss.arquillian.integration.test.common.TestEnvironment;

/**
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
*/
@ApplicationPath(TestEnvironment.REST_PATH)
public class RestActivator extends Application {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright The WildFly Authors
~ SPDX-License-Identifier: Apache-2.0
-->

<arquillian xmlns="http://jboss.org/schema/arquillian" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<container qualifier="default" default="true" mode="manual"/>
</arquillian>
51 changes: 51 additions & 0 deletions integration-tests/junit4-tests/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jboss.arquillian</groupId>
<artifactId>integration-tests</artifactId>
<version>1.9.0.Final-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

<artifactId>junit4-tests</artifactId>
<name>Arquillian Core: JUnit 4 Integration Tests</name>

<properties>
<version.org.junit>4.13.2</version.org.junit>
</properties>

<dependencies>

<!-- Test Dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<version>${version.org.junit}</version>
</dependency>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>common-tests</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<profiles>
<profile>
<id>wildfly</id>

<properties>
<skip.provision.server>false</skip.provision.server>
</properties>
</profile>
</profiles>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package org.jboss.arquillian.integration.test.cdi;

import java.net.URI;

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.integration.test.common.app.Greeter;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
*/
@RunWith(Arquillian.class)
@ApplicationScoped
public class CdiInjectionTest {

@Deployment
public static WebArchive createDeployment() {
return ShrinkWrap.create(WebArchive.class)
.addClass(Greeter.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}

@ArquillianResource
private URI uri;

@Inject
Greeter greeter;

@Test
public void validateGreeting() {
Assert.assertNotNull("Greeter should not be null", greeter);
Assert.assertEquals("Hello JUnit5!", greeter.greet("JUnit5"));
}
}
Loading

0 comments on commit b2a8c87

Please sign in to comment.