diff --git a/pom.xml b/pom.xml
index 680ee58..089ff2c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,6 +84,13 @@
1.0.13
test
+
+ org.gcube.vremanagement
+ hello-world-se-plugin
+ [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)
+ test
+
+
diff --git a/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientImpl.java b/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientImpl.java
index fd49988..bb3af10 100644
--- a/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientImpl.java
+++ b/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientImpl.java
@@ -128,7 +128,6 @@ public class SmartExecutorClientImpl implements SmartExecutorClient {
GXHTTPStringRequest gxHTTPStringRequest = GXHTTPStringRequest.newRequest(address);
gxHTTPStringRequest.from(SmartExecutorClient.class.getSimpleName());
gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8);
- gxHTTPStringRequest.header("Accept", "text/plain");
gxHTTPStringRequest.path(RestConstants.PLUGINS_PATH_PART);
HttpURLConnection httpURLConnection = gxHTTPStringRequest.get();
@@ -157,7 +156,6 @@ public class SmartExecutorClientImpl implements SmartExecutorClient {
GXHTTPStringRequest gxHTTPStringRequest = GXHTTPStringRequest.newRequest(address);
gxHTTPStringRequest.from(SmartExecutorClient.class.getSimpleName());
gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8);
- gxHTTPStringRequest.header("Accept", "text/plain");
gxHTTPStringRequest.path(RestConstants.PLUGINS_PATH_PART);
gxHTTPStringRequest.path(name);
gxHTTPStringRequest.path(RestConstants.EXECUTIONS_PATH_PART);
@@ -203,7 +201,7 @@ public class SmartExecutorClientImpl implements SmartExecutorClient {
logger.info("Going to launch plugin {} on {} with parameters {} ", pluginName, host, launchParameter);
GXHTTPStringRequest gxHTTPStringRequest = GXHTTPStringRequest.newRequest(address);
gxHTTPStringRequest.from(SmartExecutorClient.class.getSimpleName());
- gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8);
+ gxHTTPStringRequest.header("Content-Type", GXConnection.APPLICATION_JSON_CHARSET_UTF_8);
gxHTTPStringRequest.header("Accept", "text/plain");
gxHTTPStringRequest.path(RestConstants.PLUGINS_PATH_PART);
gxHTTPStringRequest.path(pluginName);
@@ -297,7 +295,7 @@ public class SmartExecutorClientImpl implements SmartExecutorClient {
GXHTTPStringRequest gxHTTPStringRequest = GXHTTPStringRequest.newRequest(address);
gxHTTPStringRequest.from(SmartExecutorClient.class.getSimpleName());
- gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8);
+ gxHTTPStringRequest.header("Accept", "text/plain");
gxHTTPStringRequest.path(RestConstants.PLUGINS_PATH_PART);
gxHTTPStringRequest.path(pluginName);
gxHTTPStringRequest.path(RestConstants.EXECUTIONS_PATH_PART);
diff --git a/src/test/java/org/gcube/vremanagement/executor/client/SmartExecutorClientTest.java b/src/test/java/org/gcube/vremanagement/executor/client/SmartExecutorClientTest.java
index 5cec2a4..04e5a42 100644
--- a/src/test/java/org/gcube/vremanagement/executor/client/SmartExecutorClientTest.java
+++ b/src/test/java/org/gcube/vremanagement/executor/client/SmartExecutorClientTest.java
@@ -1,22 +1,28 @@
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.json.SEMapper;
+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;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-
/**
* @author Luca Frosini (ISTI - CNR)
*/
-public class SmartExecutorClientTest {
+public class SmartExecutorClientTest extends ContextTest {
private static Logger logger = LoggerFactory.getLogger(SmartExecutorClientTest.class);
@@ -38,10 +44,68 @@ public class SmartExecutorClientTest {
}
- @Test
- public void testUnmarshallPluginList() throws JsonParseException, JsonMappingException, IOException {
- String pluginList = "[{\"@class\":\"PluginDeclaration\",\"description\":\"Hello World Description\",\"supportedCapabilities\":{\"FakeKey\":\"FakeValue\"},\"version\":\"1.1.2\",\"name\":\"HelloWorld\"}]";
- List list = SEMapper.getInstance().unmarshalList(PluginDeclaration.class, pluginList);
- logger.debug("{}", SEMapper.getInstance().marshal(PluginDeclaration.class, list));
+ private LaunchParameter getLaunchParameter() {
+ Scheduling scheduling = new Scheduling(20);
+ Map inputs = new HashMap();
+ 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 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 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 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);
+
+ }
+
}