Skip to content

bszeti/kubernetes-integration-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Running integration tests with Kubernetes

Integration test on Kubernetes with Jenkins pipeline

Blog post: https://itnext.io/running-integration-tests-with-kubernetes-ae0fb71e207b

Directories:

  • app-users: Example Red Hat Fuse 7 application that takes messages from AMQ, makes database queries and calls a REST api
  • configuration/settings.xml: Maven settings.xml with the requires repos to build
  • integration-test: Tests written in Java with Junit, can be executed with Maven
  • arquillian-test: Test with Arquillian Cube on OpenShift

Jenkins pipelines:

  • Jenkinsfile: Builds app and executes integration test.
  • Jenkinsfile-basic: Executes integration test only. Setting only the important parameters.
  • Jenkinsfile-declarative: Using declarative syntax. Setting a different agent at stage level. Builds app and executes integration test.
  • Jenkinsfile-declarative-one-agent: Using declarative syntax. Agent is defined at the pipeline level. Executes integration test only.
  • Jenkinsfile-declarative-runas: Using declarative syntax. Pod sets runAsUser to make sure all containers are started with the same uid. No "umask 0000" is needed in the command. Requires 'anyuid' scc.
  • Jenkinsfile-declarative-restricted: Using declarative syntax. Only works if 'restricted' scc is being used, so the same random uid is set for all containers. No "umask 0000" is needed in the command.
  • Jenkinsfile-jnlp-base: Using separate container for jnlp and maven. Executes integration test only.
  • Jenkinsfile-mavenlocalrepo: Mounting a persisted volume as maven local repository to avoid downloading jars every time. Requires a 'mavenlocalrepo' persistent volume claim. Builds app and executes integration test.
  • Jenkinsfile-yaml: Reads yaml pod template from 'pod.yaml'. Builds app and executes integration test.
  • Jenkinsfile-arquillian: Run the arquillian-test integration test project. See README.md in its directory.

App-users

A Spring Boot application running a Camel route based on the Red Hat Fuse 7 stack.

Steps:

Build and run unit tests with Maven:

  • Use the provided settings.xml to access the required Maven repositories:

mvn -s ../configuration/settings.xml clean package

Integration-test

Tests written in Java using Junit5. Run with Maven: mvn clean test

Env variables required:

  • AMQ_USER: AMQ connection username
  • AMQ_PASSWORD: AMQ connection password

Test cases:

  • testSucc: Send message to user.in. Expect enriched message on user.out.
  • testRetry: Test AMQ transacted. REST api throws http 500 3x times before sending response. Send message to user.in. Expect enriched message on user.out.

Arquillian-test

Arquillian Cube based test. See README.md in its directory.

About

Integration test on Kubernetes with Jenkins pipeline

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published