抽象的なAkka俳優の擬似コードに続いて、テストケースを書くのに助けてもらえますか?抽象Akka俳優の監督戦略のテストケースを書く方法
問題私は、監督戦略をその子に適用するのではなく、親アクターがすべての監督戦略メッセージ(テストケースの一部として送信)を消費していることに直面しています。
親抽象アクターは子供を作成します。親クラスを拡張
Abstract class Parent extends UntypedActor {
String name;
int noOfChildActors;
//this set is used to manage the children i.e noOfChildActors = children.size()
Set<ActorRef> children;
public Parent(String name, int noOfChildActors, Props childProps){
this.name=name;
this.noOfChildActors = noOfChildActors;
createChildern(childProps);
}
public void createChildern(Props props){
for(int i = 0 ; i< no_of_child_actors;i++)
final ActorRef actor = getContext().actorOf(props, "worker"+i);
getContext().watch(actor);
children.add(actor);
}
@Override
public void onReceive(final Object message) {
//actor functionalities goes here.
}
@Override
public SupervisorStrategy supervisorStrategy() {
return defaultSupervisorStrategy();
}
private SupervisorStrategy defaultSupervisorStrategy() {
return new AllForOneStrategy(-1, Duration.Inf(), new Strategy());
}
private class Strategy implements Function<Throwable, Directive> {
@Override
public Directive apply(final Throwable t) {
//my own strategies.
}
}
//child managing methods.
//Abstract functions
}
子クラス
class Child extends Parent{
String name;
public static Props props(final String name, int noOfChildActors, Props childProps) {
return Props.create(Child.class, name, noOfChildActors, childProps);
}
public Child(String name, int noOfChildActors, Props childProps){
super(name, noOfChildActors, childProps);
}
//followed by my abstract function definition
}
//テストケース
private static final FiniteDuration WAIT_TIME = Duration.create(5, TimeUnit.SECONDS);
JavaTestKit sender = new JavaTestKit(system);
final Props props = Child.Props("name", 3, Props.empty());
ActorRef consumer = system.actorOf(props, "test-supervision");
final TestProbe probe = new TestProbe(system);
probe.watch(consumer);
consumer.tell(ActorInitializationException.class, sender.getRef());
probe.expectMsgClass(WAIT_TIME, Terminated.class);
おかげでジョン、この質問に答えるため。私はAkkaの親はOOモデルと同じではないことを理解しています。私が提供している疑似コードはAPIです。抽象クラス 'Parent'は、子アクター(Kafkaクラスターのプロデューサーとコンシューマー)を作成します。あなたは、それに子供である '親 'の監督をテストする方法を助けることができますか? –
docsのこのセクションを見てください:http://doc.akka.io/docs/akka/2.4/java/testing.html#Testing_parent-child_relationshipsそれはあなたにいくつかのアイデアを与える必要があります – johanandren