Add Camel tests just to be there in history
[aquarium] / logic / src / test / scala / gr / grnet / aquarium / rest / akka / service / CamelPingServiceTest.scala
1 /*
2  * Copyright 2011 GRNET S.A. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or
5  * without modification, are permitted provided that the following
6  * conditions are met:
7  *
8  *   1. Redistributions of source code must retain the above
9  *      copyright notice, this list of conditions and the following
10  *      disclaimer.
11  *
12  *   2. Redistributions in binary form must reproduce the above
13  *      copyright notice, this list of conditions and the following
14  *      disclaimer in the documentation and/or other materials
15  *      provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  *
30  * The views and conclusions contained in the software and
31  * documentation are those of the authors and should not be
32  * interpreted as representing official policies, either expressed
33  * or implied, of GRNET S.A.
34  */
35
36 package gr.grnet.aquarium.rest.akka.service
37
38 import org.junit.Test
39 import org.junit.Assume._
40 import akka.actor.{ActorRef, Actor}
41 import akka.camel.{Producer, Consumer, CamelServiceManager}
42 import org.apache.camel.Message
43 import org.apache.camel.impl.DefaultMessage
44 import gr.grnet.aquarium.LogicTestsAssumptions
45
46 class CamelPingClient(val host: String, val port: Int, path: String) extends Actor with Producer {
47   def endpointUri = "jetty:http://%s:%s%s".format(host, port, path)
48 }
49
50 /**
51  * 
52  * @author Christos KK Loverdos <loverdos@gmail.com>.
53  */
54 class CamelPingServiceTest {
55   @Test
56   def testPing: Unit = {
57     assumeTrue(LogicTestsAssumptions.EnableCamelTests)
58     val client = Actor.actorOf(new CamelPingClient("localhost", 9090, "/ping")).start()
59
60     CamelServiceManager.startCamelService
61     CamelServiceManager.mandatoryService.awaitEndpointActivation(1) {
62       Actor.actorOf(new CamelPingService("localhost", 9090, "/ping")).start()
63     }
64
65     val msg = new DefaultMessage
66     msg.setHeader("Header1", "Value1")
67     msg.setHeader("Header2", "Value2")
68     msg.setBody("{ yes: \"yes\"}")
69     client ! msg
70
71     Thread sleep 30000
72     CamelServiceManager.stopCamelService
73   }
74 }