2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * =============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * ============LICENSE_END=========================================================
24 package org.onap.appc.oam;
26 import org.junit.Assert;
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.junit.runner.RunWith;
30 import org.mockito.Mockito;
31 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.AppcState;
32 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.GetAppcStateOutput;
33 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.MaintenanceModeInput;
34 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.MaintenanceModeOutput;
35 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.RestartInput;
36 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.RestartOutput;
37 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.StartInput;
38 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.StartOutput;
39 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.StopInput;
40 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.StopOutput;
41 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.common.header.CommonHeader;
42 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.status.Status;
43 import org.opendaylight.yangtools.yang.common.RpcResult;
44 import org.onap.appc.oam.processor.OamMmodeProcessor;
45 import org.onap.appc.oam.processor.OamRestartProcessor;
46 import org.onap.appc.oam.processor.OamStartProcessor;
47 import org.onap.appc.oam.processor.OamStopProcessor;
48 import org.onap.appc.oam.util.OperationHelper;
49 import org.onap.appc.oam.util.StateHelper;
50 import org.osgi.framework.FrameworkUtil;
51 import org.powermock.api.mockito.PowerMockito;
52 import org.powermock.core.classloader.annotations.PrepareForTest;
53 import org.powermock.modules.junit4.PowerMockRunner;
54 import org.powermock.reflect.Whitebox;
56 import java.util.concurrent.Executors;
57 import java.util.concurrent.Future;
59 import static org.mockito.Mockito.mock;
60 import static org.powermock.api.mockito.PowerMockito.spy;
62 @RunWith(PowerMockRunner.class)
63 @PrepareForTest({AppcOam.class, FrameworkUtil.class, Executors.class})
64 public class AppcOamTest {
66 private AppcOam appcOam;
67 private CommonHeader mockCommonHeader = mock(CommonHeader.class);
68 private Status mockStatus = mock(Status.class);
69 private OperationHelper mockOperationHelper = mock(OperationHelper.class);
70 private StateHelper mockStateHelper = mock(StateHelper.class);
73 public void setUp() throws Exception {
74 appcOam = spy(new AppcOam(null, null, null));
76 Whitebox.setInternalState(appcOam, "stateHelper", mockStateHelper);
77 Whitebox.setInternalState(appcOam, "operationHelper", mockOperationHelper);
81 public void testMaintenanceMode() throws Exception {
82 // mock processor creation
83 OamMmodeProcessor mockProcessor = mock(OamMmodeProcessor.class);
84 PowerMockito.mockStatic(OamMmodeProcessor.class);
85 PowerMockito.whenNew(OamMmodeProcessor.class).withAnyArguments().thenReturn(mockProcessor);
87 MaintenanceModeInput mockInput = mock(MaintenanceModeInput.class);
88 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
89 // mock processor result
90 Mockito.doReturn(mockStatus).when(mockProcessor).processRequest(mockInput);
92 Future<RpcResult<MaintenanceModeOutput>> response = appcOam.maintenanceMode(mockInput);
94 Assert.assertEquals("Should have common header", mockCommonHeader,
95 response.get().getResult().getCommonHeader());
96 Assert.assertEquals("Should have status", mockStatus, response.get().getResult().getStatus());
100 public void testStart() throws Exception {
101 // mock processor creation
102 OamStartProcessor mockProcessor = mock(OamStartProcessor.class);
103 PowerMockito.mockStatic(OamStartProcessor.class);
104 PowerMockito.whenNew(OamStartProcessor.class).withAnyArguments().thenReturn(mockProcessor);
106 StartInput mockInput = mock(StartInput.class);
107 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
108 // mock processor result
109 Mockito.doReturn(mockStatus).when(mockProcessor).processRequest(mockInput);
111 Future<RpcResult<StartOutput>> response = appcOam.start(mockInput);
113 Assert.assertEquals("Should have common header", mockCommonHeader,
114 response.get().getResult().getCommonHeader());
115 Assert.assertEquals("Should have status", mockStatus, response.get().getResult().getStatus());
119 public void testStop() throws Exception {
120 // mock processor creation
121 OamStopProcessor mockProcessor = mock(OamStopProcessor.class);
122 PowerMockito.mockStatic(OamStopProcessor.class);
123 PowerMockito.whenNew(OamStopProcessor.class).withAnyArguments().thenReturn(mockProcessor);
125 StopInput mockInput = mock(StopInput.class);
126 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
127 // mock processor result
128 Mockito.doReturn(mockStatus).when(mockProcessor).processRequest(mockInput);
130 Future<RpcResult<StopOutput>> response = appcOam.stop(mockInput);
132 Assert.assertEquals("Should have common header", mockCommonHeader,
133 response.get().getResult().getCommonHeader());
134 Assert.assertEquals("Should have status", mockStatus, response.get().getResult().getStatus());
138 public void testRestart() throws Exception {
139 // mock processor creation
140 OamRestartProcessor mockProcessor = mock(OamRestartProcessor.class);
141 PowerMockito.mockStatic(OamRestartProcessor.class);
142 PowerMockito.whenNew(OamRestartProcessor.class).withAnyArguments().thenReturn(mockProcessor);
144 RestartInput mockInput = mock(RestartInput.class);
145 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
146 // mock processor result
147 Mockito.doReturn(mockStatus).when(mockProcessor).processRequest(mockInput);
149 Future<RpcResult<RestartOutput>> response = appcOam.restart(mockInput);
151 Assert.assertEquals("Should have common header", mockCommonHeader,
152 response.get().getResult().getCommonHeader());
153 Assert.assertEquals("Should have status", mockStatus, response.get().getResult().getStatus());
157 public void testGetAppcState() throws Exception {
158 AppcState appcState = AppcState.Started;
159 Mockito.doReturn(appcState).when(mockStateHelper).getCurrentOamYangState();
161 Future<RpcResult<GetAppcStateOutput>> state = appcOam.getAppcState();
162 Assert.assertEquals("Should return the same state",
163 appcState, state.get().getResult().getState());