Skip to content

Commit e5eaf1a

Browse files
author
Johannes Duesing
committed
Changed passing of services to allow testing with in-memory DB
1 parent 1a5182a commit e5eaf1a

File tree

7 files changed

+179
-146
lines changed

7 files changed

+179
-146
lines changed

src/main/scala/de/upb/cs/swt/delphi/instanceregistry/Configuration.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class Configuration( ) {
3434
val dockerOperationTimeout: Timeout = Timeout(20 seconds)
3535

3636
//Database configurations
37+
val useInMemoryDB = false
3738
val databaseHost = "jdbc:mysql://localhost/"
3839
val databaseName = ""
3940
val databaseDriver = "com.mysql.jdbc.Driver"

src/main/scala/de/upb/cs/swt/delphi/instanceregistry/Registry.scala

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import akka.actor.ActorSystem
44
import akka.stream.ActorMaterializer
55
import de.upb.cs.swt.delphi.instanceregistry.Docker._
66
import de.upb.cs.swt.delphi.instanceregistry.connection.Server
7+
import de.upb.cs.swt.delphi.instanceregistry.daos.{DatabaseInstanceDAO, DynamicInstanceDAO, InstanceDAO}
78

89
import scala.concurrent.ExecutionContext
910
import scala.language.postfixOps
@@ -15,14 +16,24 @@ object Registry extends AppLogging {
1516

1617

1718
val configuration = new Configuration()
18-
val requestHandler = new RequestHandler(configuration, DockerConnection.fromEnvironment())
1919

20+
private val dao : InstanceDAO = {
21+
if (configuration.useInMemoryDB) {
22+
new DynamicInstanceDAO(configuration)
23+
} else {
24+
new DatabaseInstanceDAO(configuration)
25+
}
26+
}
2027

21-
def main(args: Array[String]): Unit = {
28+
private val requestHandler = new RequestHandler(configuration, dao, DockerConnection.fromEnvironment())
29+
30+
private val server: Server = new Server(requestHandler)
2231

32+
33+
def main(args: Array[String]): Unit = {
2334
requestHandler.initialize()
2435
log.info("Starting server ...")
25-
Server.startServer(configuration.bindHost, configuration.bindPort)
36+
server.startServer(configuration.bindHost, configuration.bindPort)
2637
log.info("Shutting down ...")
2738
requestHandler.shutdown()
2839
system.terminate()

src/main/scala/de/upb/cs/swt/delphi/instanceregistry/RequestHandler.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import de.upb.cs.swt.delphi.instanceregistry.Docker.{ContainerAlreadyStoppedExce
1010
import akka.stream.scaladsl.{Keep, Sink, Source}
1111
import akka.stream.{ActorMaterializer, Materializer, OverflowStrategy}
1212
import de.upb.cs.swt.delphi.instanceregistry.connection.RestClient
13-
import de.upb.cs.swt.delphi.instanceregistry.daos.{DatabaseInstanceDAO, InstanceDAO}
13+
import de.upb.cs.swt.delphi.instanceregistry.daos.InstanceDAO
1414
import de.upb.cs.swt.delphi.instanceregistry.io.swagger.client.model.InstanceEnums.{ComponentType, InstanceState}
1515
import de.upb.cs.swt.delphi.instanceregistry.io.swagger.client.model.LinkEnums.LinkState
1616
import de.upb.cs.swt.delphi.instanceregistry.io.swagger.client.model._
@@ -20,15 +20,14 @@ import scala.concurrent.{Await, ExecutionContext, Future}
2020
import scala.language.postfixOps
2121
import scala.util.{Failure, Success, Try}
2222

23-
class RequestHandler(configuration: Configuration, connection: DockerConnection) extends AppLogging {
23+
class RequestHandler(configuration: Configuration, instanceDao: InstanceDAO, connection: DockerConnection) extends AppLogging {
2424

2525

2626

2727
implicit val system: ActorSystem = Registry.system
2828
implicit val materializer : Materializer = ActorMaterializer()
2929
implicit val ec: ExecutionContext = system.dispatcher
3030

31-
private[instanceregistry] val instanceDao: InstanceDAO = new DatabaseInstanceDAO(configuration)
3231

3332
val (eventActor, eventPublisher) = Source.actorRef[RegistryEvent](10, OverflowStrategy.dropNew)
3433
.toMat(Sink.asPublisher(fanout = true))(Keep.both)

src/main/scala/de/upb/cs/swt/delphi/instanceregistry/connection/Server.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import scala.util.{Failure, Success}
2020
/**
2121
* Web server configuration for Instance Registry API.
2222
*/
23-
object Server extends HttpApp
23+
class Server (handler: RequestHandler) extends HttpApp
2424
with InstanceJsonSupport
2525
with EventJsonSupport
2626
with InstanceLinkJsonSupport
@@ -30,8 +30,6 @@ object Server extends HttpApp
3030
implicit val materializer : ActorMaterializer = ActorMaterializer()
3131
implicit val ec : ExecutionContext = system.dispatcher
3232

33-
private val handler : RequestHandler = Registry.requestHandler
34-
3533
//Routes that map http endpoints to methods in this object
3634
override def routes : server.Route =
3735
/****************BASIC OPERATIONS****************/

src/main/scala/de/upb/cs/swt/delphi/instanceregistry/daos/DatabaseInstanceDAO.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ class DatabaseInstanceDAO (configuration : Configuration) extends InstanceDAO wi
165165
Await.result(createAction, Duration.Inf)
166166

167167

168-
log.info("Initializing dynamic instance DAO...")
168+
log.info("Initializing sql instance DAO...")
169169
clearData()
170170
log.info("Successfully initialized.")
171171
} else {

0 commit comments

Comments
 (0)