new kotlin based jpb parser now builds
authorYaniv Rodenski <roadan@gmail.com>
Thu, 15 Nov 2018 01:57:10 +0000 (12:57 +1100)
committerYaniv Rodenski <roadan@gmail.com>
Thu, 15 Nov 2018 01:57:10 +0000 (12:57 +1100)
14 files changed:
common/src/main/java/org/apache/amaterasu/common/logging/Logging.java
common/src/main/kotlin/org/apache/amaterasu/common/configuration/enums/ActionStatus.kt
common/src/main/kotlin/org/apache/amaterasu/common/logging/KLogging.kt
leader-common/build.gradle
leader-common/src/main/kotlin/org/apache/amaterasu/leader/common/dsl/JobParser.kt
leader-common/src/main/scala/org/apache/amaterasu/leader/common/execution/frameworks/FrameworkProvidersFactory.scala [moved from leader/src/main/scala/org/apache/amaterasu/leader/execution/frameworks/FrameworkProvidersFactory.scala with 96% similarity]
leader-common/src/main/scala/org/apache/amaterasu/leader/common/utilities/ActiveReportListener.scala [moved from leader/src/main/scala/org/apache/amaterasu/leader/utilities/ActiveReportListener.scala with 97% similarity]
leader/build.gradle
leader/src/main/java/org/apache/amaterasu/leader/yarn/Client.java
leader/src/main/scala/org/apache/amaterasu/leader/mesos/schedulers/JobScheduler.scala
leader/src/main/scala/org/apache/amaterasu/leader/yarn/ApplicationMaster.scala
leader/src/main/scala/org/apache/amaterasu/leader/yarn/YarnRMCallbackHandler.scala
leader/src/test/scala/org/apache/amaterasu/common/execution/ActionStatusTests.scala
leader/src/test/scala/org/apache/amaterasu/common/execution/JobParserTests.scala

index 3f3413f..7a11ddb 100644 (file)
@@ -1,10 +1,23 @@
+/*
+ * 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.amaterasu.common.logging;
 
 import org.slf4j.Logger;
 
-/**
- * Created by Eran Bartenstein (p765790) on 5/11/18.
- */
 public abstract class Logging extends KLogging {
     protected Logger log = getLog();
 }
index 24853c5..bb31677 100644 (file)
@@ -1,8 +1,21 @@
+/*
+ * 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.amaterasu.common.configuration.enums
 
-/**
- * Created by Eran Bartenstein on 21/10/18.
- */
 enum class ActionStatus (val value: String) {
     pending("pending"),
     queued("queued"),
index 2b4e411..cba04ec 100644 (file)
@@ -1,10 +1,23 @@
+/*
+ * 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.amaterasu.common.logging
 
 import org.slf4j.LoggerFactory
 
-/**
- * Created by Eran Bartenstein on 5/11/18.
- */
 abstract class KLogging {
     protected var log = LoggerFactory.getLogger(this.javaClass.name)
 }
index 6ca9513..f97e339 100644 (file)
@@ -66,14 +66,18 @@ dependencies {
     compile 'org.scala-lang:scala-library:2.11.8'
 
     compile project(':common')
+    compile project(':amaterasu-sdk')
 
     compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-scala_2.11', version: '2.6.3'
     compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.6.4'
     compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.6.4'
     compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.6.4'
     compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.6.4'
-
+    compile group: 'org.reflections', name: 'reflections', version: '0.9.11'
     compile group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '4.2.0.201601211800-r'
+    compile group: 'org.apache.activemq', name: 'activemq-broker', version: '5.15.3'
+    runtime group: 'org.apache.activemq', name: 'activemq-kahadb-store', version: '5.15.3'
+    compile group: 'net.liftweb', name: 'lift-json_2.11', version: '3.2.0'
 
     compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
     compile "org.jetbrains.kotlin:kotlin-reflect"
index 5ef2c66..50c178f 100644 (file)
@@ -29,7 +29,9 @@ import org.apache.curator.framework.CuratorFramework
 import java.io.File
 import java.util.concurrent.BlockingQueue
 
-class JobParser {
+object JobParser {
+
+    @JvmStatic
     fun loadMakiFile(): String = File("repo/maki.yml").readText(Charsets.UTF_8)
 
     /**
@@ -41,6 +43,7 @@ class JobParser {
      * @param client
      * @return
      */
+    @JvmStatic
     fun parse(jobId: String,
               maki: String,
               actionsQueue: BlockingQueue<ActionData>,
@@ -62,6 +65,7 @@ class JobParser {
         return manager
     }
 
+    @JvmStatic
     fun parseActions(actions: List<JsonNode>,
                      manager: JobManager,
                      actionsQueue: BlockingQueue<ActionData>,
@@ -119,6 +123,7 @@ class JobParser {
 
     }
 
+    @JvmStatic
     fun parseSequentialAction(action: JsonNode,
     jobId: String,
     actionsQueue: BlockingQueue<ActionData>,
@@ -137,6 +142,7 @@ class JobParser {
 
     }
 
+    @JvmStatic
     fun parseErrorAction(action: JsonNode,
                          jobId: String,
                          parent: String,
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.amaterasu.leader.execution.frameworks
+package org.apache.amaterasu.leader.common.execution.frameworks
 
 import org.apache.amaterasu.common.configuration.ClusterConfig
 import org.apache.amaterasu.common.logging.Logging
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.amaterasu.leader.utilities
+package org.apache.amaterasu.leader.common.utilities
 
 import javax.jms.{Message, MessageListener, TextMessage}
 import net.liftweb.json._
index ea1c3cb..84c633d 100644 (file)
@@ -59,12 +59,9 @@ dependencies {
     compile group: 'org.jsoup', name: 'jsoup', version: '1.10.2'
     compile group: 'org.scala-lang.modules', name: 'scala-async_2.11', version: '0.9.6'
     compile group: 'org.jsoup', name: 'jsoup', version: '1.10.2'
-    compile group: 'org.reflections', name: 'reflections', version: '0.9.11'
-    compile group: 'org.apache.activemq', name: 'activemq-broker', version: '5.15.3'
     compile group: 'net.liftweb', name: 'lift-json_2.11', version: '3.2.0'
     compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
     compile "org.jetbrains.kotlin:kotlin-reflect"
-    runtime group: 'org.apache.activemq', name: 'activemq-kahadb-store', version: '5.15.3'
 
     testCompile project(':common')
     testCompile "gradle.plugin.com.github.maiflai:gradle-scalatest:0.14"
@@ -124,6 +121,9 @@ compileTestKotlin {
     kotlinOptions.jvmTarget = "1.8"
 }
 
+tet {
+    dependsOn compileJava
+}
 compileScala {
     dependsOn compileJava
     classpath += files(compileJava.destinationDir) + files(compileKotlin.destinationDir)
@@ -131,4 +131,4 @@ compileScala {
 
 compileJava {
     dependsOn compileKotlin
-}
+}
\ No newline at end of file
index 5e86188..3b0e8c2 100644 (file)
@@ -18,8 +18,8 @@ package org.apache.amaterasu.leader.yarn;
 
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.amaterasu.common.configuration.ClusterConfig;
-import org.apache.amaterasu.leader.execution.frameworks.FrameworkProvidersFactory;
-import org.apache.amaterasu.leader.utilities.ActiveReportListener;
+import org.apache.amaterasu.leader.common.execution.frameworks.FrameworkProvidersFactory;
+import org.apache.amaterasu.leader.common.utilities.ActiveReportListener;
 import org.apache.amaterasu.sdk.frameworks.FrameworkSetupProvider;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
index 9c25ece..3863ae2 100755 (executable)
@@ -36,7 +36,7 @@ import org.apache.amaterasu.common.execution.actions.{Notification, Notification
 import org.apache.amaterasu.leader.common.configuration.ConfigManager
 import org.apache.amaterasu.leader.common.execution.JobManager
 import org.apache.amaterasu.leader.common.utilities.DataLoader
-import org.apache.amaterasu.leader.execution.frameworks.FrameworkProvidersFactory
+import org.apache.amaterasu.leader.common.execution.frameworks.FrameworkProvidersFactory
 import org.apache.amaterasu.leader.execution.JobLoader
 import org.apache.amaterasu.leader.utilities.HttpServer
 import org.apache.curator.framework.{CuratorFramework, CuratorFrameworkFactory}
@@ -160,15 +160,15 @@ class JobScheduler extends AmaterasuScheduler {
 
             // setting up the configuration files for the container
             val envYaml = configManager.getActionConfigContent(actionData.getName, "") //TODO: replace with the value in actionData.config
-            writeConfigFile(envYaml, jobManager.jobId, actionData.getName, "env.yaml")
+            writeConfigFile(envYaml, jobManager.getJobId, actionData.getName, "env.yaml")
 
             val dataStores = DataLoader.getTaskData(actionData, env).exports
             val writer = new StringWriter()
             yamlMapper.writeValue(writer, dataStores)
             val dataStoresYaml = writer.toString
-            writeConfigFile(dataStoresYaml, jobManager.jobId, actionData.getName, "datastores.yaml")
+            writeConfigFile(dataStoresYaml, jobManager.getJobId, actionData.getName, "datastores.yaml")
 
-            writeConfigFile(s"jobId: ${jobManager.jobId}\nactionName: ${actionData.getName}", jobManager.jobId, actionData.getName, "runtime.yaml")
+            writeConfigFile(s"jobId: ${jobManager.getJobId}\nactionName: ${actionData.getName}", jobManager.getJobId, actionData.getName, "runtime.yaml")
 
             offersToTaskIds.put(offer.getId.getValue, taskId.getValue)
 
@@ -198,12 +198,12 @@ class JobScheduler extends AmaterasuScheduler {
               //creating the command
 
               // TODO: move this into the runner provider somehow
-              copy(get(s"repo/src/${actionData.getSrc}"), get(s"dist/${jobManager.jobId}/${actionData.getName}/${actionData.getSrc}"), REPLACE_EXISTING)
+              copy(get(s"repo/src/${actionData.getSrc}"), get(s"dist/${jobManager.getJobId}/${actionData.getName}/${actionData.getSrc}"), REPLACE_EXISTING)
 
-              println(s"===> ${runnerProvider.getCommand(jobManager.jobId, actionData, env, executorId, "")}")
+              println(s"===> ${runnerProvider.getCommand(jobManager.getJobId, actionData, env, executorId, "")}")
               val command = CommandInfo
                 .newBuilder
-                .setValue(runnerProvider.getCommand(jobManager.jobId, actionData, env, executorId, ""))
+                .setValue(runnerProvider.getCommand(jobManager.getJobId, actionData, env, executorId, ""))
                 .addUris(URI.newBuilder
                   .setValue(s"http://${sys.env("AMA_NODE")}:${config.Webserver.Port}/executor-${config.version}-all.jar")
                   .setExecutable(false)
@@ -212,21 +212,21 @@ class JobScheduler extends AmaterasuScheduler {
 
                 // Getting env.yaml
                 command.addUris(URI.newBuilder
-                  .setValue(s"http://${sys.env("AMA_NODE")}:${config.Webserver.Port}/${jobManager.jobId}/${actionData.getName}/env.yaml")
+                  .setValue(s"http://${sys.env("AMA_NODE")}:${config.Webserver.Port}/${jobManager.getJobId}/${actionData.getName}/env.yaml")
                   .setExecutable(false)
                   .setExtract(true)
                   .build())
 
                 // Getting datastores.yaml
                 command.addUris(URI.newBuilder
-                  .setValue(s"http://${sys.env("AMA_NODE")}:${config.Webserver.Port}/${jobManager.jobId}/${actionData.getName}/datastores.yaml")
+                  .setValue(s"http://${sys.env("AMA_NODE")}:${config.Webserver.Port}/${jobManager.getJobId}/${actionData.getName}/datastores.yaml")
                   .setExecutable(false)
                   .setExtract(true)
                   .build())
 
                 // Getting runtime.yaml
                 command.addUris(URI.newBuilder
-                  .setValue(s"http://${sys.env("AMA_NODE")}:${config.Webserver.Port}/${jobManager.jobId}/${actionData.getName}/runtime.yaml")
+                  .setValue(s"http://${sys.env("AMA_NODE")}:${config.Webserver.Port}/${jobManager.getJobId}/${actionData.getName}/runtime.yaml")
                   .setExecutable(false)
                   .setExtract(true)
                   .build())
@@ -246,7 +246,7 @@ class JobScheduler extends AmaterasuScheduler {
                 .build()))
 
               // Getting action specific resources
-              runnerProvider.getActionResources(jobManager.jobId, actionData).foreach(r => command.addUris(URI.newBuilder
+              runnerProvider.getActionResources(jobManager.getJobId, actionData).foreach(r => command.addUris(URI.newBuilder
                 .setValue(s"http://${sys.env("AMA_NODE")}:${config.Webserver.Port}/$r")
                 .setExecutable(false)
                 .setExtract(false)
@@ -298,8 +298,8 @@ class JobScheduler extends AmaterasuScheduler {
 
             driver.launchTasks(Collections.singleton(offer.getId), Collections.singleton(actionTask))
           }
-          else if (jobManager.outOfActions) {
-            log.info(s"framework ${jobManager.jobId} execution finished")
+          else if (jobManager.getOutOfActions) {
+            log.info(s"framework ${jobManager.getJobId} execution finished")
 
             val repo = new File("repo/")
             repo.delete()
@@ -356,7 +356,7 @@ class JobScheduler extends AmaterasuScheduler {
 
     jobManager.start()
 
-    createJobDir(jobManager.jobId)
+    createJobDir(jobManager.getJobId)
 
   }
 
index ff9029b..099ea48 100644 (file)
@@ -29,9 +29,10 @@ import org.apache.amaterasu.common.configuration.ClusterConfig
 import org.apache.amaterasu.common.dataobjects.ActionData
 import org.apache.amaterasu.common.logging.Logging
 import org.apache.amaterasu.leader.common.execution.JobManager
-import org.apache.amaterasu.leader.execution.frameworks.FrameworkProvidersFactory
+import org.apache.amaterasu.leader.common.execution.frameworks.FrameworkProvidersFactory
+import org.apache.amaterasu.leader.common.utilities.ActiveReportListener
 import org.apache.amaterasu.leader.execution.JobLoader
-import org.apache.amaterasu.leader.utilities.{ActiveReportListener, Args}
+import org.apache.amaterasu.leader.utilities.Args
 import org.apache.curator.framework.recipes.barriers.DistributedBarrier
 import org.apache.curator.framework.{CuratorFramework, CuratorFrameworkFactory}
 import org.apache.curator.retry.ExponentialBackoffRetry
@@ -123,17 +124,17 @@ class ApplicationMaster extends Logging with AMRMClientAsync.CallbackHandler {
 
     // now that the job was initiated, the curator client is started and we can
     // register the broker's address
-    client.create().withMode(CreateMode.PERSISTENT).forPath(s"/${jobManager.jobId}/broker")
-    client.setData().forPath(s"/${jobManager.jobId}/broker", address.getBytes)
+    client.create().withMode(CreateMode.PERSISTENT).forPath(s"/${jobManager.getJobId}/broker")
+    client.setData().forPath(s"/${jobManager.getJobId}/broker", address.getBytes)
 
     // once the broker is registered, we can remove the barrier so clients can connect
-    log.info(s"/${jobManager.jobId}-report-barrier")
-    val barrier = new DistributedBarrier(client, s"/${jobManager.jobId}-report-barrier")
+    log.info(s"/${jobManager.getJobId}-report-barrier")
+    val barrier = new DistributedBarrier(client, s"/${jobManager.getJobId}-report-barrier")
     barrier.removeBarrier()
 
-    setupMessaging(jobManager.jobId)
+    setupMessaging(jobManager.getJobId)
 
-    log.info(s"Job ${jobManager.jobId} initiated with ${jobManager.registeredActions.size} actions")
+    log.info(s"Job ${jobManager.getJobId} initiated with ${jobManager.getRegisteredActions.size} actions")
 
     jarPath = new Path(config.YARN.hdfsJarsPath)
 
@@ -161,13 +162,13 @@ class ApplicationMaster extends Logging with AMRMClientAsync.CallbackHandler {
     log.info("Max mem capability of resources in this cluster " + maxMem)
     val maxVCores = registrationResponse.getMaximumResourceCapability.getVirtualCores
     log.info("Max vcores capability of resources in this cluster " + maxVCores)
-    log.info(s"Created jobManager. jobManager.registeredActions.size: ${jobManager.registeredActions.size}")
+    log.info(s"Created jobManager. jobManager.registeredActions.size: ${jobManager.getRegisteredActions.size}")
 
     // Resource requirements for worker containers
     this.capability = Records.newRecord(classOf[Resource])
     val frameworkFactory = FrameworkProvidersFactory.apply(env, config)
 
-    while (!jobManager.outOfActions) {
+    while (!jobManager.getOutOfActions) {
       val actionData = jobManager.getNextActionData
       if (actionData != null) {
 
@@ -249,7 +250,7 @@ class ApplicationMaster extends Logging with AMRMClientAsync.CallbackHandler {
         val framework = frameworkFactory.getFramework(actionData.getGroupId)
         val runnerProvider = framework.getRunnerProvider(actionData.getTypeId)
         val ctx = Records.newRecord(classOf[ContainerLaunchContext])
-        val commands: List[String] = List(runnerProvider.getCommand(jobManager.jobId, actionData, env, s"${actionData.getId}-${container.getId.getContainerId}", address))
+        val commands: List[String] = List(runnerProvider.getCommand(jobManager.getJobId, actionData, env, s"${actionData.getId}-${container.getId.getContainerId}", address))
 
         log.info("Running container id {}.", container.getId.getContainerId)
         log.info("Running container id {} with command '{}'", container.getId.getContainerId, commands.last)
@@ -386,17 +387,17 @@ class ApplicationMaster extends Logging with AMRMClientAsync.CallbackHandler {
       }
     }
 
-    if (jobManager.outOfActions) {
+    if (jobManager.getOutOfActions) {
       log.info("Finished all tasks successfully! Wow!")
       jobManager.actionsCount()
       stopApplication(FinalApplicationStatus.SUCCEEDED, "SUCCESS")
     } else {
-      log.info(s"jobManager.registeredActions.size: ${jobManager.registeredActions.size}; completedContainersAndTaskIds.size: ${completedContainersAndTaskIds.size}")
+      log.info(s"jobManager.registeredActions.size: ${jobManager.getRegisteredActions.size}; completedContainersAndTaskIds.size: ${completedContainersAndTaskIds.size}")
     }
   }
 
   override def getProgress: Float = {
-    jobManager.registeredActions.size.toFloat / completedContainersAndTaskIds.size
+    jobManager.getRegisteredActions.size.toFloat / completedContainersAndTaskIds.size
   }
 
   override def onNodesUpdated(updatedNodes: util.List[NodeReport]): Unit = {
index 4b8ba3d..bade948 100644 (file)
@@ -87,7 +87,7 @@ class YarnRMCallbackHandler(nmClient: NMClientAsync,
   }
 
   override def getProgress: Float = {
-    jobManager.registeredActions.size.toFloat / completedContainersAndTaskIds.size
+    jobManager.getRegisteredActions.size.toFloat / completedContainersAndTaskIds.size
   }
 
   override def onNodesUpdated(updatedNodes: util.List[NodeReport]): Unit = {
@@ -108,7 +108,7 @@ class YarnRMCallbackHandler(nmClient: NMClientAsync,
                          | java -cp executor.jar:spark-${config.Webserver.sparkVersion}/lib/*
                          | -Dscala.usejavacp=true
                          | -Djava.library.path=/usr/lib org.apache.amaterasu.executor.yarn.executors.ActionsExecutorLauncher
-                         | ${jobManager.jobId} ${config.master} ${actionData.getName} ${gson.toJson(taskData)} ${gson.toJson(execData)}""".stripMargin
+                         | ${jobManager.getJobId} ${config.master} ${actionData.getName} ${gson.toJson(taskData)} ${gson.toJson(execData)}""".stripMargin
         ctx.setCommands(Collections.singletonList(command))
 
         ctx.setLocalResources(Map[String, LocalResource] (
index 197c703..bc9c679 100755 (executable)
@@ -21,7 +21,7 @@ import java.util.concurrent.LinkedBlockingQueue
 
 import org.apache.amaterasu.common.configuration.enums.ActionStatus
 import org.apache.amaterasu.common.dataobjects.ActionData
-import org.apache.amaterasu.leader.common.actions.SequentialAction
+import org.apache.amaterasu.leader.common.execution.actions.SequentialAction
 import org.apache.curator.framework.CuratorFrameworkFactory
 import org.apache.curator.retry.ExponentialBackoffRetry
 import org.apache.curator.test.TestingServer
@@ -47,7 +47,7 @@ class ActionStatusTests extends FlatSpec with Matchers {
     client.start()
 
     client.create().withMode(CreateMode.PERSISTENT).forPath(s"/$jobId")
-    val action = SequentialAction(data.getName, data.getSrc, data.getGroupId, data.getTypeId, Map.empty, jobId, queue, client, 1)
+    val action = new SequentialAction(data.getName, data.getSrc, data.getGroupId, data.getTypeId, Map.empty[String, String].asJava, jobId, queue, client, 1)
 
     action.execute()
     queue.peek().getName should be(data.getName)
index d92d8c8..3af00e6 100755 (executable)
@@ -46,18 +46,18 @@ class JobParserTests extends FlatSpec with Matchers {
 
   "JobParser" should "parse the simple-maki.yml" in {
 
-    job.name should be("amaterasu-test")
+    job.getName should be("amaterasu-test")
 
   }
 
   //TODO: I suspect this test is not indicative, and that order is assured need to verify this
   it should "also have two actions in the right order" in {
 
-    job.registeredActions.size should be(3)
+    job.getRegisteredActions.size should be(3)
 
-    job.registeredActions.get("0000000000").get.data.getName should be("start")
-    job.registeredActions.get("0000000001").get.data.getName should be("step2")
-    job.registeredActions.get("0000000001-error").get.data.getName should be("error-action")
+    job.getRegisteredActions.get("0000000000").data.getName should be("start")
+    job.getRegisteredActions.get("0000000001").data.getName should be("step2")
+    job.getRegisteredActions.get("0000000001-error").data.getName should be("error-action")
 
   }