OK, so I've gotten to the point of testing our new design and ran into a
problem.

As soon as I add the spring framework as a build dependency on sbt, I seem
to run into some merge conflicts with other dependencies (?).

I'm not familiar with the sbt build system at all so I figured I should ask
you guys for ideas, I'll attach the build log (terminal output) and the
files changed to this email, so you guys can see what I'm doing (the
changes really come down to adding a line for the spring dependency and
adding that variable to the fey project's compile-time dependencies).

In the meantime, I'll read up on how sbt handles this sort of thing and see
if I can figure it out.

Cheers!
Lucas

On Fri, Jun 23, 2017 at 5:11 PM, Rafael Weingärtner <
[email protected]> wrote:

> We are not. Our doubt was regarding agents/performers/actors
> requirements, when we read the requirement for AKKA, which Fey uses
> (right?).
>
>
> We want dependency injection, and some of this "service" objects will have
> connections to other systems (e.g. database systems), so we wanted to check
> if AKKA required agents to be serializable; from our reading of AKKA
> documentation, this was not clear. Then we asked you guys here (it seems
> you are quite used to work with AKKA) and today I checked with AKKA
> community.
>
>
> I think by supporting remote actors you mean using AKKA clustering, right?
> (The topic of some other email exchange we had some time ago). We are
> working without AKKA (Fey) clustering for now; after fixing the bits for
> dependency injection we will take a look at this.
>
> On Fri, Jun 23, 2017 at 3:57 PM, Barbara <[email protected]>
> wrote:
>
>> Hi Rafael,
>>
>> Glad you guys figured that out.
>> As I said in one of the previous thread, Fey does not support remote
>> actors, so I'm not sure how are you guys able to instanciate an actor in a
>> different JVM using fey.
>>
>> Do you mind explain it ?
>>
>> Barbara Gomes
>> +1 (650) 713-6092 <+1%20650-713-6092>
>>
>> On Jun 23, 2017, at 12:44 PM, Rafael Weingärtner <
>> [email protected]> wrote:
>>
>> We found the answer for those questions.
>> In summary:
>> An ActorRef can be thought of as an address. Yes, we can send it over to
>> other JVMs (so long as they are in the same cluster), and can be used to
>> send messages to that Actor.
>> However (and this is Very Very Important), this isn't a remote procedure
>> call. It is absolutely illegal to make procedure calls to Actors, ever.
>> Instead, you send them messages.
>>
>> On Thu, Jun 22, 2017 at 7:57 PM, Rafael Weingärtner <
>> [email protected]> wrote:
>>
>>> In a more direct question, do agents instances need to be serializable?
>>>
>>> On Thu, Jun 22, 2017 at 7:16 PM, Lucas Berri Cristofolini <
>>> [email protected]> wrote:
>>>
>>>> So we've hit a few problems with our original design, and we're
>>>> discussing ideas for a possible alternative.
>>>>
>>>> When reading the documentation on akka actors and props (
>>>> http://doc.akka.io/docs/akka/current/scala/actors.html#crea
>>>> ting-actors-with-props) one question came to mind regarding the
>>>> following statement about the ActorRef type:
>>>>
>>>> "The ActorRef is also serializable and network-aware. This means that
>>>> you can serialize it, send it over the wire and use it on a remote host and
>>>> it will still be representing the same Actor on the original node, across
>>>> the network."
>>>>
>>>> Do you guys happen to know if that means that the ActorRef is
>>>> serializable and wherever it is used, will ALWAYS point to the original
>>>> Actor, running on its original JVM, or, is it possible that it would be
>>>> used to create another instance of the Actor, in another completely
>>>> separate JVM?
>>>>
>>>> Cheers!
>>>> Lucas
>>>>
>>>> On Sat, Jun 17, 2017 at 3:12 PM, Lucas Berri Cristofolini <
>>>> [email protected]> wrote:
>>>>
>>>>> Good catch. Seems that not much needs to be changed... I think simply
>>>>> adding the Spring extension to the ActorSystem config should do the trick.
>>>>>
>>>>> While that GitHub example I mentioned does use Spring to set the
>>>>> ActorSystem dependencies, I don't see that as being very useful for us
>>>>> right now, since we'd only use Spring for Actor-specific dependencies.
>>>>>
>>>>> If using Spring for the ActorSystem is interesting to the project as a
>>>>> whole, we could consider making some changes to make that work...
>>>>>
>>>>> I'll keep working on this as is for now. Let me know what you guys
>>>>> think about the ActorSystem idea.
>>>>>
>>>>> Cheers,
>>>>> Lucas
>>>>>
>>>>> On Fri, Jun 16, 2017 at 7:45 PM, Barbara Malta Gomes <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> I might be wrong, but in order to use Akka with Spring, dont we need
>>>>>> to also change the way the ActorSystem is being instantiated on Fey?
>>>>>>
>>>>>> On Fri, Jun 16, 2017 at 12:39 PM, Lucas Berri Cristofolini <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> So after a while pondering and going back and forth between a few
>>>>>>> possible implementations, I think we're on to something interesting.
>>>>>>>
>>>>>>> Let me try and give you guys an outline of the design we came up
>>>>>>> with:
>>>>>>>
>>>>>>>    - Create an Akka extension that will load the Spring context, as
>>>>>>>    shown here -> https://github.com/typesafehub
>>>>>>>    /activator-akka-java-spring
>>>>>>>    - Implement an ActorProducer that will then instatiate the
>>>>>>>    actors, as shown here -> http://doc.akka.io/docs/akka/c
>>>>>>>    urrent/scala/actors.html#dependency-injection
>>>>>>>    
>>>>>>> <http://doc.akka.io/docs/akka/current/scala/actors.html#dependency-injection>
>>>>>>>    - Modify "Orchestration.scala" to add an alternative
>>>>>>>    "CreateEnsemble" method which will use the Spring extension when 
>>>>>>> specified
>>>>>>>    - Modify "FeyCore.scala" by adding two possible fields to be
>>>>>>>    interpreted from the orchestration JSON. One to specify that the 
>>>>>>> performers
>>>>>>>    within that orchestration will be using Spring (so that we can call 
>>>>>>> the
>>>>>>>    alternate method mentioned above); and another one specifying the 
>>>>>>> path for
>>>>>>>    the Spring context file
>>>>>>>    - Modify the JSON validator to reflect these changes.
>>>>>>>
>>>>>>>
>>>>>>> This should keep the fey core generic, as we mentioned before, not
>>>>>>> making using Spring mandatory.
>>>>>>>
>>>>>>> Let me know what you guys think!
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Lucas
>>>>>>>
>>>>>>> On Tue, Jun 6, 2017 at 1:03 PM, Barbara <[email protected]
>>>>>>> > wrote:
>>>>>>>
>>>>>>>> That sounds good.
>>>>>>>>
>>>>>>>> Thank you Lucas.
>>>>>>>>
>>>>>>>> Looking forward for the out coming results.
>>>>>>>>
>>>>>>>> This new feature will be a good fit for The Fey Engine.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Barbara Gomes
>>>>>>>> +1 (650) 713-6092 <(650)%20713-6092>
>>>>>>>>
>>>>>>>> On Jun 6, 2017, at 8:42 AM, Lucas Berri Cristofolini <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>> I think using the Akka dependency injection system is a good
>>>>>>>> starting point. It should be sufficient for our needs and shouldn't 
>>>>>>>> take
>>>>>>>> too long to get it working.
>>>>>>>>
>>>>>>>> I'll try to get something up and running and report back. Once we
>>>>>>>> get it going maybe we can discuss a feature proposal and eventually 
>>>>>>>> even
>>>>>>>> bringing full spring integration to the fey core.
>>>>>>>>
>>>>>>>> Cheers!
>>>>>>>> Lucas
>>>>>>>>
>>>>>>>> On Mon, Jun 5, 2017 at 3:21 PM, Barbara Malta Gomes <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi there,
>>>>>>>>>
>>>>>>>>> I'm not very familiar with the Spring framework.
>>>>>>>>> I spent sometime reading about it and how it would integrate into
>>>>>>>>> Fey (Akka).
>>>>>>>>>
>>>>>>>>> Correct if I'm misunderstood:
>>>>>>>>>
>>>>>>>>> *@Rafael *is suggesting the complete integration of the Spring
>>>>>>>>> framework into Fey. Which would be a bit more complex, since Fey 
>>>>>>>>> would have
>>>>>>>>> to instantiate the Spring context and the Actor System would also 
>>>>>>>>> have to
>>>>>>>>> be instantiated using the Spring context. Which would imply that all 
>>>>>>>>> the
>>>>>>>>> necessary configuration for the Spring framework would have to be 
>>>>>>>>> defined
>>>>>>>>> upon Fey start-up (fey.conf file maybe).
>>>>>>>>>
>>>>>>>>> *@Lucas *is suggesting that we use the built-in dependency
>>>>>>>>> injection that Akka offers. This approach sounds simpler than the 
>>>>>>>>> Spring
>>>>>>>>> integration, and would also keep the "Generic" idea of Fey, where the
>>>>>>>>> developer should be able to use any framework he wants to.
>>>>>>>>>
>>>>>>>>> I personally think that it would be awesome if we could work on
>>>>>>>>> both approaches. Here are my reasons:
>>>>>>>>>
>>>>>>>>>    1. Spring is a fairly complex framework, and having it
>>>>>>>>>    integrated on Fey core would be a huge plus and would also offer a 
>>>>>>>>> more
>>>>>>>>>    sophisticated dependency injection framework.
>>>>>>>>>    2. Using the built-in Akka dependency injection would be cool
>>>>>>>>>    as well, since it seems way simpler to use and understand, and 
>>>>>>>>> developers
>>>>>>>>>    that are not familiar with the Spring framework (like me) would 
>>>>>>>>> not have a
>>>>>>>>>    hard time integrating it into the performers world.
>>>>>>>>>
>>>>>>>>> For both approaches, we would have to do some research and present
>>>>>>>>> an Integration idea into Fey.
>>>>>>>>>
>>>>>>>>> Perhaps we could start working on the proposal for *@Lucas 
>>>>>>>>> *suggestions
>>>>>>>>> first? What do you guys think?
>>>>>>>>>
>>>>>>>>> *Just as a heads-up:* Unfortunately, Fey still have some class
>>>>>>>>> load issues when the performer's dependencies are fairly complex. As 
>>>>>>>>> an
>>>>>>>>> example, we wrote an Apache Ignite performer and we had to go to some 
>>>>>>>>> hoops
>>>>>>>>> to get the Spring dependencies loaded in runtime, in fact, the final 
>>>>>>>>> fix
>>>>>>>>> was to manually add the dependency to the Fey Application when 
>>>>>>>>> starting
>>>>>>>>> Fey, on the run command (java -jar ...). Although it was a simple 
>>>>>>>>> fix, it
>>>>>>>>> would be nice to not have to do it anymore.
>>>>>>>>>
>>>>>>>>> Looking forward to hear your thoughts.
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sun, Jun 4, 2017 at 12:44 PM, Lucas Berri Cristofolini <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> I've been reading up on how Akka would handle dependency
>>>>>>>>>> injection (http://doc.akka.io/docs/akka/
>>>>>>>>>> current/scala/actors.html#dependency-injection), and it seems
>>>>>>>>>> that, as far as Akka is concerned, upon creating an Actor, we could 
>>>>>>>>>> pass a
>>>>>>>>>> DependencyInjector and an ApplicationContext within the actor's 
>>>>>>>>>> Props.
>>>>>>>>>>
>>>>>>>>>> So now I'm imagining that bringing this functionality to Fey
>>>>>>>>>> would be a simple matter of adding a few extra items (the
>>>>>>>>>> DependencyInjector class and the ApplicationContext) to the json that
>>>>>>>>>> defines an orchestration, and once the json is processed, verifying 
>>>>>>>>>> if
>>>>>>>>>> those items are present, and adding those to the Props before 
>>>>>>>>>> calling akka
>>>>>>>>>> to instance the actor.
>>>>>>>>>>
>>>>>>>>>> Still, I'm curious to see what you guys think about bringing this
>>>>>>>>>> feature to the fey-engine.
>>>>>>>>>>
>>>>>>>>>> On Sun, Jun 4, 2017 at 1:21 PM, Rafael Weingärtner <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> We started developing our first agents (performers) using Fey,
>>>>>>>>>>> and we found our first “problem”. There is no integration of Fey and
>>>>>>>>>>> Spring.  Or at least, we did not understand how to integrate Fey 
>>>>>>>>>>> with
>>>>>>>>>>> Spring.
>>>>>>>>>>>
>>>>>>>>>>> We want to instantiate our agents in Spring to enjoy all of its
>>>>>>>>>>> benefits (e.g. dependency injection, object management, easy 
>>>>>>>>>>> transaction
>>>>>>>>>>> configuration and so forth). Therefore, instead of telling Fey the
>>>>>>>>>>> performer class to instantiate, we would have to tell Fey the 
>>>>>>>>>>> source as the
>>>>>>>>>>> application context name and the bean name; so Fey can retrieve the 
>>>>>>>>>>> agent
>>>>>>>>>>> (object) already instantiated by Spring.
>>>>>>>>>>>
>>>>>>>>>>> This would have consequences on the performer constructor; we
>>>>>>>>>>> would need to add another hook to configure an agent in Fey such as 
>>>>>>>>>>> a
>>>>>>>>>>> post-constructor method that would be intended to do the same as the
>>>>>>>>>>> constructor today. I mean, we maintain everything we have so far, 
>>>>>>>>>>> and we
>>>>>>>>>>> add only a default constructor with no parameters and the 
>>>>>>>>>>> post-constructor
>>>>>>>>>>> method that would be hooked in Fey’s performer life-cycle.
>>>>>>>>>>>
>>>>>>>>>>> Then, we would have to possibilities, first the one we already
>>>>>>>>>>> have to instantiate an agent:
>>>>>>>>>>>
>>>>>>>>>>>  "source": {
>>>>>>>>>>>
>>>>>>>>>>>             "name": *"agentJarWithDependencies.jar"*,
>>>>>>>>>>>
>>>>>>>>>>>             "classPath": *"org.awesomeCompany.agentOne"*,
>>>>>>>>>>>
>>>>>>>>>>>             "parameters": {
>>>>>>>>>>>
>>>>>>>>>>>             }
>>>>>>>>>>>
>>>>>>>>>>> And an alternative for agent objects managed by Spring:
>>>>>>>>>>>
>>>>>>>>>>> "source": {
>>>>>>>>>>>
>>>>>>>>>>>             "name": *" agentJarWithDependencies.jar"*,
>>>>>>>>>>>
>>>>>>>>>>>             "applicationContextName":
>>>>>>>>>>> *"agentOneApplicationContext.xml"*,
>>>>>>>>>>>
>>>>>>>>>>>             "performerBeanName":
>>>>>>>>>>> *"agentOneApplicationContext.xml"*
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> This would require Fey to instantiate the Spring’s application
>>>>>>>>>>> context, and then look the bean up there. The idea is that 
>>>>>>>>>>> application
>>>>>>>>>>> context file can be found in the classpath.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> What do you guys think about this? We can work to create this
>>>>>>>>>>> integration after we discussed the changes that would be applied to 
>>>>>>>>>>> Fey.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Rafael Weingärtner
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Barbara Gomes
>>>>>>>>> Computer Engineer
>>>>>>>>> San Jose, CA
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Barbara Gomes
>>>>>> Computer Engineer
>>>>>> San Jose, CA
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Rafael Weingärtner
>>>
>>
>>
>>
>> --
>> Rafael Weingärtner
>>
>>
>
>
> --
> Rafael Weingärtner
>
/**
  * (C) Copyright Litbit 2016
  *
  * 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.
  *
  */

import sbt._
import sbt.Keys._
import sbtassembly.AssemblyPlugin.autoImport._

object ModuleDependencies {

  import Dependencies._
  val FeyDependencies           = compile(akka_actor,typesafe_config,playJson,slf4j,log4jbind,sprayCan,
                                            sprayRouting,jsonValidator,javaFilter,codec,apacheIO,playNetty,springframework) ++ test(akka_testkit, scala_test)
  val StreamDependencies        = provided(akka_actor, fey)
  val ZMQDependencies           = provided(akka_actor,  fey) ++ compile(zmq)
  val VirtualSensorDependencies = provided(akka_actor,  fey) ++ compile(math3)
}

object IotaBuild extends Build {

  import BuildSettings._

  lazy val parent = Project(
    id = "iota",
    base = file("."),
    aggregate = Seq(stream, zmq, virtual_sensor, fey),
    settings = rootbuildSettings ++ Seq(
      aggregate in update := false
    )
  )

  lazy val fey = Project(
    id = "fey-core",
    base = file("./fey-core"),
    settings = BasicSettings ++ FeybuildSettings ++ Seq(
      libraryDependencies ++= ModuleDependencies.FeyDependencies

    ))

  lazy val stream = Project(
    id = "fey-stream",
    base = file("./performers/stream"),
    settings = BasicSettings ++ StreambuildSettings ++ Seq(
      libraryDependencies ++= ModuleDependencies.StreamDependencies,
      assemblyJarName in assembly := "fey_stream.jar"
    )
  )

   lazy val zmq = Project(
    id = "fey-zmq",
    base = file("./performers/zmq"),
    settings = BasicSettings ++ ZMQbuildSettings ++ Seq(
      libraryDependencies ++= ModuleDependencies.ZMQDependencies,
        assemblyJarName in assembly := "fey_zmq.jar"
    ))

  lazy val virtual_sensor = Project(
    id = "fey-virtual-sensor",
    base = file("./performers/virtual_sensor"),
    settings = BasicSettings ++ VirtualSensorbuildSettings ++ Seq(
      libraryDependencies ++= ModuleDependencies.VirtualSensorDependencies,
      assemblyJarName in assembly := "fey-virtual-sensor.jar"
    ))
}
import sbt._

object Dependencies {

  object Resolvers {
    val typesafe = "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/";
    val sonatype = "Sonatype Release" at "https://oss.sonatype.org/content/repositories/releases";
    val mvnrepository = "MVN Repo" at "http://mvnrepository.com/artifact";
    val litbitBitbucket = "Litbit Repo" at "https://s3-us-west-2.amazonaws.com/maven.litbit.com/snapshots";
    val emuller = "emueller-bintray" at "http://dl.bintray.com/emueller/maven";

    val allResolvers = Seq(typesafe, sonatype, mvnrepository, emuller, litbitBitbucket)

  }

  def compile(deps: ModuleID*): Seq[ModuleID] = deps map (_ % "compile")

  def provided(deps: ModuleID*): Seq[ModuleID] = deps map (_ % "provided")

  def test(deps: ModuleID*): Seq[ModuleID] = deps map (_ % "test")

  def runtime(deps: ModuleID*): Seq[ModuleID] = deps map (_ % "runtime")

  def container(deps: ModuleID*): Seq[ModuleID] = deps map (_ % "container")

  val fey             = "org.apache.iota"     %% "fey-core"                   % "1.0-SNAPSHOT"
  val zmq             = "org.zeromq"          %  "jeromq"                     % "0.3.5"
  val math3           = "org.apache.commons"  %  "commons-math3"              % "3.2"
  val codec           = "commons-codec"       % "commons-codec"               % "1.10"
  val apacheIO        = "commons-io"          % "commons-io"                  % "2.4"

  val akka_actor      = "com.typesafe.akka"   %% "akka-actor"                 % "2.4.10"

  val typesafe_config = "com.typesafe"        %  "config"                     % "1.3.0"

  val playJson        = "com.typesafe.play"   %% "play-json"                  % "2.5.3"
  val playNetty       = "com.typesafe.play"   %% "play-netty-server"          % "2.5.8"
  val jsonValidator   = "com.eclipsesource"   %% "play-json-schema-validator" % "0.7.0"

  val springframework = "org.springframework" % "spring-context"              % "4.3.8.RELEASE"

  //Logger
  val slf4j           = "com.typesafe.akka"   %% "akka-slf4j"                 % "2.4.10"
  val log4jbind       = "ch.qos.logback"      %  "logback-classic"            % "1.1.7"
  val javaFilter      = "janino" % "janino"   %  "2.5.10"

  //restapi
  val sprayCan        = "io.spray"            %%  "spray-can"                 % "1.3.3"
  val sprayRouting    = "io.spray"            %%  "spray-routing"             % "1.3.3"

  //Tests
  val akka_testkit    = "com.typesafe.akka"   %% "akka-testkit"               % "2.4.8"
  val scala_test      = "org.scalatest"       %% "scalatest"                  % "3.0.0-RC4"

}
> assembly
[info] Updating {file:/home/lucas/Documents/Code/lucas-incubator-iota/}fey-core...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] Including from cache: jackson-annotations-2.7.6.jar
[info] Including from cache: reactive-streams-1.0.0.jar
[info] Including from cache: jackson-databind-2.7.6.jar
[info] Including from cache: guice-4.0.jar
[info] Including from cache: jackson-datatype-jdk8-2.7.6.jar
[info] Including from cache: jackson-datatype-jsr310-2.7.6.jar
[info] Including from cache: play-netty-utils-2.5.8.jar
[info] Including from cache: slf4j-api-1.7.21.jar
[info] Including from cache: javax.inject-1.jar
[info] Including from cache: aopalliance-1.0.jar
[info] Including from cache: guice-assistedinject-4.0.jar
[info] Including from cache: netty-reactive-streams-http-1.0.8.jar
[info] Including from cache: jul-to-slf4j-1.7.21.jar
[info] Including from cache: netty-reactive-streams-1.0.8.jar
[info] Including from cache: jcl-over-slf4j-1.7.21.jar
[info] Including from cache: netty-handler-4.0.41.Final.jar
[info] Including from cache: play-streams_2.11-2.5.8.jar
[info] Including from cache: twirl-api_2.11-1.1.1.jar
[info] Including from cache: netty-buffer-4.0.41.Final.jar
[info] Including from cache: netty-common-4.0.41.Final.jar
[info] Including from cache: netty-transport-4.0.41.Final.jar
[info] Including from cache: netty-codec-4.0.41.Final.jar
[info] Including from cache: commons-lang3-3.4.jar
[info] Including from cache: netty-codec-http-4.0.41.Final.jar
[info] Including from cache: netty-transport-native-epoll-4.0.41.Final-linux-x86_64.jar
[info] Including from cache: spring-context-4.3.8.RELEASE.jar
[info] Including from cache: scala-library-2.11.8.jar
[info] Including from cache: spring-aop-4.3.8.RELEASE.jar
[info] Including from cache: akka-stream_2.11-2.4.10.jar
[info] Including from cache: ssl-config-akka_2.11-0.2.1.jar
[info] Including from cache: xercesImpl-2.11.0.jar
[info] Including from cache: spring-beans-4.3.8.RELEASE.jar
[info] Including from cache: ssl-config-core_2.11-0.2.1.jar
[info] Including from cache: scala-parser-combinators_2.11-1.0.4.jar
[info] Including from cache: xml-apis-1.4.01.jar
[info] Including from cache: jta-1.1.jar
[info] Including from cache: akka-actor_2.11-2.4.10.jar
[info] Including from cache: mimepull-1.9.5.jar
[info] Including from cache: spring-core-4.3.8.RELEASE.jar
[info] Including from cache: commons-logging-1.2.jar
[info] Including from cache: spring-expression-4.3.8.RELEASE.jar
[info] Including from cache: logback-core-1.1.7.jar
[info] Including from cache: shapeless_2.11-1.2.4.jar
[info] Including from cache: config-1.3.0.jar
[info] Including from cache: spray-can_2.11-1.3.3.jar
[info] Including from cache: scala-java8-compat_2.11-0.7.0.jar
[info] Including from cache: scala-stm_2.11-0.7.jar
[info] Including from cache: spray-io_2.11-1.3.3.jar
[info] Including from cache: spray-util_2.11-1.3.3.jar
[info] Including from cache: joda-convert-1.8.1.jar
[info] Including from cache: play-json-schema-validator_2.11-0.7.0.jar
[info] Including from cache: spray-http_2.11-1.3.3.jar
[info] Including from cache: parboiled-scala_2.11-1.1.7.jar
[info] Including from cache: parboiled-core-1.1.7.jar
[info] Including from cache: spray-routing_2.11-1.3.3.jar
[info] Including from cache: spray-httpx_2.11-1.3.3.jar
[info] Including from cache: scala-xml_2.11-1.0.3.jar
[info] Including from cache: play-server_2.11-2.5.8.jar
[info] Including from cache: scala-reflect-2.11.8.jar
[info] Including from cache: akka-slf4j_2.11-2.4.10.jar
[info] Including from cache: logback-classic-1.1.7.jar
[info] Including from cache: play_2.11-2.5.8.jar
[info] Including from cache: build-link-2.5.8.jar
[info] Including from cache: play-exceptions-2.5.8.jar
[info] Including from cache: play-iteratees_2.11-2.5.8.jar
[info] Including from cache: guava-19.0.jar
[info] Including from cache: play-json_2.11-2.5.8.jar
[info] Including from cache: janino-2.5.10.jar
[info] Including from cache: play-functional_2.11-2.5.8.jar
[info] Including from cache: scalaz-core_2.11-7.2.0.jar
[info] Including from cache: commons-codec-1.10.jar
[info] Including from cache: play-datacommons_2.11-2.5.8.jar
[info] Including from cache: commons-io-2.4.jar
[info] Including from cache: play-netty-server_2.11-2.5.8.jar
[info] Including from cache: joda-time-2.9.4.jar
[info] Including from cache: jackson-core-2.7.6.jar
SETTING UP ...
[info] FeyCoreSpec:
[info] Creating FeyCore
[info] - should result in creating a child actor with the name 'FEY_IDENTIFIER'
[info] - should result in sending START message to Monitor actor
[info] Sending FeyCore.START to FeyCore
[info] - should result in creating a child actor with the name 'JSON_RECEIVER'
[info] - should result in starting FeyWatchService Thread
[info] Sending FeyCore.ORCHESTRATION_RECEIVED with CREATE command to FeyCore
[info] - should result in creating an Orchestration child actor with the name 'TEST-ACTOR'
[info] - should result in creating an Ensemble child actor with the name 'TEST-ACTOR/MY-ENSEMBLE-0001'
[info] - should result in creating an Ensemble child actor with the name 'TEST-ACTOR/MY-ENSEMBLE-0002'
[info] - should result in creating a Performer child actor with the name 'TEST-ACTOR/MY-ENSEMBLE-0001/TEST-0001'
[info] - should result in creating a Performer child actor with the name 'TEST-ACTOR/MY-ENSEMBLE-0002/TEST-0001'
[info] - should result in new entry to FEY_CACHE.activeOrchestrations with key 'TEST-ACTOR'
[info] Sending FeyCore.ORCHESTRATION_RECEIVED with UPDATE command to FeyCore
[info] - should result in creating a new Performer child actor with the name 'TEST-ACTOR/MY-ENSEMBLE-0001/TEST-0002'
[info] Sending FeyCore.ORCHESTRATION_RECEIVED with UPDATE command and DELETE ensemble to FeyCore
[info] - should result in termination of Ensemble with the name 'TEST-ACTOR/MY-ENSEMBLE-0001'
[info] - should result in termination of Performer with the name 'TEST-ACTOR/MY-ENSEMBLE-0001/TEST-0001'
[info] - should result in termination of Performer with the name 'TEST-ACTOR/MY-ENSEMBLE-0001/TEST-0002'
[info] Sending FeyCore.ORCHESTRATION_RECEIVED with RECREATE command and same Timestamp to FeyCore
[info] - should result in logging a 'not recreated' message at Warn 
[info] Sending FeyCore.JSON_TREE to FeyCore
[info] - should result in logging a 8 path messages at Info 
[info] Sending FeyCore.ORCHESTRATION_RECEIVED with DELETE command to FeyCore
[info] - should result in termination of Orchestration with the name 'TEST-ACTOR'
[info] - should result in sending TERMINATE message to Monitor actor
[info] - should result in termination of Ensemble with the name 'TEST-ACTOR/MY-ENSEMBLE-0002'
[info] - should result in termination of Performer with the name 'TEST-ACTOR/MY-ENSEMBLE-0002/TEST-0001'
[info] - should result in removing key 'TEST-ACTOR' at FEY_CACHE.activeOrchestrations
[info] Sending FeyCore.STOP_EMPTY_ORCHESTRATION to FeyCore
[info] - should result in termination of 'TEST-ORCH-2'
[info] - should result in sending Terminate message to Monitor actor
[info] - should result in empty FEY_CACHE.activeOrchestrations
[info] Sending FeyCore.ORCHESTRATION_RECEIVED with CREATE command to FeyCore of a GenericReceiverActor
[info] - should result in creating an Orchestration child actor with the name 'RECEIVER_ORCHESTRATION'
[info] - should result in creating an Ensemble child actor with the name 'RECEIVER_ORCHESTRATION/RECEIVER-ENSEMBLE'
[info] - should result in creating a Performer child actor with the name 'RECEIVER_ORCHESTRATION/RECEIVER-ENSEMBLE/MY_RECEIVER_PERFORMER'
[info] - should result in new entry to FEY_CACHE.activeOrchestrations with key 'RECEIVER_ORCHESTRATION'
[info] Sending PROCESS message to the Receiver Performer
[info] - should Send FeyCore.ORCHESTRATION_RECEIVED to FeyCore
[info] - should result in creating an Orchestration child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER'
[info] - should result in creating an Ensemble child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0001'
[info] - should result in creating an Ensemble child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0002'
[info] - should result in creating a Performer child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0002/TEST-0001'
[info] - should result in creating a Performer child actor with the name 'RECEIVED-BY-ACTOR-RECEIVER/MY-ENSEMBLE-REC-0001/TEST-0001'
[info] - should result in one new entry to FEY_CACHE.activeOrchestrations with key 'RECEIVED-BY-ACTOR-RECEIVER'
[info] Sending PROCESS message to the Receiver Performer with command DELETE
[info] - should STOP running orchestration
[info] - should result in one entry in FEY_CACHE.activeOrchestrations
[info] Sending PROCESS message to Receiver with checkpoint enabled
[info] - should Save received JSON to checkpoint dir
[info] Sending FeyCore.ORCHESTRATION_RECEIVED with CREATE AND GLOBAL performer command to FeyCore
[info] - should result in creating an Orchestration child actor with the name 'GLOBAL-PERFORMER'
[info] - should result in creating an Ensemble child actor with the name 'GLOBAL-PERFORMER/ENS-GLOBAL'
[info] - should result in creating a global Performer child actor with the name 'GLOBAL-PERFORMER/GLOBAL_MANAGER/GLOBAL-TEST'
[info] - should result in creating a Performer child actor with the name 'GLOBAL-PERFORMER/ENS-GLOBAL/PERFORMER-SCHEDULER'
[info] - should result in new entry to FEY_CACHE.activeOrchestrations with key 'GLOBAL-PERFORMER'
[info] - should result in one global actor created for orchestration
[info] - should result in globa metadata add to table
[info] - should result in right running actors
[info] Stopping Global actor
[ERROR] [06/24/2017 15:45:05.575] [FEY-TEST-akka.actor.default-dispatcher-6] [akka://FEY-TEST/user/FEY-CORE/GLOBAL-PERFORMER] DEAD Global Performer GLOBAL-TEST
org.apache.iota.fey.RestartGlobalPerformers: DEAD Global Performer GLOBAL-TEST
	at org.apache.iota.fey.GlobalPerformer$$anonfun$receive$1.applyOrElse(GlobalPerformer.scala:48)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:484)
	at org.apache.iota.fey.GlobalPerformer.aroundReceive(GlobalPerformer.scala:28)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
	at akka.actor.dungeon.DeathWatch$class.receivedTerminated(DeathWatch.scala:44)
	at akka.actor.ActorCell.receivedTerminated(ActorCell.scala:374)
	at akka.actor.ActorCell.autoReceiveMessage(ActorCell.scala:511)
	at akka.actor.ActorCell.invoke(ActorCell.scala:494)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
	at akka.dispatch.Mailbox.run(Mailbox.scala:224)
	at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

[info] - should result in sending logging error
[info] - should result in orchestration restarted
[info] - should all previous actors restarted
[info] Stopping orchestration with global performer
[info] - should result in sending TERMINATE message to Monitor actor
[info] - should result in no global actors for orchestration
[info] Stopping FeyCore
[info] - should result in sending STOP message to Monitor actor
[info] IdentifyFeyActorsSpec:
[info] Sending IdentifyFeyActors.IDENTIFY_TREE to IdentifyFeyActors
[info] - should result in one path added to IdentifyFeyActors.actorsPath
[info] - should result in path 'akka://FEY-TEST/user/GLOBAL-IDENTIFIER' 
[info] Creating a new actor in the system and sending IdentifyFeyActors.IDENTIFY_TREE to IdentifyFeyActors
[info] - should result in two paths added to IdentifyFeyActors.actorsPath
[info] - should result in matching paths
[info] Stopping previous added actor and sending IdentifyFeyActors.IDENTIFY_TREE to IdentifyFeyActors
[info] - should result in going back to have just one path added to IdentifyFeyActors.actorsPath
[info] - should result in path 'akka://FEY-TEST/user/GLOBAL-IDENTIFIER' 
[info] MonitorSpec:
[info] Creating a Monitor actor
[info] - should result in creation of one actor in the system
[info] - should result in one active actors
[info] Sending Monitor.START to monitor actor
[info] - should result in logging START message
[info] - should result in new entry to events Trie
[info] Sending Monitor.STOP to monitor actor
[info] - should result in logging STOP message
[info] - should not add new path to events Trie
[info] - should add new event to TrieNode
[info] Sending Monitor.RESTART to monitor actor
[info] - should result in logging RESTART message
[info] - should not add new path to events Trie
[info] - should add new event to TrieNode
[info] Sending Monitor.TERMINATE to monitor actor
[info] - should result in logging TERMINATE message
[info] - should not add new path to events Trie
[info] - should add new event to TrieNode
[info] Calling logInfo from a Monitor actor
[info] - should result in logging info when no throwable is specified
[info] - should result in logging error when throwable is specified
[info] Sending Monitor.START from a different sender to monitor actor
[info] - should result in logging START message
[info] - should result in new entry to events Trie
[info] OrchestrationSpec:
[info] Creating an Orchestration 
[info] - should result in sending START message to Monitor actor
[info] - should result in one paths added to IdentifyFeyActors.actorsPath
[info] - should result in empty Orchestration.ensembles state variable
[info] Sending Orchestration.CREATE_ENSEMBLES to Orchestration
[info] - should result in creation of Ensemble 'MY-ENSEMBLE-0001'
[info] - should result in creation of Ensemble 'MY-ENSEMBLE-0002'
[info] - should result in creation of two Performers
[info] - should result in two entries in Orchestration.ensembles matching the created ensembles
[info] - should result in two entries in ORCHESTRATION_CACHE.orchestration_metadata for ORCHESTRATION-TEST
[info] - should result in right entry in ORCHESTRATION_CACHE.orchestration_metadata for ORCHESTRATION-TEST and MY-ENSEMBLE-0001
[info] - should result in right entry in ORCHESTRATION_CACHE.orchestration_metadata for ORCHESTRATION-TEST and MY-ENSEMBLE-0002
[info] - should result in five paths added to IdentifyFeyActors.actorsPath
[info] Sending Orchestration.CREATE_ENSEMBLES to Orchestration with the same previous created Ensembles
[info] - should result in logging 'already exists' at Warn 
[info] - should not change state variable Orchestration.ensembles
[info] Creating a second Orchestration
[info] - should result in sending START message to Monitor actor
[info] - should result in empty Orchestration.ensembles state variable
[info] - should result in six paths added to IdentifyFeyActors.actorsPath
[info] Sending Orchestration.CREATE_ENSEMBLES to the second Orchestration
[info] - should result in creation of Ensemble 'MY-ENSEMBLE-0001'
[info] - should result in creation of one Performers
[info] - should result in one entry in Orchestration.ensembles matching the craeted ensemble
[info] - should result in one entries in ORCHESTRATION_CACHE.orchestration_metadata for TEST-ORCH-2
[info] - should result in right entry in ORCHESTRATION_CACHE.orchestration_metadata for TEST-ORCH-2 and MY-ENSEMBLE-0001
[info] - should result in eight paths added to IdentifyFeyActors.actorsPath
[info] Sending Orchestration.DELETE_ENSEMBLES to the second Orchestration
[info] - should result in termination of ensembles and the Orchestration itself
[info] - should result in sending TERMINATED message to Monitor actor
[info] - should result in FeyCore.STOP_EMPTY_ORCHESTRATION triggered by TEST-ORCH-2 to parent
[info] - should result in six paths added to IdentifyFeyActors.actorsPath
[info] - should result in empty state variable Orchestration.ensembles
[info] Stopping second Orchestration
[info] - should result in sending STOP message to Monitor actor
[info] Sending Orchestration.UPDATE_ENSEMBLES with Ensemble that does not exist
[info] - should result in logging 'no Ensemble' at Warn 
[info] Sending Orchestration.UPDATE_ENSEMBLES to Orchestration
[info] - should result in termination of Ensemble 'ORCHESTRATION-TEST/MY-ENSEMBLE-0001'
[info] - should result in termination of 'ORCHESTRATION-TEST/MY-ENSEMBLE-0001/TEST-0001'
[info] - should result in creation of two new performers
[info] - should result in six paths added to IdentifyFeyActors.actorsPath
[info] - should result in right entry in ORCHESTRATION_CACHE.orchestration_metadata for ORCHESTRATION-TEST and MY-ENSEMBLE-0001
[info] WatchServiceReceiverSpec:
[info] Creating WatchServiceReceiver
[info] - should process initial files in the JSON repository
[info] Start a Thread with WatchServiceReceiver
[info] - should Start Thread
[info] Start watching directory
[info] - should Starting receiving CREATED event
[info] - should Starting receiving UPDATE event
[info] processJson
[info] - should log to warn level when json has invalid schema
[info] interrupt watchservice
[info] - should interrupt thread
[info] JsonReceiverSpec:
[info] Executing validJson in JsonReceiver
[info] - should return false when json schema is not right
[info] - should log message to Error
[info] - should return true when Json schema is valid
[info] Executing checkForLocation in JsonReceiver
[info] - should log message at Debug level
[info] - should download jar dynamically from URL
[info] Start a Thread with the JSON receiver
[info] - should Start Thread
[info] - should execute execute() method inside run
[info] Interrupting the receiver Thread
[info] - should Throw Interrupted exception
[info] - should execute exceptionOnRun method
[info] FeyGenericActorSpec:
[info] Creating a GenericActor with Schedule time defined
[info] - should result in scheduler started
[info] - should result in onStart method called
[info] - should result in START message sent to Monitor
[info] - should result in one active actor
[info] Backoff of GenericActor
[info] - should be zero until the first PROCESS message
[info] - should change when first PROCESS message was received
[info] Sending PROCESS message to GenericActor
[info] - should call processMessage method
[info] customReceive method
[info] - should process any non treated message
[info] Sending PROCESS message to GenericActor
[info] - should be discarded when backoff is enabled
[info] - should be processed when backoff has finished
[info] Calling startBackoff
[info] - should set endBackoff with time now
[info] Calling propagateMessage
[info] - should send message to connectTo actors
[info] Scheduler component
[info] - should call execute() method
[info] Sending EXCEPTION(IllegalArgumentException) message to GenericActor
[info] - should Throw IllegalArgumentException
[info] - should Result in restart of the actor with sequence of Monitoring: STOP -> RESTART -> START
[info] - should call onStart method
[info] - should call onRestart method
[info] - should restart scheduler
[info] Sending STOP to GenericActor
[info] - should terminate GenericActor
[info] - should call onStop method
[info] - should cancel scheduler
[info] - should send STOP - TERMINATE message to Monitor
[info] - should result in no active actors
[info] Creating GenericActor with schedule anc backoff equal to zero
[info] - should not start a scheduler
[info] - should result in one active actor
[info] - should result in no discarded PROCESS messages
[info] GlobalPerformerSpec:
[info] Creating an Global Manager 
[info] - should result in sending START message to Monitor actor
[info] - should result in creating an Orchestration child actor with the name 'GLOBAL-ORCH'
[info] - should result in creating an Ensemble child actor with the name 'akka://FEY-TEST/system/CORE-75/GLOBAL-ORCH/ENS-GLOBAL'
[info] - should result in creating a global Performer child actor with the name 'akka://FEY-TEST/system/CORE-75/GLOBAL-ORCH/GLOBAL_MANAGER/GLOBAL-TEST'
[info] - should result in creating a Performer child actor with the name 'akka://FEY-TEST/system/CORE-75/GLOBAL-ORCH/ENS-GLOBAL/PERFORMER-SCHEDULER'
[info] - should result in one global actor created for orchestration
[info] - should result in right number of running actors
[info] Stopping performer inside ensemble
[ERROR] [06/24/2017 15:45:23.298] [FEY-TEST-akka.actor.default-dispatcher-11] [akka://FEY-TEST/system/CORE-75/GLOBAL-ORCH/ENS-GLOBAL] DEAD Performer PERFORMER-SCHEDULER
org.apache.iota.fey.RestartEnsemble: DEAD Performer PERFORMER-SCHEDULER
	at org.apache.iota.fey.Ensemble$$anonfun$receive$1.applyOrElse(Ensemble.scala:62)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:484)
	at org.apache.iota.fey.Ensemble.aroundReceive(Ensemble.scala:29)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
	at akka.actor.dungeon.DeathWatch$class.receivedTerminated(DeathWatch.scala:44)
	at akka.actor.ActorCell.receivedTerminated(ActorCell.scala:374)
	at akka.actor.ActorCell.autoReceiveMessage(ActorCell.scala:511)
	at akka.actor.ActorCell.invoke(ActorCell.scala:494)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
	at akka.dispatch.Mailbox.run(Mailbox.scala:224)
	at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

[info] - should Send stop message to monitor
[info] Stopping ensemble
[info] - should Send stop message to monitor
[info] - should result in no orchestration running
[info] - should not affect global performer
[info] Stopping global performer
[ERROR] [06/24/2017 15:45:24.509] [FEY-TEST-akka.actor.default-dispatcher-3] [akka://FEY-TEST/system/CORE-75/GLOBAL-ORCH] DEAD Global Performer GLOBAL-TEST
org.apache.iota.fey.RestartGlobalPerformers: DEAD Global Performer GLOBAL-TEST
	at org.apache.iota.fey.GlobalPerformer$$anonfun$receive$1.applyOrElse(GlobalPerformer.scala:48)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:484)
	at org.apache.iota.fey.GlobalPerformer.aroundReceive(GlobalPerformer.scala:28)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
	at akka.actor.dungeon.DeathWatch$class.receivedTerminated(DeathWatch.scala:44)
	at akka.actor.ActorCell.receivedTerminated(ActorCell.scala:374)
	at akka.actor.ActorCell.autoReceiveMessage(ActorCell.scala:511)
	at akka.testkit.TestActorRef$$anon$1.autoReceiveMessage(TestActorRef.scala:60)
	at akka.actor.ActorCell.invoke(ActorCell.scala:494)
	at akka.testkit.CallingThreadDispatcher.process$1(CallingThreadDispatcher.scala:250)
	at akka.testkit.CallingThreadDispatcher.runQueue(CallingThreadDispatcher.scala:283)
	at akka.testkit.CallingThreadDispatcher.systemDispatch(CallingThreadDispatcher.scala:191)
	at akka.actor.dungeon.Dispatch$class.sendSystemMessage(Dispatch.scala:147)
	at akka.actor.ActorCell.sendSystemMessage(ActorCell.scala:374)
	at akka.actor.LocalActorRef.sendSystemMessage(ActorRef.scala:402)
	at akka.actor.dungeon.FaultHandling$class.akka$actor$dungeon$FaultHandling$$finishTerminate(FaultHandling.scala:213)
	at akka.actor.dungeon.FaultHandling$class.terminate(FaultHandling.scala:172)
	at akka.actor.ActorCell.terminate(ActorCell.scala:374)
	at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:467)
	at akka.actor.ActorCell.systemInvoke(ActorCell.scala:483)
	at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:282)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:260)
	at akka.dispatch.Mailbox.run(Mailbox.scala:224)
	at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

[info] - should result in restart the orchestration
[info] - should all previous actors restarted
[info] Stopping orchestration
[info] - should result in empty global
[info] BaseAkkaSpec:
[info] UtilsSpec:
[info] Global variable loadedJars
[info] - should be empty when starting
[info] Executing getFilesInDirectory
[info] - should return a list of all Files in the directory
[info] Executing loadActorClassFromJar with not yet loaded jar
[info] - should result in new entry to global variable loadedJars
[info] Executing loadActorClassFromJar with loaded jar but a different class
[info] - should not add new entry to loadedJars
[info] - should add a new classpath to the loadedJars value map
[info] Executing loadActorClassFromJar with loaded jar and class
[info] - should not reload the jar
[info] Initializing an actor from a clazz returned by loadActorClassFromJar
[info] - should result in creation of a GenericActor
[info] - should running GenericActor actor
[info] - should respond normally to stop message
[info] Executing loadJsonFromFile with a valid JSON
[info] - should return JsValue
[info] Executing loadJsonFromFile with a invalid JSON
[info] - should return None
[info] - should Log message at Error Level
[info] Executing renameProcessedFile when CHECKPOINT is disabled
[info] - should not concatenated extension to the file
[info] Executing renameProcessedFile when CHECKPOINT is enabled
[info] - should concatenated extension to the file
[info] Executing updateOrchestrationState
[info] - should result in log message at Debug when Checkpoint is disables
[info] - should result in log message at warn when Orchestration to be updated is not cached
[info] - should result in creating a new file at Checkpoint dir
[info] - should result in correct file created
[info] EnsembleSpec:
[info] Creating a simple Ensemble MY-ENSEMBLE-0005
[info] - should result in creation of Ensemble actor 'akka://FEY-TEST/system/ENSEMBLE-88/MY-ENSEMBLE-0005'
[info] - should result in sending START to monitor actor
[info] - should result in creation of Performer 'TEST-0004'
[info] - should result in Empty state variable Ensemble.connectors
[info] - should result in one entry added to state variable Ensemble.performer
[info] - should result in one right entry to state variable Ensemble.performers_metadata
[info] - should result in two paths added to IdentifyFeyActors.actorsPath
[info] Sending Ensemble.STOP_PERFORMERS to Ensemble
[info] - should result in Terminate message of actor 'TEST-0004' and throw RestartEnsemble Exception
[info] - should result in Performer 'TEST-0004' restarted
[info] - should result in two paths added to IdentifyFeyActors.actorsPath
[info] Sending PoisonPill to Ensemble
[info] - should result in termination of actor 'MY-ENSEMBLE-0005'
[info] - should result in sending TERMINATE to monitor actor
[info] - should result in termination of ensemble and performer
[info] - should result in empty IdentifyFeyActors.actorsPath
[info] creating more detailed Ensemble
[info] - should result in creation of Ensemble actor 
[info] - should result in creation of Performer 'PERFORMER-SCHEDULER'
[info] - should result in creation of Performer 'PERFORMER-PARAMS'
[info] - should create connection PERFORMER-SCHEDULER -> PERFORMER-PARAMS
[info] - should create 'PERFORMER-SCHEDULER' with schedule time equal to 200ms
[info] - should create 'PERFORMER-SCHEDULER' with connection to 'PERFORMER-PARAMS'
[info] - should create 'PERFORMER-PARAMS' with no connections
[info] - should create 'PERFORMER-PARAMS' with specified params
[info] 'PERFORMER-SCHEDULER'
[info] - should produce 5 messages in 1 seconds
[info] - should produce 10 messages in 2 seconds
[info] 'PERFORMER-PARAMS'
[info] - should process 5 messages in 1 seconds
[info] - should produce 10 messages in 2 seconds
[info] Stopping any Performer that belongs to the Ensemble
[info] - should force restart of entire Ensemble
[info] - should result in sending STOP - RESTART to monitor actor
[info] - should keep ensemble actorRef when restarted
[info] - should stop and start the performer with a new reference
[info] Restarting an Ensemble
[info] - should Consuming left messages on Process
[info] - should Cleanup TestProbs
[info] Redefining TestProbe for performers
[info] - should start receiving messages
[info] Sending PoisonPill to detailed Ensemble
[info] - should result in termination of Ensemble
[info] - should result in empty IdentifyFeyActors.actorsPath
[info] creating Ensemble with Backoff performer
[info] - should result in creation of Ensemble actor 
[info] - should result in creation of Performer 'PERFORMER-SCHEDULER'
[info] - should result in creation of Performer 'PERFORMER-PARAMS'
[info] - should create 'PERFORMER-PARAMS' with backoff time equal to 1 second
[info] - should create 'PERFORMER-SCHEDULER' with autoScale equal to true
[info] Performer with backoff enabled
[info] - should not process messages during the backoff period
[info] Performer with autoScale
[info] - should result in router and routees created
[info] FeyGenericActorReceiverSpec:
[info] Creating a GenericActor with Schedule time defined
[info] - should result in scheduler started
[info] - should result in onStart method called
[info] - should result in START message sent to Monitor
[info] - should result in one active actor
[info] - should result in normal functioning of GenericActor
[info] Sending PROCESS message to GenericReceiver
[info] - should log message to Warn saying that the JSON could not be forwarded to FeyCore when JSON is invalid
[info] - should send ORCHESTRATION_RECEIVED to FeyCore when JSON to be processed has a valid schema
[info] - should Download jar from location and send ORCHESTRATION_RECEIVED to FeyCore when JSON has a location defined
[info] Scheduler component
[info] - should call execute() method
[info] Sending EXCEPTION(IllegalArgumentException) message to GenericActor
[info] - should Throw IllegalArgumentException
[info] - should Result in restart of the actor with sequence of Monitoring: STOP -> RESTART -> START
[info] - should call onStart method
[info] - should call onRestart method
[info] - should restart scheduler
[info] Sending STOP to GenericActor
[info] - should terminate GenericActor
[info] - should call onStop method
[info] - should cancel scheduler
[info] - should send STOP - TERMINATE message to Monitor
[info] - should result in no active actors

CLeaning up[info] Run completed in 48 seconds, 214 milliseconds.
[info] Total number of tests run: 243
[info] Suites: completed 12, aborted 0
[info] Tests: succeeded 243, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.
[info] Checking every *.class/*.jar file's SHA-1.
[info] Merging files...
[warn] Merging 'META-INF/DEPENDENCIES' with strategy 'discard'
[warn] Merging 'META-INF/DUMMY.DSA' with strategy 'discard'
[warn] Merging 'META-INF/DUMMY.SF' with strategy 'discard'
[warn] Merging 'META-INF/INDEX.LIST' with strategy 'discard'
[warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
[warn] Merging 'META-INF/io.netty.versions.properties' with strategy 'last'
[warn] Merging 'META-INF/maven/ch.qos.logback/logback-classic/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/ch.qos.logback/logback-classic/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/ch.qos.logback/logback-core/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/ch.qos.logback/logback-core/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.google.guava/guava/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.google.guava/guava/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.typesafe.netty/netty-reactive-streams-http/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.typesafe.netty/netty-reactive-streams-http/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.typesafe.netty/netty-reactive-streams/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/com.typesafe.netty/netty-reactive-streams/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/commons-codec/commons-codec/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/commons-codec/commons-codec/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/commons-io/commons-io/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/commons-io/commons-io/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/commons-logging/commons-logging/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/commons-logging/commons-logging/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-buffer/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-buffer/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-codec-http/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-codec-http/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-codec/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-codec/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-common/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-common/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-handler/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-handler/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-transport-native-epoll/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-transport-native-epoll/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-transport/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/io.netty/netty-transport/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/joda-time/joda-time/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/joda-time/joda-time/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.apache.commons/commons-lang3/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.apache.commons/commons-lang3/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.jctools/jctools-core/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.jctools/jctools-core/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.joda/joda-convert/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.joda/joda-convert/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.jvnet.mimepull/mimepull/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.jvnet.mimepull/mimepull/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.slf4j/jcl-over-slf4j/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.slf4j/jcl-over-slf4j/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.slf4j/jul-to-slf4j/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.slf4j/jul-to-slf4j/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.slf4j/slf4j-api/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.slf4j/slf4j-api/pom.xml' with strategy 'discard'
[warn] Merging 'META-INF/services/com.fasterxml.jackson.databind.Module' with strategy 'filterDistinctLines'
[warn] Merging 'META-INF/spring.handlers' with strategy 'filterDistinctLines'
[warn] Merging 'META-INF/spring.schemas' with strategy 'filterDistinctLines'
[warn] Merging 'reference.conf' with strategy 'concat'
[error] 16 errors were encountered during merge
[trace] Stack trace suppressed: run last fey-core/*:assembly for the full output.
[error] (fey-core/*:assembly) deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/org.springframework/spring-context/jars/spring-context-4.3.8.RELEASE.jar:META-INF/spring.tooling
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:META-INF/spring.tooling
[error] /home/lucas/.ivy2/cache/org.springframework/spring-beans/jars/spring-beans-4.3.8.RELEASE.jar:META-INF/spring.tooling
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/aopalliance/aopalliance/jars/aopalliance-1.0.jar:org/aopalliance/aop/Advice.class
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:org/aopalliance/aop/Advice.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/aopalliance/aopalliance/jars/aopalliance-1.0.jar:org/aopalliance/aop/AspectException.class
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:org/aopalliance/aop/AspectException.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/aopalliance/aopalliance/jars/aopalliance-1.0.jar:org/aopalliance/intercept/ConstructorInterceptor.class
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:org/aopalliance/intercept/ConstructorInterceptor.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/aopalliance/aopalliance/jars/aopalliance-1.0.jar:org/aopalliance/intercept/ConstructorInvocation.class
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:org/aopalliance/intercept/ConstructorInvocation.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/aopalliance/aopalliance/jars/aopalliance-1.0.jar:org/aopalliance/intercept/Interceptor.class
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:org/aopalliance/intercept/Interceptor.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/aopalliance/aopalliance/jars/aopalliance-1.0.jar:org/aopalliance/intercept/Invocation.class
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:org/aopalliance/intercept/Invocation.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/aopalliance/aopalliance/jars/aopalliance-1.0.jar:org/aopalliance/intercept/Joinpoint.class
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:org/aopalliance/intercept/Joinpoint.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/aopalliance/aopalliance/jars/aopalliance-1.0.jar:org/aopalliance/intercept/MethodInterceptor.class
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:org/aopalliance/intercept/MethodInterceptor.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/aopalliance/aopalliance/jars/aopalliance-1.0.jar:org/aopalliance/intercept/MethodInvocation.class
[error] /home/lucas/.ivy2/cache/org.springframework/spring-aop/jars/spring-aop-4.3.8.RELEASE.jar:org/aopalliance/intercept/MethodInvocation.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.7.21.jar:org/apache/commons/logging/Log.class
[error] /home/lucas/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.2.jar:org/apache/commons/logging/Log.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.7.21.jar:org/apache/commons/logging/LogConfigurationException.class
[error] /home/lucas/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.2.jar:org/apache/commons/logging/LogConfigurationException.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.7.21.jar:org/apache/commons/logging/LogFactory.class
[error] /home/lucas/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.2.jar:org/apache/commons/logging/LogFactory.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.7.21.jar:org/apache/commons/logging/impl/NoOpLog.class
[error] /home/lucas/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.2.jar:org/apache/commons/logging/impl/NoOpLog.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.7.21.jar:org/apache/commons/logging/impl/SimpleLog$1.class
[error] /home/lucas/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.2.jar:org/apache/commons/logging/impl/SimpleLog$1.class
[error] deduplicate: different file contents found in the following:
[error] /home/lucas/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.7.21.jar:org/apache/commons/logging/impl/SimpleLog.class
[error] /home/lucas/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.2.jar:org/apache/commons/logging/impl/SimpleLog.class
[error] Total time: 56 s, completed Jun 24, 2017 3:45:47 PM

Reply via email to