Cleanup TestKit use
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / actors / DataTreeNotificationListenerRegistrationActorTest.java
1 /*
2  * Copyright (c) 2017 Inocybe Technologies and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.cluster.datastore.actors;
9
10 import static org.mockito.Mockito.mock;
11 import static org.mockito.Mockito.timeout;
12 import static org.mockito.Mockito.verify;
13
14 import akka.actor.ActorRef;
15 import akka.testkit.javadsl.TestKit;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.mockito.Mock;
19 import org.mockito.MockitoAnnotations;
20 import org.opendaylight.controller.cluster.datastore.AbstractActorTest;
21 import org.opendaylight.controller.cluster.datastore.messages.CloseDataTreeNotificationListenerRegistration;
22 import org.opendaylight.controller.cluster.datastore.messages.CloseDataTreeNotificationListenerRegistrationReply;
23 import org.opendaylight.yangtools.concepts.ListenerRegistration;
24
25 public class DataTreeNotificationListenerRegistrationActorTest extends AbstractActorTest {
26     @Mock
27     private ListenerRegistration<?> mockListenerReg;
28
29     @Mock
30     private Runnable mockOnClose;
31
32     private TestKit kit;
33
34     @Before
35     public void setup() {
36         MockitoAnnotations.initMocks(this);
37         DataTreeNotificationListenerRegistrationActor.killDelay = 100;
38         kit = new TestKit(getSystem());
39     }
40
41     @Test
42     public void testOnReceiveCloseListenerRegistrationAfterSetRegistration() {
43         final ActorRef subject = getSystem().actorOf(DataTreeNotificationListenerRegistrationActor.props(),
44                 "testOnReceiveCloseListenerRegistrationAfterSetRegistration");
45         kit.watch(subject);
46
47         subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg,
48             mockOnClose), ActorRef.noSender());
49         subject.tell(CloseDataTreeNotificationListenerRegistration.getInstance(), kit.getRef());
50
51         kit.expectMsgClass(kit.duration("5 second"), CloseDataTreeNotificationListenerRegistrationReply.class);
52
53         verify(mockListenerReg, timeout(5000)).close();
54         verify(mockOnClose, timeout(5000)).run();
55
56         kit.expectTerminated(kit.duration("5 second"), subject);
57     }
58
59     @Test
60     public void testOnReceiveCloseListenerRegistrationBeforeSetRegistration() {
61         final ActorRef subject = getSystem().actorOf(DataTreeNotificationListenerRegistrationActor.props(),
62                 "testOnReceiveSetRegistrationAfterPriorClose");
63         kit.watch(subject);
64
65         subject.tell(CloseDataTreeNotificationListenerRegistration.getInstance(), kit.getRef());
66         kit.expectMsgClass(kit.duration("5 second"), CloseDataTreeNotificationListenerRegistrationReply.class);
67
68         subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg,
69             mockOnClose), ActorRef.noSender());
70
71         verify(mockListenerReg, timeout(5000)).close();
72         verify(mockOnClose, timeout(5000)).run();
73
74         kit.expectTerminated(kit.duration("5 second"), subject);
75     }
76
77     @Test
78     public void testOnReceiveSetRegistrationAfterPriorClose() {
79         DataTreeNotificationListenerRegistrationActor.killDelay = 1000;
80         final ListenerRegistration<?> mockListenerReg2 = mock(ListenerRegistration.class);
81         final Runnable mockOnClose2 = mock(Runnable.class);
82
83         final ActorRef subject = getSystem().actorOf(DataTreeNotificationListenerRegistrationActor.props(),
84             "testOnReceiveSetRegistrationAfterPriorClose");
85         kit.watch(subject);
86
87         subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg,
88             mockOnClose), ActorRef.noSender());
89         subject.tell(CloseDataTreeNotificationListenerRegistration.getInstance(), ActorRef.noSender());
90         subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg2,
91             mockOnClose2), ActorRef.noSender());
92
93         verify(mockListenerReg, timeout(5000)).close();
94         verify(mockOnClose, timeout(5000)).run();
95         verify(mockListenerReg2, timeout(5000)).close();
96         verify(mockOnClose2, timeout(5000)).run();
97
98         kit.expectTerminated(kit.duration("5 second"), subject);
99     }
100 }