Revert "Add mockito-configuration to tests"
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / test / java / org / opendaylight / controller / cluster / raft / RaftActorDelegatingPersistentDataProviderTest.java
1 /*
2  * Copyright (c) 2015 Brocade Communications Systems, Inc. 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.raft;
9
10 import static org.mockito.Mockito.doReturn;
11 import static org.mockito.Mockito.verify;
12 import akka.japi.Procedure;
13 import com.google.protobuf.GeneratedMessage.GeneratedExtension;
14 import java.util.Map;
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.mockito.Mock;
18 import org.mockito.MockitoAnnotations;
19 import org.opendaylight.controller.cluster.DataPersistenceProvider;
20 import org.opendaylight.controller.cluster.PersistentDataProvider;
21 import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
22 import org.opendaylight.controller.cluster.raft.protobuff.client.messages.PersistentPayload;
23
24 /**
25  * Unit tests for RaftActorDelegatingPersistentDataProvider.
26  *
27  * @author Thomas Pantelis
28  */
29 public class RaftActorDelegatingPersistentDataProviderTest {
30     private static final Payload PERSISTENT_PAYLOAD = new TestPersistentPayload();
31
32     private static final Payload NON_PERSISTENT_PAYLOAD = new TestNonPersistentPayload();
33
34     private static final Object OTHER_DATA_OBJECT = new Object();
35
36     @Mock
37     private ReplicatedLogEntry mockPersistentLogEntry;
38
39     @Mock
40     private ReplicatedLogEntry mockNonPersistentLogEntry;
41
42     @Mock
43     private DataPersistenceProvider mockDelegateProvider;
44
45     @Mock
46     private PersistentDataProvider mockPersistentProvider;
47
48     @SuppressWarnings("rawtypes")
49     @Mock
50     private Procedure mockProcedure;
51
52     private RaftActorDelegatingPersistentDataProvider provider;
53
54     @Before
55     public void setup() {
56         MockitoAnnotations.initMocks(this);
57         doReturn(PERSISTENT_PAYLOAD).when(mockPersistentLogEntry).getData();
58         doReturn(NON_PERSISTENT_PAYLOAD).when(mockNonPersistentLogEntry).getData();
59         provider = new RaftActorDelegatingPersistentDataProvider(mockDelegateProvider, mockPersistentProvider);
60     }
61
62     @SuppressWarnings("unchecked")
63     @Test
64     public void testPersistWithPersistenceEnabled() {
65         doReturn(true).when(mockDelegateProvider).isRecoveryApplicable();
66
67         provider.persist(mockPersistentLogEntry, mockProcedure);
68         verify(mockDelegateProvider).persist(mockPersistentLogEntry, mockProcedure);
69
70         provider.persist(mockNonPersistentLogEntry, mockProcedure);
71         verify(mockDelegateProvider).persist(mockNonPersistentLogEntry, mockProcedure);
72
73         provider.persist(OTHER_DATA_OBJECT, mockProcedure);
74         verify(mockDelegateProvider).persist(OTHER_DATA_OBJECT, mockProcedure);
75     }
76
77     @SuppressWarnings("unchecked")
78     @Test
79     public void testPersistWithPersistenceDisabled() {
80         doReturn(false).when(mockDelegateProvider).isRecoveryApplicable();
81
82         provider.persist(mockPersistentLogEntry, mockProcedure);
83         verify(mockPersistentProvider).persist(mockPersistentLogEntry, mockProcedure);
84
85         provider.persist(mockNonPersistentLogEntry, mockProcedure);
86         verify(mockDelegateProvider).persist(mockNonPersistentLogEntry, mockProcedure);
87
88         provider.persist(OTHER_DATA_OBJECT, mockProcedure);
89         verify(mockDelegateProvider).persist(OTHER_DATA_OBJECT, mockProcedure);
90     }
91
92     static class TestNonPersistentPayload extends Payload {
93         @SuppressWarnings("rawtypes")
94         @Override
95         public <T> Map<GeneratedExtension, T> encode() {
96             return null;
97         }
98
99         @Override
100         public Payload decode(
101                 org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntriesMessages.AppendEntries.ReplicatedLogEntry.Payload payload) {
102             return null;
103         }
104
105         @Override
106         public int size() {
107             return 0;
108         }
109     }
110
111     static class TestPersistentPayload extends TestNonPersistentPayload implements PersistentPayload {
112     }
113 }