Migrate to java.time.Duration
[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 java.time.Duration;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.mockito.Mock;
20 import org.mockito.MockitoAnnotations;
21 import org.opendaylight.controller.cluster.datastore.AbstractActorTest;
22 import org.opendaylight.controller.cluster.datastore.messages.CloseDataTreeNotificationListenerRegistration;
23 import org.opendaylight.controller.cluster.datastore.messages.CloseDataTreeNotificationListenerRegistrationReply;
24 import org.opendaylight.yangtools.concepts.ListenerRegistration;
25
26 public class DataTreeNotificationListenerRegistrationActorTest extends AbstractActorTest {
27     @Mock
28     private ListenerRegistration<?> mockListenerReg;
29
30     @Mock
31     private Runnable mockOnClose;
32
33     private TestKit kit;
34
35     @Before
36     public void setup() {
37         MockitoAnnotations.initMocks(this);
38         DataTreeNotificationListenerRegistrationActor.killDelay = 100;
39         kit = new TestKit(getSystem());
40     }
41
42     @Test
43     public void testOnReceiveCloseListenerRegistrationAfterSetRegistration() {
44         final ActorRef subject = getSystem().actorOf(DataTreeNotificationListenerRegistrationActor.props(),
45                 "testOnReceiveCloseListenerRegistrationAfterSetRegistration");
46         kit.watch(subject);
47
48         subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg,
49             mockOnClose), ActorRef.noSender());
50         subject.tell(CloseDataTreeNotificationListenerRegistration.getInstance(), kit.getRef());
51
52         kit.expectMsgClass(Duration.ofSeconds(5), CloseDataTreeNotificationListenerRegistrationReply.class);
53
54         verify(mockListenerReg, timeout(5000)).close();
55         verify(mockOnClose, timeout(5000)).run();
56
57         kit.expectTerminated(Duration.ofSeconds(5), subject);
58     }
59
60     @Test
61     public void testOnReceiveCloseListenerRegistrationBeforeSetRegistration() {
62         final ActorRef subject = getSystem().actorOf(DataTreeNotificationListenerRegistrationActor.props(),
63                 "testOnReceiveSetRegistrationAfterPriorClose");
64         kit.watch(subject);
65
66         subject.tell(CloseDataTreeNotificationListenerRegistration.getInstance(), kit.getRef());
67         kit.expectMsgClass(Duration.ofSeconds(5), CloseDataTreeNotificationListenerRegistrationReply.class);
68
69         subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg,
70             mockOnClose), ActorRef.noSender());
71
72         verify(mockListenerReg, timeout(5000)).close();
73         verify(mockOnClose, timeout(5000)).run();
74
75         kit.expectTerminated(Duration.ofSeconds(5), subject);
76     }
77
78     @Test
79     public void testOnReceiveSetRegistrationAfterPriorClose() {
80         DataTreeNotificationListenerRegistrationActor.killDelay = 1000;
81         final ListenerRegistration<?> mockListenerReg2 = mock(ListenerRegistration.class);
82         final Runnable mockOnClose2 = mock(Runnable.class);
83
84         final ActorRef subject = getSystem().actorOf(DataTreeNotificationListenerRegistrationActor.props(),
85             "testOnReceiveSetRegistrationAfterPriorClose");
86         kit.watch(subject);
87
88         subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg,
89             mockOnClose), ActorRef.noSender());
90         subject.tell(CloseDataTreeNotificationListenerRegistration.getInstance(), ActorRef.noSender());
91         subject.tell(new DataTreeNotificationListenerRegistrationActor.SetRegistration(mockListenerReg2,
92             mockOnClose2), ActorRef.noSender());
93
94         verify(mockListenerReg, timeout(5000)).close();
95         verify(mockOnClose, timeout(5000)).run();
96         verify(mockListenerReg2, timeout(5000)).close();
97         verify(mockOnClose2, timeout(5000)).run();
98
99         kit.expectTerminated(Duration.ofSeconds(5), subject);
100     }
101 }