/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.guvnor.ala.services.tests;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import org.guvnor.ala.docker.config.DockerProviderConfig;
import org.guvnor.ala.docker.config.DockerRuntimeConfig;
import org.guvnor.ala.docker.config.impl.DockerProviderConfigImpl;
import org.guvnor.ala.docker.config.impl.DockerRuntimeConfigImpl;
import org.guvnor.ala.docker.model.DockerProvider;
import org.guvnor.ala.docker.model.DockerRuntime;
import org.guvnor.ala.runtime.Runtime;
import org.guvnor.ala.services.api.RuntimeProvisioningService;
import org.guvnor.ala.services.api.itemlist.ProviderList;
import org.guvnor.ala.services.api.itemlist.ProviderTypeList;
import org.guvnor.ala.services.api.itemlist.RuntimeList;
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
import org.junit.Test;
import static org.junit.Assert.*;
public class RuntimeEndpointsTestIT {
private final String APP_URL = "http://localhost:8080/api/";
@Test
public void checkService() {
Client client = ClientBuilder.newClient();
WebTarget target = client.target( APP_URL );
ResteasyWebTarget restEasyTarget = ( ResteasyWebTarget ) target;
RuntimeProvisioningService proxy = restEasyTarget.proxy( RuntimeProvisioningService.class );
ProviderTypeList allProviderTypes = proxy.getProviderTypes( 0, 10, "", true );
assertNotNull( allProviderTypes );
assertEquals( 2, allProviderTypes.getItems().size() );
DockerProviderConfig dockerProviderConfig = new DockerProviderConfigImpl();
proxy.registerProvider( dockerProviderConfig );
ProviderList allProviders = proxy.getProviders( 0, 10, "", true );
assertEquals( 1, allProviders.getItems().size() );
assertTrue( allProviders.getItems().get( 0 ) instanceof DockerProvider );
DockerProvider dockerProvider = ( DockerProvider ) allProviders.getItems().get( 0 );
DockerRuntimeConfig runtimeConfig = new DockerRuntimeConfigImpl( dockerProvider, "kitematic/hello-world-nginx", "8080", true );
RuntimeList allRuntimes = proxy.getRuntimes( 0, 10, "", true );
assertEquals( 0, allRuntimes.getItems().size() );
String newRuntime = proxy.newRuntime( runtimeConfig );
allRuntimes = proxy.getRuntimes( 0, 10, "", true );
assertEquals( 1, allRuntimes.getItems().size() );
allRuntimes = proxy.getRuntimes( 0, 10, "", true );
assertEquals( 1, allRuntimes.getItems().size() );
Runtime runtime = allRuntimes.getItems().get( 0 );
assertTrue( runtime instanceof DockerRuntime );
DockerRuntime dockerRuntime = ( DockerRuntime ) runtime;
assertEquals( "Running", dockerRuntime.getState().getState() );
proxy.stopRuntime( newRuntime );
allRuntimes = proxy.getRuntimes( 0, 10, "", true );
assertEquals( 1, allRuntimes.getItems().size() );
runtime = allRuntimes.getItems().get( 0 );
assertTrue( runtime instanceof DockerRuntime );
dockerRuntime = ( DockerRuntime ) runtime;
assertEquals( "Stopped", dockerRuntime.getState().getState() );
proxy.destroyRuntime( newRuntime );
allRuntimes = proxy.getRuntimes( 0, 10, "", true );
assertEquals( 0, allRuntimes.getItems().size() );
}
}