После моего other question, у меня есть UDP сервера актер следующим образом:Как протестировать аккорского актера, который порождает детей-актеров во время исполнения?
class Listener(addr: InetSocketAddress) extends Actor {
import context.system
IO(Udp) ! Udp.Bind(self, addr)
def spawnChild(remote): ActorRef = {
//Check if child already exist
context.actorOf(Props[Worker])
}
def receive = {
case Udp.Bound(local) =>
context.become(ready(sender()))
}
def ready(socket: ActorRef): Receive = {
case Udp.Received(data, remote) =>
val worker = spawnChild(remote)
worker ! data // forward data directly to child
case Udp.Unbind => socket ! Udp.Unbind
case Udp.Unbound => context.stop(self)
}
}
я создаю детей актеров, основанные на том, где данные посылки из. Причиной этого является сохранение некоторого внутреннего состояния дочерним актором. Внутренние состояния включают в последнее время подключения, общее количество передаваемого пакета и т.д.
Я хочу установку TestProbes, чтобы проверить, что
- данные remoteA пересылается TestProbeA
- данные remoteB пересылаются TestProbeB
- данные remoteA не пересылается на TestProbeB
Я прочитал раздел Using multiple probes. Однако в моей ситуации именно родительский актер несет ответственность за создание детей.
Как я должен писать свои спецификации в этом случае? Или, может быть, как я должен реорганизовать мой код, чтобы он был более удобным для тестирования?
Благодарим вас за ответ. Я прочитаю этот раздел и опубликую мои результаты здесь. – user2829759