2 * Copyright (c) 2017 Inocybe Technologies and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.cluster.datastore.actors;
10 import static org.mockito.Mockito.timeout;
12 import akka.actor.ActorRef;
13 import akka.testkit.JavaTestKit;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.mockito.Mock;
17 import org.mockito.Mockito;
18 import org.mockito.MockitoAnnotations;
19 import org.opendaylight.controller.cluster.datastore.AbstractActorTest;
20 import org.opendaylight.controller.cluster.datastore.messages.CloseDataTreeNotificationListenerRegistration;
21 import org.opendaylight.controller.cluster.datastore.messages.CloseDataTreeNotificationListenerRegistrationReply;
22 import org.opendaylight.yangtools.concepts.ListenerRegistration;
24 public class DataTreeNotificationListenerRegistrationActorTest extends AbstractActorTest {
26 private ListenerRegistration<?> mockListenerReg;
29 private Runnable mockOnClose;
33 MockitoAnnotations.initMocks(this);
34 DataTreeNotificationListenerRegistrationActor.killDelay = 100;
38 public void testOnReceiveCloseListenerRegistrationAfterSetRegistration() throws Exception {
39 new JavaTestKit(getSystem()) {
41 final ActorRef subject = getSystem().actorOf(DataTreeNotificationListenerRegistrationActor.props(),
42 "testOnReceiveCloseListenerRegistrationAfterSetRegistration");
45 subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg,
46 mockOnClose), ActorRef.noSender());
47 subject.tell(CloseDataTreeNotificationListenerRegistration.getInstance(), getRef());
49 expectMsgClass(duration("5 second"), CloseDataTreeNotificationListenerRegistrationReply.class);
51 Mockito.verify(mockListenerReg, timeout(5000)).close();
52 Mockito.verify(mockOnClose, timeout(5000)).run();
54 expectTerminated(duration("5 second"), subject);
60 public void testOnReceiveCloseListenerRegistrationBeforeSetRegistration() throws Exception {
61 new JavaTestKit(getSystem()) {
63 final ActorRef subject = getSystem().actorOf(DataTreeNotificationListenerRegistrationActor.props(),
64 "testOnReceiveSetRegistrationAfterPriorClose");
67 subject.tell(CloseDataTreeNotificationListenerRegistration.getInstance(), getRef());
68 expectMsgClass(duration("5 second"), CloseDataTreeNotificationListenerRegistrationReply.class);
70 subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg,
71 mockOnClose), ActorRef.noSender());
73 Mockito.verify(mockListenerReg, timeout(5000)).close();
74 Mockito.verify(mockOnClose, timeout(5000)).run();
76 expectTerminated(duration("5 second"), subject);
82 public void testOnReceiveSetRegistrationAfterPriorClose() throws Exception {
83 new JavaTestKit(getSystem()) {
85 DataTreeNotificationListenerRegistrationActor.killDelay = 1000;
86 final ListenerRegistration<?> mockListenerReg2 = Mockito.mock(ListenerRegistration.class);
87 final Runnable mockOnClose2 = Mockito.mock(Runnable.class);
89 final ActorRef subject = getSystem().actorOf(DataTreeNotificationListenerRegistrationActor.props(),
90 "testOnReceiveSetRegistrationAfterPriorClose");
93 subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg,
94 mockOnClose), ActorRef.noSender());
95 subject.tell(CloseDataTreeNotificationListenerRegistration.getInstance(), ActorRef.noSender());
96 subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg2,
97 mockOnClose2), ActorRef.noSender());
99 Mockito.verify(mockListenerReg, timeout(5000)).close();
100 Mockito.verify(mockOnClose, timeout(5000)).run();
101 Mockito.verify(mockListenerReg2, timeout(5000)).close();
102 Mockito.verify(mockOnClose2, timeout(5000)).run();
104 expectTerminated(duration("5 second"), subject);