2 * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
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
8 package org.opendaylight.nemo.renderer.cli;
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;
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;
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;
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;
54 import org.slf4j.Logger;
55 import org.slf4j.LoggerFactory;
59 import static org.junit.Assert.*;
60 import static org.mockito.Mockito.*;
62 * Created by zhangmeng on 2015/12/8.
64 public class CliTriggerTest extends TestCase {
65 private CliTrigger cliTrigger;
66 private DataBroker dataBroker;
68 public void setUp() throws Exception {
69 dataBroker = mock(DataBroker.class);
70 cliTrigger = new CliTrigger(dataBroker);
74 public void testClose() throws Exception {
79 public void testRegisterUserVnPnMappingListener() throws Exception{
80 Class<CliTrigger> class1 = CliTrigger.class;
81 Method method = class1.getDeclaredMethod("registerUserVnPnMappingListener");
82 method.setAccessible(true);
84 method.invoke(cliTrigger);
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);
93 Optional<User> optional = mock(Optional.class);
94 UserId userId = mock(UserId.class);
96 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
97 CheckedFuture checkedFuture = mock(CheckedFuture.class);
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())
105 when(optional.get()).thenReturn(mock(User.class));
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();
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);
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);
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())
134 when(optional.get()).thenReturn(mock(VirtualNetwork.class));
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();
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);
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);
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())
163 when(optional.get()).thenReturn(mock(UserIntentVnMapping.class));
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();
175 public void testGetPhysicalNetwork() throws Exception{
176 Class<CliTrigger> class1 = CliTrigger.class;
177 Method method = class1.getDeclaredMethod("getPhysicalNetwork");
178 method.setAccessible(true);
180 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
181 CheckedFuture checkedFuture = mock(CheckedFuture.class);
182 Optional<PhysicalNetwork> optional = mock(Optional.class);
183 PhysicalNetwork result;
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())
191 when(optional.get()).thenReturn(mock(PhysicalNetwork.class));
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();