fixed the conversion between scala and kotlin for ActionData in the tests
[incubator-amaterasu.git] / leader / src / test / scala / org / apache / amaterasu / common / execution / JobParserTests.scala
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 package org.apache.amaterasu.common.execution
18
19 import java.util.concurrent.LinkedBlockingQueue
20
21 import org.apache.amaterasu.common.dataobjects.ActionData
22 import org.apache.amaterasu.leader.dsl.JobParser
23 import org.apache.curator.framework.CuratorFrameworkFactory
24 import org.apache.curator.retry.ExponentialBackoffRetry
25 import org.apache.curator.test.TestingServer
26 import org.apache.zookeeper.CreateMode
27 import org.scalatest.{FlatSpec, Matchers}
28
29 import scala.io.Source
30
31 class JobParserTests extends FlatSpec with Matchers {
32
33   val retryPolicy = new ExponentialBackoffRetry(1000, 3)
34   val server = new TestingServer(2182, true)
35   val client = CuratorFrameworkFactory.newClient(server.getConnectString, retryPolicy)
36   client.start()
37
38   val jobId = s"job_${System.currentTimeMillis}"
39   val yaml = Source.fromURL(getClass.getResource("/simple-maki.yml")).mkString
40   val queue = new LinkedBlockingQueue[ActionData]()
41
42   // this will be performed by the job bootstrapper
43   client.create().withMode(CreateMode.PERSISTENT).forPath(s"/$jobId")
44
45   val job = JobParser.parse(jobId, yaml, queue, client, 1)
46
47   "JobParser" should "parse the simple-maki.yml" in {
48
49     job.name should be("amaterasu-test")
50
51   }
52
53   //TODO: I suspect this test is not indicative, and that order is assured need to verify this
54   it should "also have two actions in the right order" in {
55
56     job.registeredActions.size should be(3)
57
58     job.registeredActions.get("0000000000").get.data.getName should be("start")
59     job.registeredActions.get("0000000001").get.data.getName should be("step2")
60     job.registeredActions.get("0000000001-error").get.data.getName should be("error-action")
61
62   }
63
64 }