Changes for new odl version
[appc.git] / appc-sequence-generator / appc-sequence-generator-bundle / src / test / java / org / onap / appc / seqgen / provider / SequenceGeneratorProviderTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2019 Ericsson
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.appc.seqgen.provider;
23
24 import static org.junit.Assert.assertTrue;
25 import java.util.ArrayList;
26 import java.util.List;
27 import org.junit.Test;
28 import org.mockito.Mockito;
29 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
30 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
31 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
32 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
33 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.GenerateSequenceInput;
34 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.GenerateSequenceInputBuilder;
35 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.SequenceGeneratorService;
36 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.dependency.info.DependencyInfo;
37 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.dependency.info.DependencyInfoBuilder;
38 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.dependency.info.dependency.info.Vnfcs;
39 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.dependency.info.dependency.info.VnfcsBuilder;
40 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.inventory.info.InventoryInfo;
41 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.inventory.info.InventoryInfoBuilder;
42 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.inventory.info.inventory.info.VnfInfo;
43 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.inventory.info.inventory.info.VnfInfoBuilder;
44 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.inventory.info.inventory.info.vnf.info.Vm;
45 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.inventory.info.inventory.info.vnf.info.VmBuilder;
46 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.inventory.info.inventory.info.vnf.info.vm.Vnfc;
47 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.inventory.info.inventory.info.vnf.info.vm.VnfcBuilder;
48 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.request.info.RequestInfo;
49 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.request.info.RequestInfo.Action;
50 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.request.info.RequestInfo.ActionLevel;
51 import org.opendaylight.yang.gen.v1.org.onap.appc.sequencegenerator.rev170706.request.info.RequestInfoBuilder;
52 import org.opendaylight.yangtools.yang.common.RpcResult;
53
54
55 public class SequenceGeneratorProviderTest {
56
57     private DataBroker dataBroker = Mockito.mock(DataBroker.class);
58     private RpcProviderRegistry rpcRegistry = Mockito.mock(RpcProviderRegistry.class);
59     private NotificationPublishService notificationService = Mockito.mock(NotificationPublishService.class);
60
61     @Test
62     public void testClose() throws Exception {
63         BindingAwareBroker.RpcRegistration<SequenceGeneratorService> registration = 
64                 (BindingAwareBroker.RpcRegistration<SequenceGeneratorService>) Mockito.mock(BindingAwareBroker.RpcRegistration.class);
65         Mockito.doReturn(registration).when(rpcRegistry).addRpcImplementation(Mockito.any(), Mockito.any());
66         SequenceGeneratorProvider provider = new SequenceGeneratorProvider(dataBroker, notificationService, rpcRegistry);
67         provider.close();
68         Mockito.verify(provider.rpcRegistration).close();
69     }
70
71     @Test
72     public void testGenerateSequence() throws Exception {
73         BindingAwareBroker.RpcRegistration<SequenceGeneratorService> registration = 
74                 (BindingAwareBroker.RpcRegistration<SequenceGeneratorService>) Mockito.mock(BindingAwareBroker.RpcRegistration.class);
75         Mockito.doReturn(registration).when(rpcRegistry).addRpcImplementation(Mockito.any(), Mockito.any());
76         SequenceGeneratorProvider provider = new SequenceGeneratorProvider(dataBroker, notificationService, rpcRegistry);
77         GenerateSequenceInputBuilder builder = new GenerateSequenceInputBuilder();
78         RequestInfoBuilder riBuilder = new RequestInfoBuilder();
79         riBuilder.setAction(Action.Start);
80         riBuilder.setActionLevel(ActionLevel.Vm);
81         riBuilder.setPayload("PAYLOAD");
82         RequestInfo info = riBuilder.build();
83         builder.setRequestInfo(info);
84         InventoryInfoBuilder iiBuilder = new InventoryInfoBuilder();
85         VnfInfoBuilder viBuilder = new VnfInfoBuilder();
86         viBuilder.setVnfId("VNF_ID");
87         List<Vm> vmList = new ArrayList<Vm>();
88         VmBuilder vmBuilder = new VmBuilder();
89         vmBuilder.setVmId("VM_ID");
90         vmBuilder.setVserverId("VSERVER_ID");
91         VnfcBuilder vnfcBuilder = new VnfcBuilder();
92         vnfcBuilder.setVnfcName("VNFC_NAME");
93         vnfcBuilder.setVnfcType("VNFC_TYPE");
94         Vnfc vnfc = vnfcBuilder.build();
95         vmBuilder.setVnfc(vnfc);
96         Vm vm = vmBuilder.build();
97         vmList.add(vm);
98         viBuilder.setVm(vmList);
99         VnfInfo vnfInfo = viBuilder.build();
100         iiBuilder.setVnfInfo(vnfInfo);
101         InventoryInfo iInfo = iiBuilder.build();
102         builder.setInventoryInfo(iInfo);
103         DependencyInfoBuilder dependencyBuilder = new DependencyInfoBuilder();
104         List<Vnfcs> vnfcsList = new ArrayList<>();
105         VnfcsBuilder vnfcsBuilder = new VnfcsBuilder();
106         vnfcsBuilder.setVnfcType("VNFC_TYPE");
107         List<String> parentList = new ArrayList<>();
108         parentList.add("VNFC_TYPE");
109         vnfcsBuilder.setParents(parentList);
110         Vnfcs vnfcs = vnfcsBuilder.build();
111         vnfcsList.add(vnfcs);
112         dependencyBuilder.setVnfcs(vnfcsList);
113         DependencyInfo dependencyInfo = dependencyBuilder.build();
114         builder.setDependencyInfo(dependencyInfo);
115         GenerateSequenceInput input = builder.build();
116         assertTrue(provider.generateSequence(input).get() instanceof RpcResult);
117     }
118
119 }