Add nemo-impl partical test files
[nemo.git] / nemo-renderers / cli-renderer / src / test / java / org / opendaylight / nemo / renderer / cli / CliTriggerTest.java
1 /*
2  * Copyright (c) 2015 Huawei, 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.nemo.renderer.cli;
9
10 import junit.framework.TestCase;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
14 import com.google.common.base.Optional;
15 import com.google.common.util.concurrent.FutureCallback;
16 import com.google.common.util.concurrent.Futures;
17
18 import java.lang.reflect.Method;
19 import java.util.ArrayList;
20 import java.util.List;
21 import java.util.concurrent.Executors;
22 import java.util.concurrent.ScheduledExecutorService;
23 import com.google.common.util.concurrent.CheckedFuture;
24
25 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
26 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
27 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
28 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
29 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
30 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
31 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
32
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalNodes;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNode;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.VirtualNetworks;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetworkKey;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.IntentVnMappingResults;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.VnPnMappingResults;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMappingKey;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMapping;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNetworkId;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
49 import com.google.common.util.concurrent.CheckedFuture;
50 import org.opendaylight.yangtools.concepts.ListenerRegistration;
51 import org.opendaylight.yangtools.yang.binding.DataObject;
52 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
53
54 import org.slf4j.Logger;
55 import org.slf4j.LoggerFactory;
56
57 import java.util.Map;
58 import java.util.Set;
59 import static org.junit.Assert.*;
60 import static org.mockito.Mockito.*;
61 /**
62  * Created by zhangmeng on 2015/12/8.
63  */
64 public class CliTriggerTest extends TestCase {
65     private CliTrigger cliTrigger;
66     private DataBroker dataBroker;
67     @Before
68     public void setUp() throws Exception {
69         dataBroker = mock(DataBroker.class);
70         cliTrigger = new CliTrigger(dataBroker);
71     }
72
73     @Test
74     public void testClose() throws Exception {
75         cliTrigger.close();
76     }
77
78     @Test
79     public void testRegisterUserVnPnMappingListener() throws Exception{
80         Class<CliTrigger> class1 = CliTrigger.class;
81         Method method = class1.getDeclaredMethod("registerUserVnPnMappingListener");
82         method.setAccessible(true);
83
84         method.invoke(cliTrigger);
85     }
86
87     @Test
88     public void testGetUser() throws Exception{
89         Class<CliTrigger> class1 = CliTrigger.class;
90         Method method = class1.getDeclaredMethod("getUser", new Class[]{UserId.class});
91         method.setAccessible(true);
92
93         Optional<User>  optional = mock(Optional.class);
94         UserId userId = mock(UserId.class);
95         User result;
96         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
97         CheckedFuture checkedFuture = mock(CheckedFuture.class);
98
99         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
100         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
101         when(checkedFuture.get()).thenReturn(optional);
102         when(optional.isPresent())
103                 .thenReturn(false)
104                 .thenReturn(true);
105         when(optional.get()).thenReturn(mock(User.class));
106
107         result = (User)method.invoke(cliTrigger, userId);
108         Assert.assertTrue(result == null);
109         result = (User)method.invoke(cliTrigger,userId);
110         Assert.assertTrue(result != null);
111         verify(optional).get();
112         verify(optional,times(2)).isPresent();
113     }
114
115     @Test
116     public void testGetVirtualNetwork() throws Exception{
117         Class<CliTrigger> class1 = CliTrigger.class;
118         Method method = class1.getDeclaredMethod("getVirtualNetwork", new Class[]{UserId.class});
119         method.setAccessible(true);
120
121         UserId userId = mock(UserId.class);
122         VirtualNetwork result;
123         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
124         CheckedFuture checkedFuture = mock(CheckedFuture.class);
125         Optional<VirtualNetwork>  optional = mock(Optional.class);
126
127         when(userId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
128         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
129         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
130         when(checkedFuture.get()).thenReturn(optional);
131         when(optional.isPresent())
132                 .thenReturn(false)
133                 .thenReturn(true);
134         when(optional.get()).thenReturn(mock(VirtualNetwork.class));
135
136         result = (VirtualNetwork) method.invoke(cliTrigger,userId);
137         Assert.assertTrue(result == null);
138         result = (VirtualNetwork) method.invoke(cliTrigger,userId);
139         Assert.assertTrue(result != null);
140         verify(optional).get();
141         verify(optional,times(2)).isPresent();
142
143     }
144
145     @Test
146     public void testGetUserIntentVnMapping() throws Exception{
147         Class<CliTrigger> class1 = CliTrigger.class;
148         Method method = class1.getDeclaredMethod("getUserIntentVnMapping", new Class[]{UserId.class});
149         method.setAccessible(true);
150
151         UserId userId = mock(UserId.class);
152         UserIntentVnMapping result;
153         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
154         CheckedFuture checkedFuture = mock(CheckedFuture.class);
155         Optional<UserIntentVnMapping>  optional = mock(Optional.class);
156
157         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
158         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
159         when(checkedFuture.get()).thenReturn(optional);
160         when(optional.isPresent())
161                 .thenReturn(false)
162                 .thenReturn(true);
163         when(optional.get()).thenReturn(mock(UserIntentVnMapping.class));
164
165         result = (UserIntentVnMapping) method.invoke(cliTrigger,userId);
166         Assert.assertTrue(result == null);
167 //        new UserId("00001111-0000-0000-0000-000011112222");
168         result = (UserIntentVnMapping) method.invoke(cliTrigger,userId);
169         Assert.assertTrue(result != null);
170         verify(optional).get();
171         verify(optional,times(2)).isPresent();
172     }
173
174     @Test
175     public void testGetPhysicalNetwork() throws Exception{
176         Class<CliTrigger> class1 = CliTrigger.class;
177         Method method = class1.getDeclaredMethod("getPhysicalNetwork");
178         method.setAccessible(true);
179
180         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
181         CheckedFuture checkedFuture = mock(CheckedFuture.class);
182         Optional<PhysicalNetwork>  optional = mock(Optional.class);
183         PhysicalNetwork result;
184
185         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
186         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
187         when(checkedFuture.get()).thenReturn(optional);
188         when(optional.isPresent())
189                 .thenReturn(false)
190                 .thenReturn(true);
191         when(optional.get()).thenReturn(mock(PhysicalNetwork.class));
192
193         result = (PhysicalNetwork) method.invoke(cliTrigger);
194         Assert.assertTrue(result == null);
195         result = (PhysicalNetwork) method.invoke(cliTrigger);
196         Assert.assertTrue(result != null);
197         verify(optional).get();
198         verify(optional, times(2)).isPresent();
199     }
200 }