smart-executor-client/src/test/java/org/gcube/vremanagement/executor/client/SmartExecutorClientTest.java

112 lines
4.6 KiB
Java

package org.gcube.vremanagement.executor.client;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
import org.gcube.vremanagement.executor.api.types.Scheduling;
import org.gcube.vremanagement.executor.plugin.PluginDeclaration;
import org.gcube.vremanagement.executor.plugin.PluginStateEvolution;
import org.gcube.vremanagement.executor.plugin.ScheduledTask;
import org.gcube.vremanagement.helloworld.HelloWorldPlugin;
import org.gcube.vremanagement.helloworld.HelloWorldPluginDeclaration;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class SmartExecutorClientTest extends ContextTest {
private static Logger logger = LoggerFactory.getLogger(SmartExecutorClientTest.class);
public static final String HTTP_ADDRESS = "http://smartexecutor.d4science.org:8090/smart-executor/rest";
public static final String HTTPS_ADDRESS = "https://smartexecutor.d4science.org:8090/smart-executor/rest";
public static final String HOST = "smartexecutor.d4science.org";
@Test
public void testSetAddress() {
SmartExecutorClientImpl smartExecutorClient = new SmartExecutorClientImpl();
smartExecutorClient.setAddress(HTTP_ADDRESS);
Assert.assertTrue(smartExecutorClient.getAddress().compareTo(HTTP_ADDRESS) == 0);
Assert.assertTrue(smartExecutorClient.getHost().compareTo(HOST) == 0);
smartExecutorClient.setAddress(HTTPS_ADDRESS);
Assert.assertTrue(smartExecutorClient.getAddress().compareTo(HTTPS_ADDRESS) == 0);
Assert.assertTrue(smartExecutorClient.getHost().compareTo(HOST) == 0);
}
private LaunchParameter getLaunchParameter() {
Scheduling scheduling = new Scheduling(20);
Map<String, Object> inputs = new HashMap<String, Object>();
inputs.put(HelloWorldPlugin.SLEEP_TIME, TimeUnit.SECONDS.toMillis(10));
inputs.put("TestUUID", UUID.randomUUID());
LaunchParameter launchParameter = new LaunchParameter(HelloWorldPluginDeclaration.NAME, inputs);
launchParameter.setScheduling(scheduling);
return launchParameter;
}
// @Test
public void testServiceInteraction() throws IOException {
HelloWorldPluginDeclaration helloWorldPluginDeclaration = new HelloWorldPluginDeclaration();
logger.debug("Going to test smart executor using {} plugin", helloWorldPluginDeclaration.getName());
SmartExecutorClient smartExecutorClient = SmartExecutorClientFactory.getClient(helloWorldPluginDeclaration.getName());
String host = smartExecutorClient.getHost();
Assert.assertTrue(host.contains("pc-frosini.isti.cnr.it"));
List<PluginDeclaration> plugins = smartExecutorClient.getPlugins();
Assert.assertTrue(plugins.size()==1);
PluginDeclaration pluginDeclaration = plugins.get(0);
Assert.assertTrue(pluginDeclaration.getName().compareTo(helloWorldPluginDeclaration.getName())==0);
Assert.assertTrue(pluginDeclaration.getDescription().compareTo(helloWorldPluginDeclaration.getDescription())==0);
Assert.assertTrue(pluginDeclaration.getVersion().compareTo(helloWorldPluginDeclaration.getVersion())==0);
Assert.assertTrue(pluginDeclaration.getSupportedCapabilities().equals(helloWorldPluginDeclaration.getSupportedCapabilities()));
List<ScheduledTask> orphans = smartExecutorClient.getOrphanScheduledLaunches();
for(ScheduledTask orphan : orphans) {
boolean removed = smartExecutorClient.delete(orphan.getUUID(), true);
Assert.assertTrue(removed);
}
orphans = smartExecutorClient.getOrphanScheduledLaunches();
Assert.assertTrue(orphans.size()==0);
LaunchParameter launchParameter = getLaunchParameter();
UUID executionIdentifier = smartExecutorClient.launch(launchParameter);
List<ScheduledTask> launches = smartExecutorClient.getScheduledLaunches();
Assert.assertTrue(launches.size()==1);
ScheduledTask scheduledTask = launches.get(0);
Assert.assertTrue(scheduledTask.getUUID().compareTo(executionIdentifier)==0);
PluginStateEvolution pluginStateEvolution = smartExecutorClient.getPluginStateEvolution(executionIdentifier);
Assert.assertTrue(pluginStateEvolution.getUUID().compareTo(executionIdentifier)==0);
pluginStateEvolution = smartExecutorClient.getPluginStateEvolution(executionIdentifier, 1);
Assert.assertTrue(pluginStateEvolution.getUUID().compareTo(executionIdentifier)==0);
boolean removed = smartExecutorClient.delete(executionIdentifier, true);
Assert.assertTrue(removed);
orphans = smartExecutorClient.getOrphanScheduledLaunches();
Assert.assertTrue(orphans.size()==0);
}
}