All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.jexxa.jexxatest.JexxaIntegrationTest Maven / Gradle / Ivy

package io.jexxa.jexxatest;

import io.jexxa.core.JexxaMain;
import io.jexxa.jexxatest.integrationtest.messaging.MessageBinding;
import io.jexxa.jexxatest.integrationtest.rest.RESTBinding;
import kong.unirest.Unirest;
import kong.unirest.UnirestException;

import java.util.Properties;
import java.util.concurrent.TimeUnit;

import static io.jexxa.jexxatest.JexxaTest.loadJexxaTestProperties;
import static org.awaitility.Awaitility.await;

public class JexxaIntegrationTest
{
    private final Properties properties;
    private final Class application;
    private RESTBinding restBinding;
    private MessageBinding messageBinding;
    private final JexxaMain jexxaMain;

    public JexxaIntegrationTest(Class application)
    {
        this.application = application;
        jexxaMain = new JexxaMain(application);
        jexxaMain.addProperties( loadJexxaTestProperties() );
        this.properties = jexxaMain.getProperties();
    }

    public RESTBinding getRESTBinding()
    {
        if (restBinding == null)
        {
            restBinding = new RESTBinding(getProperties());
            await().atMost(10, TimeUnit.SECONDS)
                    .pollDelay(100, TimeUnit.MILLISECONDS)
                    .ignoreException(UnirestException.class)
                    .until(() -> restBinding.getBoundedContext().isRunning());
        }

        return restBinding;
    }

    public MessageBinding getMessageBinding()
    {
        if (messageBinding == null)
        {
            messageBinding = new MessageBinding(application, getProperties());
        }

        return messageBinding;
    }

    public Properties getProperties() {
        return properties;
    }

    public void shutDown()
    {
        if (messageBinding != null)
        {
            messageBinding.close();
        }
        Unirest.shutDown();
        jexxaMain.stop();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy