Skip to content

librudder/rudder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rudder

Language grade: Java CircleCI CodeCov Maven Central

This project provides ability to run pieces of Java code inside 🐳Docker container and access objects like they’re outside.

Installation

Maven

Add this to your pom.xml:

<dependency>
    <groupId>com.github.librudder</groupId>
    <artifactId>rudder</artifactId>
    <version>{artifact-version}</version>
</dependency>

Gradle

Add this to your build.gradle:

implementation 'com.github.librudder:rudder:{artifact-version}'

Usage

Inherit from application you want to test. This application must have public static void main method and must implement RudderApplication<T> where T is application class. Also there must be a static setReadyCallback(Consumer<T>)

Example class to test:

import java.util.function.Consumer;
class TestApplication {

    public static void main(String[] args){

    }

    public String getCurrentHostname() {
        return System.getenv("HOSTNAME");
    }

}

class TestRudderApplication implements RudderApplication<TestRudderApplication> {

    private static Consumer<TestRudderApplication> callback;

    public static void setReadyCallback(final Consumer<TestRudderApplication> callback) {
        TestRudderApplication.callback = callback;
    }

    public static void main(String[] args){
        TestApplication.main(args);
        callback.apply(new TestRudderApplicatiion());
    }

}

And our test starter:

class Tester {
    public static void main(String[] args){
        Class<?> clazz = TestApplication.class;
        ContaineredApplication<TestApplication> container = new ContaineredApplication<>("adoptopenjdk/openjdk11:x86_64-ubuntu-jdk-11.28", clazz, List.of("raz", "dva"));
        container.start();

        final TestApplication application = container.getApplication();
        System.out.println(application.getCurrentHostname());
    }
}

This example will print the HOSTNAME environment variable defined inside the container (usually it’s container ID).

For more real life example check Spring example.

Building

Just run

./mvnw clean install

in the root project directory

Contributing