You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@edgent.apache.org by dl...@apache.org on 2016/05/26 12:47:11 UTC

[1/3] incubator-quarks git commit: Add a test for close job (blocked by QUARKS-180)

Repository: incubator-quarks
Updated Branches:
  refs/heads/master 9f97f31c7 -> 00236f8f4


Add a test for close job (blocked by QUARKS-180)


Project: http://git-wip-us.apache.org/repos/asf/incubator-quarks/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quarks/commit/353f8ca6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quarks/tree/353f8ca6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quarks/diff/353f8ca6

Branch: refs/heads/master
Commit: 353f8ca6a998d019d395ace471a0d66e443b7df1
Parents: d6cdfc6
Author: Dan Debrunner <dj...@debrunners.com>
Authored: Wed May 18 09:06:47 2016 -0700
Committer: Dan Debrunner <dj...@debrunners.com>
Committed: Wed May 18 09:06:47 2016 -0700

----------------------------------------------------------------------
 .../quarks/test/fvt/iot/IotProviderTest.java    | 77 ++++++++++++++++++++
 1 file changed, 77 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quarks/blob/353f8ca6/test/fvtiot/src/test/java/quarks/test/fvt/iot/IotProviderTest.java
----------------------------------------------------------------------
diff --git a/test/fvtiot/src/test/java/quarks/test/fvt/iot/IotProviderTest.java b/test/fvtiot/src/test/java/quarks/test/fvt/iot/IotProviderTest.java
index d6e5297..92526c5 100644
--- a/test/fvtiot/src/test/java/quarks/test/fvt/iot/IotProviderTest.java
+++ b/test/fvtiot/src/test/java/quarks/test/fvt/iot/IotProviderTest.java
@@ -18,6 +18,8 @@ under the License.
 */
 package quarks.test.fvt.iot;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
@@ -29,16 +31,24 @@ import java.util.concurrent.TimeUnit;
 
 import org.junit.Test;
 
+import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
 
 import quarks.apps.iot.IotDevicePubSub;
 import quarks.connectors.iot.Commands;
 import quarks.connectors.iot.IotDevice;
 import quarks.connectors.pubsub.PublishSubscribe;
+import quarks.execution.Job;
+import quarks.execution.Job.Action;
+import quarks.execution.mbeans.JobMXBean;
+import quarks.execution.services.ControlService;
 import quarks.providers.iot.IotProvider;
+import quarks.runtime.jsoncontrol.JsonControlService;
 import quarks.test.apps.iot.EchoIotDevice;
 import quarks.topology.TStream;
 import quarks.topology.Topology;
+import quarks.topology.mbeans.ApplicationServiceMXBean;
 import quarks.topology.services.ApplicationService;
 import quarks.topology.tester.Condition;
 
@@ -94,4 +104,71 @@ public class IotProviderTest {
         appOneChecker.get();
         assertTrue(appOnecontents.getResult().toString(), appOnecontents.valid());
     }
+    
+    /**
+     * Basic test we can stop applications
+     */
+    @Test
+    public void testIotProviderCloseApplicationDirect() throws Exception {
+
+        IotProvider provider = new IotProvider(EchoIotDevice::new);
+        
+        assertSame(provider.getApplicationService(),
+                provider.getServices().getService(ApplicationService.class));
+
+        provider.start();
+
+        IotTestApps.registerApplications(provider);
+
+        // Create a Submit AppOne request
+        JsonObject submitAppOne = IotAppServiceTest.newSubmitRequest("AppOne");
+        
+        // Create an application that sends a device event
+        // with the submit job command, and this will be echoed
+        // back as the command that Quarks will detect and pick
+        // up to start the application.
+        Topology submitter = provider.newTopology();
+        TStream<JsonObject> cmds = submitter.of(submitAppOne);
+        IotDevice publishedDevice = IotDevicePubSub.addIotDevice(submitter);
+        publishedDevice.events(cmds, Commands.CONTROL_SERVICE, 0);
+        Job appStarter = provider.submit(submitter).get();
+        
+        // appStarter.stateChange(Action.CLOSE);
+        
+        ControlService cs = provider.getServices().getService(ControlService.class);
+        assertTrue(cs instanceof JsonControlService);
+        JsonControlService jsc = (JsonControlService) cs;
+        
+        JobMXBean jobMbean;      
+        do {
+            Thread.sleep(100);
+            jobMbean = cs.getControl(JobMXBean.TYPE, "AppOne", JobMXBean.class);
+        } while (jobMbean == null);
+        assertEquals("AppOne", jobMbean.getName());
+        
+        // Now close the job
+        JsonObject closeJob = new JsonObject();     
+        closeJob.addProperty(JsonControlService.TYPE_KEY, JobMXBean.TYPE);
+        closeJob.addProperty(JsonControlService.ALIAS_KEY, "AppOne");      
+        JsonArray args = new JsonArray();
+        args.add(new JsonPrimitive(Action.CLOSE.name()));
+        closeJob.addProperty(JsonControlService.OP_KEY, "stateChange");
+        closeJob.add(JsonControlService.ARGS_KEY, args); 
+        
+        assertEquals(Job.State.RUNNING, appStarter.getCurrentState());
+        assertEquals(Job.State.RUNNING, jobMbean.getCurrentState());
+
+        jsc.controlRequest(closeJob);
+              
+        for (int i = 0; i < 30; i++) {
+            Thread.sleep(100);
+            jobMbean = cs.getControl(JobMXBean.TYPE, "AppOne", JobMXBean.class);
+            if (jobMbean == null)
+                break;
+        }
+        
+        // QUARKS-180
+        // assertNull(jobMbean);        
+        // assertEquals(Job.State.CLOSED, appStarter.getCurrentState());
+    }
 }


[3/3] incubator-quarks git commit: Merge pull request #120

Posted by dl...@apache.org.
Merge pull request #120

This closes #120


Project: http://git-wip-us.apache.org/repos/asf/incubator-quarks/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quarks/commit/00236f8f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quarks/tree/00236f8f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quarks/diff/00236f8f

Branch: refs/heads/master
Commit: 00236f8f42b518eccad2f0d5db7088db2bc5fa00
Parents: 9f97f31 7de29b6
Author: Dale LaBossiere <dl...@us.ibm.com>
Authored: Thu May 26 08:47:09 2016 -0400
Committer: Dale LaBossiere <dl...@us.ibm.com>
Committed: Thu May 26 08:47:09 2016 -0400

----------------------------------------------------------------------
 .../java/quarks/providers/iot/package-info.java | 13 ++++
 .../quarks/test/fvt/iot/IotProviderTest.java    | 77 ++++++++++++++++++++
 2 files changed, 90 insertions(+)
----------------------------------------------------------------------



[2/3] incubator-quarks git commit: Add close job description

Posted by dl...@apache.org.
Add close job description


Project: http://git-wip-us.apache.org/repos/asf/incubator-quarks/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quarks/commit/7de29b66
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quarks/tree/7de29b66
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quarks/diff/7de29b66

Branch: refs/heads/master
Commit: 7de29b6652362e15026aa43650206c08d8b47541
Parents: 353f8ca
Author: Dan Debrunner <dj...@debrunners.com>
Authored: Wed May 18 15:21:45 2016 -0700
Committer: Dan Debrunner <dj...@debrunners.com>
Committed: Wed May 18 15:21:45 2016 -0700

----------------------------------------------------------------------
 .../main/java/quarks/providers/iot/package-info.java   | 13 +++++++++++++
 1 file changed, 13 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quarks/blob/7de29b66/providers/iot/src/main/java/quarks/providers/iot/package-info.java
----------------------------------------------------------------------
diff --git a/providers/iot/src/main/java/quarks/providers/iot/package-info.java b/providers/iot/src/main/java/quarks/providers/iot/package-info.java
index befe330..5892239 100644
--- a/providers/iot/src/main/java/quarks/providers/iot/package-info.java
+++ b/providers/iot/src/main/java/quarks/providers/iot/package-info.java
@@ -63,6 +63,19 @@ under the License.
  * <td colspan=5>{@code {"type":"appService","alias":"quarks","op":"submit","args":["Heartbeat",{}]}}</td>
  * </tr>
  * <tr></tr>
+ * 
+ * <tr>
+ *    <th rowspan="2">Close (stop) a running registered application</th>
+ *    <td>{@code quarksControl}</td><td>{@link quarks.execution.mbeans.JobMXBean#TYPE job}</td>
+ *    <td><em>{@code applicationName}</em></td><td>{@link quarks.execution.mbeans.JobMXBean#stateChange(quarks.execution.Job.Action) stateChange}</td>
+ *    <td>{@code ["CLOSE"]}</td>
+ *    <td>{@link quarks.execution.mbeans.JobMXBean JobMXBean}</td>
+ * </tr>
+ * </tr>
+ * <th>Sample command data</th>
+ * <td colspan=5>{@code {"type":"job","alias":"Heartbeat","op":"stateChange","args":["CLOSE"]}}</td>
+ * </tr>
+ * <tr></tr>
  * </TABLE>
  * 
  */