|
Akka/Scala example source code file (TcpIntegrationSpecSupport.scala)
The TcpIntegrationSpecSupport.scala Akka example source code/** * Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com> */ package akka.io import scala.annotation.tailrec import scala.collection.immutable import akka.testkit.{ AkkaSpec, TestProbe } import akka.actor.ActorRef import akka.io.Inet.SocketOption import akka.TestUtils._ import Tcp._ trait TcpIntegrationSpecSupport { _: AkkaSpec ⇒ class TestSetup { val bindHandler = TestProbe() val endpoint = temporaryServerAddress() bindServer() def bindServer(): Unit = { val bindCommander = TestProbe() bindCommander.send(IO(Tcp), Bind(bindHandler.ref, endpoint, options = bindOptions)) bindCommander.expectMsg(Bound(endpoint)) } def establishNewClientConnection(): (TestProbe, ActorRef, TestProbe, ActorRef) = { val connectCommander = TestProbe() connectCommander.send(IO(Tcp), Connect(endpoint, options = connectOptions)) val Connected(`endpoint`, localAddress) = connectCommander.expectMsgType[Connected] val clientHandler = TestProbe() connectCommander.sender() ! Register(clientHandler.ref) val Connected(`localAddress`, `endpoint`) = bindHandler.expectMsgType[Connected] val serverHandler = TestProbe() bindHandler.sender() ! Register(serverHandler.ref) (clientHandler, connectCommander.sender(), serverHandler, bindHandler.sender()) } @tailrec final def expectReceivedData(handler: TestProbe, remaining: Int): Unit = if (remaining > 0) { val recv = handler.expectMsgType[Received] expectReceivedData(handler, remaining - recv.data.size) } /** allow overriding socket options for server side channel */ def bindOptions: immutable.Traversable[SocketOption] = Nil /** allow overriding socket options for client side channel */ def connectOptions: immutable.Traversable[SocketOption] = Nil } } Other Akka source code examplesHere is a short list of links related to this Akka TcpIntegrationSpecSupport.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.