You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iota.apache.org by to...@apache.org on 2016/09/28 01:19:13 UTC
[03/10] incubator-iota git commit: [IOTA-28] Adding tests for
GenericReceiver
[IOTA-28] Adding tests for GenericReceiver
Project: http://git-wip-us.apache.org/repos/asf/incubator-iota/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-iota/commit/a37164e6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-iota/tree/a37164e6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-iota/diff/a37164e6
Branch: refs/heads/master
Commit: a37164e6150d8bb64bd4dc9cbc50f5ab27b97972
Parents: a865f2f
Author: Barbara Gomes <ba...@gmail.com>
Authored: Fri Jul 22 14:38:05 2016 -0700
Committer: Barbara Gomes <ba...@gmail.com>
Committed: Fri Jul 22 14:38:05 2016 -0700
----------------------------------------------------------------------
fey-core/src/test/resources/fey-test-actor.jar | Bin 12703 -> 17735 bytes
.../org/apache/iota/fey/BaseAkkaSpec.scala | 13 ++
.../scala/org/apache/iota/fey/FeyCoreSpec.scala | 77 +++++++++-
.../iota/fey/FeyGenericActorReceiverSpec.scala | 139 +++++++++++++++++++
.../iota/fey/FeyGenericActorReceiverTest.scala | 70 ++++++++++
.../org/apache/iota/fey/JsonReceiverSpec.scala | 2 +-
.../org/apache/iota/fey/Utils_JSONTest.scala | 131 +++++++++++++++++
7 files changed, 428 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-iota/blob/a37164e6/fey-core/src/test/resources/fey-test-actor.jar
----------------------------------------------------------------------
diff --git a/fey-core/src/test/resources/fey-test-actor.jar b/fey-core/src/test/resources/fey-test-actor.jar
index d440cd1..e072c7b 100644
Binary files a/fey-core/src/test/resources/fey-test-actor.jar and b/fey-core/src/test/resources/fey-test-actor.jar differ
http://git-wip-us.apache.org/repos/asf/incubator-iota/blob/a37164e6/fey-core/src/test/scala/org/apache/iota/fey/BaseAkkaSpec.scala
----------------------------------------------------------------------
diff --git a/fey-core/src/test/scala/org/apache/iota/fey/BaseAkkaSpec.scala b/fey-core/src/test/scala/org/apache/iota/fey/BaseAkkaSpec.scala
index d77d28b..19c3b71 100644
--- a/fey-core/src/test/scala/org/apache/iota/fey/BaseAkkaSpec.scala
+++ b/fey-core/src/test/scala/org/apache/iota/fey/BaseAkkaSpec.scala
@@ -68,6 +68,19 @@ class BaseAkkaSpec extends BaseSpec with BeforeAndAfterAll with LoggingTest{
}
}
+ def expectActorInSystem(path: String, lookInSystem: ActorSystem, max: FiniteDuration = 3.seconds): ActorRef = {
+ probe.within(max) {
+ var actor = null: ActorRef
+ probe.awaitAssert {
+ (lookInSystem actorSelection path).tell(Identify(path), probe.ref)
+ probe.expectMsgPF(100 milliseconds) {
+ case ActorIdentity(`path`, Some(ref)) => actor = ref
+ }
+ }
+ actor
+ }
+ }
+
def verifyActorTermination(actor: ActorRef)(implicit system: ActorSystem): Unit = {
val watcher = TestProbe()
watcher.watch(actor)
http://git-wip-us.apache.org/repos/asf/incubator-iota/blob/a37164e6/fey-core/src/test/scala/org/apache/iota/fey/FeyCoreSpec.scala
----------------------------------------------------------------------
diff --git a/fey-core/src/test/scala/org/apache/iota/fey/FeyCoreSpec.scala b/fey-core/src/test/scala/org/apache/iota/fey/FeyCoreSpec.scala
index c616821..5ae55c2 100644
--- a/fey-core/src/test/scala/org/apache/iota/fey/FeyCoreSpec.scala
+++ b/fey-core/src/test/scala/org/apache/iota/fey/FeyCoreSpec.scala
@@ -18,11 +18,10 @@
package org.apache.iota.fey
-import java.io.File
+import java.nio.file.{Files, Paths}
import akka.actor.{ActorRef, PoisonPill, Props}
import akka.testkit.{EventFilter, TestProbe}
-
import scala.concurrent.duration.DurationInt
class FeyCoreSpec extends BaseAkkaSpec {
@@ -62,8 +61,8 @@ class FeyCoreSpec extends BaseAkkaSpec {
val orchestration_name = "TEST-ACTOR"
"Sending FeyCore.ORCHESTRATION_RECEIVED with CREATE command to FeyCore" should {
- feyCoreRef ! FeyCore.ORCHESTRATION_RECEIVED(getJSValueFromString(Utils_JSONTest.create_json_test), None)
s"result in creating an Orchestration child actor with the name '$orchestration_name'" in {
+ feyCoreRef ! FeyCore.ORCHESTRATION_RECEIVED(getJSValueFromString(Utils_JSONTest.create_json_test), None)
orchestrationref = TestProbe().expectActor(s"$feyPath/$orchestration_name")
}
s"result in creating an Ensemble child actor with the name '$orchestration_name/MY-ENSEMBLE-0001'" in {
@@ -155,10 +154,82 @@ class FeyCoreSpec extends BaseAkkaSpec {
}
}
+ var receiverRef:ActorRef = _
+ var receiverEnsenble:ActorRef = _
+ var receiverOrch:ActorRef = _
+ val receiverJSON = getJSValueFromString(Utils_JSONTest.generic_receiver_json)
+ val receiverOrchName = (receiverJSON \ JSON_PATH.GUID).as[String]
+
+ "Sending FeyCore.ORCHESTRATION_RECEIVED with CREATE command to FeyCore of a GenericReceiverActor" should {
+ s"result in creating an Orchestration child actor with the name '$receiverOrchName'" in {
+ feyCoreRef ! FeyCore.ORCHESTRATION_RECEIVED(receiverJSON, None)
+ receiverOrch = TestProbe().expectActor(s"$feyPath/$receiverOrchName")
+ }
+ s"result in creating an Ensemble child actor with the name '$receiverOrchName/RECEIVER-ENSEMBLE'" in {
+ receiverEnsenble = TestProbe().expectActor(s"$feyPath/$receiverOrchName/RECEIVER-ENSEMBLE")
+ }
+ s"result in creating a Performer child actor with the name '$receiverOrchName/RECEIVER-ENSEMBLE/MY_RECEIVER_PERFORMER'" in {
+ receiverRef = TestProbe().expectActor(s"$feyPath/$receiverOrchName/RECEIVER-ENSEMBLE/MY_RECEIVER_PERFORMER")
+ }
+ s"result in new entry to FEY_CACHE.activeOrchestrations with key '$receiverOrchName'" in {
+ FEY_CACHE.activeOrchestrations should contain key(receiverOrchName)
+ }
+ }
+
+ "Sending PROCESS message to the Receiver Performer" should {
+ "Send FeyCore.ORCHESTRATION_RECEIVED to FeyCore" in {
+ receiverRef ! FeyGenericActor.PROCESS(Utils_JSONTest.json_for_receiver_test)
+ TestProbe().expectActorInSystem(s"${FEY_CORE_ACTOR.actorRef.path}/RECEIVED-BY-ACTOR-RECEIVER", FEY_SYSTEM.system)
+ }
+ s"result in creating an Orchestration child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER'" in {
+ TestProbe().expectActorInSystem(s"${FEY_CORE_ACTOR.actorRef.path}/RECEIVED-BY-ACTOR-RECEIVER", FEY_SYSTEM.system)
+ }
+ s"result in creating an Ensemble child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0001'" in {
+ TestProbe().expectActorInSystem(s"${FEY_CORE_ACTOR.actorRef.path}/RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0001", FEY_SYSTEM.system)
+ }
+ s"result in creating an Ensemble child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0002'" in {
+ TestProbe().expectActorInSystem(s"${FEY_CORE_ACTOR.actorRef.path}/RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0002", FEY_SYSTEM.system)
+ }
+ s"result in creating a Performer child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0002/TEST-0001'" in {
+ TestProbe().expectActorInSystem(s"${FEY_CORE_ACTOR.actorRef.path}/RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0002/TEST-0001", FEY_SYSTEM.system)
+ }
+ s"result in creating a Performer child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0001/TEST-0001'" in {
+ TestProbe().expectActorInSystem(s"${FEY_CORE_ACTOR.actorRef.path}/RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0001/TEST-0001", FEY_SYSTEM.system)
+ }
+ s"result in one new entry to FEY_CACHE.activeOrchestrations with key 'RECEIVED-BY-ACTOR-RECEIVER'" in {
+ FEY_CACHE.activeOrchestrations should have size(2)
+ FEY_CACHE.activeOrchestrations should contain key(receiverOrchName)
+ FEY_CACHE.activeOrchestrations should contain key("RECEIVED-BY-ACTOR-RECEIVER")
+ }
+ }
+
+ "Sending PROCESS message to the Receiver Performer with command DELETE" should {
+ "STOP running orchestration" in {
+ val ref = TestProbe().expectActorInSystem(s"${FEY_CORE_ACTOR.actorRef.path}/RECEIVED-BY-ACTOR-RECEIVER", FEY_SYSTEM.system)
+ receiverRef ! FeyGenericActor.PROCESS(Utils_JSONTest.json_for_receiver_test_delete)
+ TestProbe().verifyActorTermination(ref)
+ }
+ s"result in one entry in FEY_CACHE.activeOrchestrations" in {
+ FEY_CACHE.activeOrchestrations should have size(1)
+ FEY_CACHE.activeOrchestrations should contain key(receiverOrchName)
+ }
+ }
+
+ "Sending PROCESS message to Receiver with checkpoint enabled" should {
+ "Save received JSON to checkpoint dir" in {
+ CONFIG.CHEKPOINT_ENABLED = true
+ receiverRef ! FeyGenericActor.PROCESS(Utils_JSONTest.json_for_receiver_test)
+ TestProbe().expectActorInSystem(s"${FEY_CORE_ACTOR.actorRef.path}/RECEIVED-BY-ACTOR-RECEIVER", FEY_SYSTEM.system)
+ Files.exists(Paths.get(s"${CONFIG.CHECKPOINT_DIR}/RECEIVED-BY-ACTOR-RECEIVER.json")) should be(true)
+ CONFIG.CHEKPOINT_ENABLED = false
+ }
+ }
+
"Stopping FeyCore" should {
"result in sending STOP message to Monitor actor" in {
feyCoreRef ! PoisonPill
monitor.expectMsgClass(1.seconds, classOf[Monitor.STOP])
+ TestProbe().verifyActorTermination(receiverRef)
}
}
http://git-wip-us.apache.org/repos/asf/incubator-iota/blob/a37164e6/fey-core/src/test/scala/org/apache/iota/fey/FeyGenericActorReceiverSpec.scala
----------------------------------------------------------------------
diff --git a/fey-core/src/test/scala/org/apache/iota/fey/FeyGenericActorReceiverSpec.scala b/fey-core/src/test/scala/org/apache/iota/fey/FeyGenericActorReceiverSpec.scala
new file mode 100644
index 0000000..34235db
--- /dev/null
+++ b/fey-core/src/test/scala/org/apache/iota/fey/FeyGenericActorReceiverSpec.scala
@@ -0,0 +1,139 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.iota.fey
+
+import java.nio.file.{Files, Paths}
+
+import akka.actor.Props
+import akka.testkit.{EventFilter, TestActorRef, TestProbe}
+
+import scala.concurrent.duration.{DurationInt, FiniteDuration}
+
+class FeyGenericActorReceiverSpec extends BaseAkkaSpec{
+
+ val parent = TestProbe("GENERIC-RECEIVER-PARENT")
+ val monitor = TestProbe("MONITOR-GENERIC")
+ val feyTB = TestProbe("GENERIC-FEY")
+ val connectToTB = TestProbe("REC-CONNECT")
+
+ val genericRef: TestActorRef[FeyGenericActorReceiverTest] =
+ TestActorRef[FeyGenericActorReceiverTest]( Props(new FeyGenericActorReceiverTest(Map.empty, 0.seconds,
+ Map("connect" -> connectToTB.ref),300.milliseconds,"MY-ORCH", "MY-ORCH", false){
+ override private[fey] val monitoring_actor = monitor.ref
+ override private[fey] val feyCore = feyTB.ref
+ }),parent.ref, "GENERIC-RECEIVER-TEST")
+
+ var genericState:FeyGenericActorReceiverTest = genericRef.underlyingActor
+ val path = genericRef.path.toString
+
+
+ "Creating a GenericActor with Schedule time defined" should {
+ "result in scheduler started" in{
+ genericState.isShedulerRunning() should be(true)
+ }
+ "result in onStart method called" in {
+ genericState.started should be(true)
+ }
+ "result in START message sent to Monitor" in{
+ monitor.expectMsgClass(classOf[Monitor.START])
+ }
+ "result in one active actor" in {
+ globalIdentifierRef ! IdentifyFeyActors.IDENTIFY_TREE(parent.ref.path.toString)
+ Thread.sleep(500)
+ IdentifyFeyActors.actorsPath should have size(1)
+ IdentifyFeyActors.actorsPath should contain(s"${parent.ref.path}/GENERIC-RECEIVER-TEST")
+ }
+ s"result in normal functioning of GenericActor" in {
+ genericRef ! "PROPAGATE"
+ connectToTB.expectMsg(FeyGenericActor.PROCESS("PROPAGATE-CALLED"))
+ }
+ }
+
+ "Sending PROCESS message to GenericReceiver" should {
+ "log message to Warn saying that the JSON could not be forwarded to FeyCore when JSON is invalid" in {
+ EventFilter.warning(message = s"Could not forward Orchestration TEST-ACTOR. Invalid JSON schema", occurrences = 1) intercept {
+ genericRef ! FeyGenericActor.PROCESS("INVALID_JSON")
+ feyTB.expectNoMsg(1.seconds)
+ }
+ }
+ "send ORCHESTRATION_RECEIVED to FeyCore when JSON to be processed has a valid schema" in {
+ genericRef ! FeyGenericActor.PROCESS("VALID_JSON")
+ feyTB.expectMsgClass(classOf[FeyCore.ORCHESTRATION_RECEIVED])
+ }
+ "Download jar from location and send ORCHESTRATION_RECEIVED to FeyCore when JSON has a location defined" in {
+ genericRef ! FeyGenericActor.PROCESS("JSON_LOCATION")
+ Files.exists(Paths.get(s"${CONFIG.DYNAMIC_JAR_REPO}/fey-virtual-sensor.jar"))
+ feyTB.expectMsgClass(classOf[FeyCore.ORCHESTRATION_RECEIVED])
+ }
+ }
+
+ "Scheduler component" should {
+ "call execute() method" in {
+ genericState.executing should be(true)
+ }
+ }
+
+ "Sending EXCEPTION(IllegalArgumentException) message to GenericActor" should {
+ "Throw IllegalArgumentException" in {
+ EventFilter[IllegalArgumentException](occurrences = 1) intercept {
+ genericRef ! FeyGenericActor.EXCEPTION(new IllegalArgumentException("Testing"))
+ }
+ }
+ "Result in restart of the actor with sequence of Monitoring: STOP -> RESTART -> START" in {
+ monitor.expectMsgClass(classOf[Monitor.STOP])
+ monitor.expectMsgClass(classOf[Monitor.RESTART])
+ //Restart does not change the actorRef but does change the object inside the ActorReference
+ genericState = genericRef.underlyingActor
+ monitor.expectMsgClass(classOf[Monitor.START])
+ }
+ "call onStart method" in {
+ genericState.started should be(true)
+ }
+ "call onRestart method" in {
+ Thread.sleep(100)
+ genericState.restarted should be(true)
+ }
+ "restart scheduler" in {
+ genericState.isShedulerRunning() should be(true)
+ }
+ }
+
+ "Sending STOP to GenericActor" should{
+ "terminate GenericActor" in{
+ genericRef ! FeyGenericActor.STOP
+ TestProbe().verifyActorTermination(genericRef)
+ TestProbe().notExpectActor(path)
+ }
+ "call onStop method" in {
+ genericState.stopped should be(true)
+ }
+ "cancel scheduler" in{
+ genericState.isShedulerRunning() should be(false)
+ }
+ "send STOP - TERMINATE message to Monitor" in{
+ monitor.expectMsgClass(classOf[Monitor.STOP])
+ }
+ "result in no active actors" in {
+ globalIdentifierRef ! IdentifyFeyActors.IDENTIFY_TREE(parent.ref.path.toString)
+ Thread.sleep(500)
+ IdentifyFeyActors.actorsPath shouldBe empty
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-iota/blob/a37164e6/fey-core/src/test/scala/org/apache/iota/fey/FeyGenericActorReceiverTest.scala
----------------------------------------------------------------------
diff --git a/fey-core/src/test/scala/org/apache/iota/fey/FeyGenericActorReceiverTest.scala b/fey-core/src/test/scala/org/apache/iota/fey/FeyGenericActorReceiverTest.scala
new file mode 100644
index 0000000..c110923
--- /dev/null
+++ b/fey-core/src/test/scala/org/apache/iota/fey/FeyGenericActorReceiverTest.scala
@@ -0,0 +1,70 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.iota.fey
+
+import akka.actor.ActorRef
+import scala.concurrent.duration.{DurationInt, FiniteDuration}
+import scala.concurrent.duration.FiniteDuration
+
+class FeyGenericActorReceiverTest(override val params: Map[String,String] = Map.empty,
+ override val backoff: FiniteDuration = 1.minutes,
+ override val connectTo: Map[String,ActorRef] = Map.empty,
+ override val schedulerTimeInterval: FiniteDuration = 2.seconds,
+ override val orchestrationName: String = "",
+ override val orchestrationID: String = "",
+ override val autoScale: Boolean = false) extends FeyGenericActorReceiver {
+
+ override def customReceive:Receive = {
+ case "PROPAGATE" => propagateMessage("PROPAGATE-CALLED")
+ case x => log.debug(s"Message not treated: $x")
+ }
+
+ override def getJSONString[T](input: T): String = {
+ input match{
+ case "VALID_JSON" => Utils_JSONTest.create_json_test
+ case "INVALID_JSON" => Utils_JSONTest.test_json_schema_invalid
+ case "JSON_LOCATION" => Utils_JSONTest.location_test_2
+ }
+ }
+
+ var count = 0
+ var started = false
+ var executing = false
+ var stopped = false
+ var restarted = false
+
+ override def onStart(): Unit = {
+ started = true
+ }
+
+ override def execute(): Unit = {
+ log.info(s"Executing action in ${self.path.name}")
+ executing = true
+ }
+
+ override def onStop(): Unit = {
+ log.info(s"Actor ${self.path.name} stopped.")
+ stopped = true
+ }
+
+ override def onRestart(reason: Throwable): Unit = {
+ restarted = true
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-iota/blob/a37164e6/fey-core/src/test/scala/org/apache/iota/fey/JsonReceiverSpec.scala
----------------------------------------------------------------------
diff --git a/fey-core/src/test/scala/org/apache/iota/fey/JsonReceiverSpec.scala b/fey-core/src/test/scala/org/apache/iota/fey/JsonReceiverSpec.scala
index 1cf25ee..5691aef 100644
--- a/fey-core/src/test/scala/org/apache/iota/fey/JsonReceiverSpec.scala
+++ b/fey-core/src/test/scala/org/apache/iota/fey/JsonReceiverSpec.scala
@@ -63,7 +63,7 @@ class JsonReceiverSpec extends BaseAkkaSpec with LoggingTest{
}
"download jar dynamically from URL" in {
receiver.checkForLocation(getJSValueFromString(Utils_JSONTest.location_test))
- Files.exists(Paths.get(s"${CONFIG.DYNAMIC_JAR_REPO}/fey-stream.jar"))
+ Files.exists(Paths.get(s"${CONFIG.DYNAMIC_JAR_REPO}/fey-stream.jar")) should be(true)
}
}
http://git-wip-us.apache.org/repos/asf/incubator-iota/blob/a37164e6/fey-core/src/test/scala/org/apache/iota/fey/Utils_JSONTest.scala
----------------------------------------------------------------------
diff --git a/fey-core/src/test/scala/org/apache/iota/fey/Utils_JSONTest.scala b/fey-core/src/test/scala/org/apache/iota/fey/Utils_JSONTest.scala
index 417ba54..70d3ddc 100644
--- a/fey-core/src/test/scala/org/apache/iota/fey/Utils_JSONTest.scala
+++ b/fey-core/src/test/scala/org/apache/iota/fey/Utils_JSONTest.scala
@@ -417,4 +417,135 @@ object Utils_JSONTest {
}
]
}"""
+
+ val location_test_2 =
+ """{
+ "guid": "Orch2",
+ "command": "CREATE",
+ "timestamp": "591997890",
+ "name": "DESCRIPTION",
+ "ensembles": [
+ {
+ "guid": "En2",
+ "command": "NONE",
+ "performers": [
+ {
+ "guid": "S2",
+ "schedule": 1000,
+ "backoff": 0,
+ "source": {
+ "name": "fey-virtual-sensor.jar",
+ "classPath": "org.apache.iota.fey.performer.Sensor",
+ "location" :{
+ "url" : "https://github.com/apache/incubator-iota/raw/master/fey-examples/active-jar-repo"
+ },
+ "parameters": {
+ }
+ }
+ }
+ ],
+ "connections": [
+ ]
+ }
+ ]
+ }"""
+
+ val generic_receiver_json = """{
+ "guid": "RECEIVER_ORCHESTRATION",
+ "command": "CREATE",
+ "timestamp": "591997890",
+ "name": "DESCRIPTION",
+ "ensembles": [
+ {
+ "guid": "RECEIVER-ENSEMBLE",
+ "command": "NONE",
+ "performers": [
+ {
+ "guid": "MY_RECEIVER_PERFORMER",
+ "schedule": 0,
+ "backoff": 0,
+ "source": {
+ "name": "fey-test-actor.jar",
+ "classPath": "org.apache.iota.fey.TestReceiverActor",
+ "parameters": {
+ }
+ }
+ }
+ ],
+ "connections": [
+ ]
+ }
+ ]
+ }"""
+
+ val json_for_receiver_test =
+ """{
+ "guid" : "RECEIVED-BY-ACTOR-RECEIVER",
+ "command" : "CREATE",
+ "timestamp": "213263914979",
+ "name" : "ORCHESTRATION FOR TEST",
+ "ensembles" : [
+ {
+ "guid":"MY-ENSEMBLE-REC-0001",
+ "command": "NONE",
+ "performers":[
+ {
+ "guid": "TEST-0001",
+ "schedule": 0,
+ "backoff": 0,
+ "source": {
+ "name": "fey-test-actor.jar",
+ "classPath": "org.apache.iota.fey.TestActor",
+ "parameters": {}
+ }
+ }
+ ],
+ "connections":[]
+ },
+ {
+ "guid":"MY-ENSEMBLE-REC-0002",
+ "command": "NONE",
+ "performers":[
+ {
+ "guid": "TEST-0001",
+ "schedule": 0,
+ "backoff": 0,
+ "source": {
+ "name": "fey-test-actor.jar",
+ "classPath": "org.apache.iota.fey.TestActor_2",
+ "parameters": {}
+ }
+ }
+ ],
+ "connections":[]
+ }
+ ]
+ }"""
+
+ val json_for_receiver_test_delete =
+ """{
+ "guid" : "RECEIVED-BY-ACTOR-RECEIVER",
+ "command" : "DELETE",
+ "timestamp": "213263914979",
+ "name" : "ORCHESTRATION FOR TEST",
+ "ensembles" : [
+ {
+ "guid":"MY-ENSEMBLE-REC-0001",
+ "command": "NONE",
+ "performers":[
+ {
+ "guid": "TEST-0001",
+ "schedule": 0,
+ "backoff": 0,
+ "source": {
+ "name": "fey-test-actor.jar",
+ "classPath": "org.apache.iota.fey.TestActor",
+ "parameters": {}
+ }
+ }
+ ],
+ "connections":[]
+ }
+ ]
+ }"""
}