2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 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 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 * ============LICENSE_END=========================================================
25 package org.onap.appc.oam;
27 import org.junit.Assert;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.junit.runner.RunWith;
31 import org.mockito.Mockito;
32 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.AppcState;
33 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.GetAppcStateOutput;
34 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.MaintenanceModeInput;
35 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.MaintenanceModeOutput;
36 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.RestartInput;
37 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.RestartOutput;
38 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.StartInput;
39 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.StartOutput;
40 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.StopInput;
41 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.StopOutput;
42 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.common.header.CommonHeader;
43 import org.opendaylight.yang.gen.v1.org.onap.appc.oam.rev170303.status.Status;
44 import org.opendaylight.yangtools.yang.common.RpcResult;
45 import org.onap.appc.oam.processor.OamMmodeProcessor;
46 import org.onap.appc.oam.processor.OamRestartProcessor;
47 import org.onap.appc.oam.processor.OamStartProcessor;
48 import org.onap.appc.oam.processor.OamStopProcessor;
49 import org.onap.appc.oam.util.OperationHelper;
50 import org.onap.appc.oam.util.StateHelper;
51 import org.osgi.framework.FrameworkUtil;
52 import org.powermock.api.mockito.PowerMockito;
53 import org.powermock.core.classloader.annotations.PrepareForTest;
54 import org.powermock.modules.junit4.PowerMockRunner;
55 import org.powermock.reflect.Whitebox;
57 import java.util.concurrent.Executors;
58 import java.util.concurrent.Future;
60 import static org.mockito.Mockito.mock;
61 import static org.powermock.api.mockito.PowerMockito.spy;
63 @RunWith(PowerMockRunner.class)
64 @PrepareForTest({AppcOam.class, FrameworkUtil.class, Executors.class})
65 public class AppcOamTest {
67 private AppcOam appcOam;
68 private CommonHeader mockCommonHeader = mock(CommonHeader.class);
69 private Status mockStatus = mock(Status.class);
70 private OperationHelper mockOperationHelper = mock(OperationHelper.class);
71 private StateHelper mockStateHelper = mock(StateHelper.class);
74 public void setUp() throws Exception {
75 appcOam = spy(new AppcOam(null, null, null));
77 Whitebox.setInternalState(appcOam, "stateHelper", mockStateHelper);
78 Whitebox.setInternalState(appcOam, "operationHelper", mockOperationHelper);
82 public void testMaintenanceMode() throws Exception {
83 // mock processor creation
84 OamMmodeProcessor mockProcessor = mock(OamMmodeProcessor.class);
85 PowerMockito.mockStatic(OamMmodeProcessor.class);
86 PowerMockito.whenNew(OamMmodeProcessor.class).withAnyArguments().thenReturn(mockProcessor);
88 MaintenanceModeInput mockInput = mock(MaintenanceModeInput.class);
89 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
90 // mock processor result
91 Mockito.doReturn(mockStatus).when(mockProcessor).processRequest(mockInput);
93 Future<RpcResult<MaintenanceModeOutput>> response = appcOam.maintenanceMode(mockInput);
95 Assert.assertEquals("Should have common header", mockCommonHeader,
96 response.get().getResult().getCommonHeader());
97 Assert.assertEquals("Should have status", mockStatus, response.get().getResult().getStatus());
101 public void testStart() throws Exception {
102 // mock processor creation
103 OamStartProcessor mockProcessor = mock(OamStartProcessor.class);
104 PowerMockito.mockStatic(OamStartProcessor.class);
105 PowerMockito.whenNew(OamStartProcessor.class).withAnyArguments().thenReturn(mockProcessor);
107 StartInput mockInput = mock(StartInput.class);
108 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
109 // mock processor result
110 Mockito.doReturn(mockStatus).when(mockProcessor).processRequest(mockInput);
112 Future<RpcResult<StartOutput>> response = appcOam.start(mockInput);
114 Assert.assertEquals("Should have common header", mockCommonHeader,
115 response.get().getResult().getCommonHeader());
116 Assert.assertEquals("Should have status", mockStatus, response.get().getResult().getStatus());
120 public void testStop() throws Exception {
121 // mock processor creation
122 OamStopProcessor mockProcessor = mock(OamStopProcessor.class);
123 PowerMockito.mockStatic(OamStopProcessor.class);
124 PowerMockito.whenNew(OamStopProcessor.class).withAnyArguments().thenReturn(mockProcessor);
126 StopInput mockInput = mock(StopInput.class);
127 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
128 // mock processor result
129 Mockito.doReturn(mockStatus).when(mockProcessor).processRequest(mockInput);
131 Future<RpcResult<StopOutput>> response = appcOam.stop(mockInput);
133 Assert.assertEquals("Should have common header", mockCommonHeader,
134 response.get().getResult().getCommonHeader());
135 Assert.assertEquals("Should have status", mockStatus, response.get().getResult().getStatus());
139 public void testRestart() throws Exception {
140 // mock processor creation
141 OamRestartProcessor mockProcessor = mock(OamRestartProcessor.class);
142 PowerMockito.mockStatic(OamRestartProcessor.class);
143 PowerMockito.whenNew(OamRestartProcessor.class).withAnyArguments().thenReturn(mockProcessor);
145 RestartInput mockInput = mock(RestartInput.class);
146 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
147 // mock processor result
148 Mockito.doReturn(mockStatus).when(mockProcessor).processRequest(mockInput);
150 Future<RpcResult<RestartOutput>> response = appcOam.restart(mockInput);
152 Assert.assertEquals("Should have common header", mockCommonHeader,
153 response.get().getResult().getCommonHeader());
154 Assert.assertEquals("Should have status", mockStatus, response.get().getResult().getStatus());
158 public void testGetAppcState() throws Exception {
159 AppcState appcState = AppcState.Started;
160 Mockito.doReturn(appcState).when(mockStateHelper).getCurrentOamYangState();
162 Future<RpcResult<GetAppcStateOutput>> state = appcOam.getAppcState();
163 Assert.assertEquals("Should return the same state",
164 appcState, state.get().getResult().getState());