2 * Copyright (c) 2016 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.tool.sandbox;
10 import junit.framework.Assert;
11 import junit.framework.TestCase;
12 import org.junit.Before;
13 import org.junit.Test;
15 import static org.junit.Assert.*;
16 import org.json.JSONObject;
17 import org.junit.runner.RunWith;
18 import org.opendaylight.nemo.tool.sandbox.models.*;
19 import org.opendaylight.nemo.tool.sandbox.utils.PropertyLoader;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
23 import java.lang.reflect.Field;
24 import java.lang.reflect.Method;
25 import java.util.ArrayList;
26 import java.util.HashMap;
27 import java.util.List;
29 import org.powermock.api.mockito.PowerMockito;
30 import org.powermock.api.support.membermodification.MemberMatcher;
31 import org.powermock.api.support.membermodification.MemberModifier;
32 import org.powermock.core.classloader.annotations.PrepareForTest;
33 import org.powermock.modules.junit4.PowerMockRunner;
35 import static org.junit.Assert.assertTrue;
36 import static org.mockito.Mockito.*;
38 * Created by zhangmeng on 2016/1/14.
40 @RunWith(PowerMockRunner.class)
41 @PrepareForTest(CmdExecutor.class)
42 public class SandBoxManagerTest extends TestCase {
43 private SandBoxManager sandBoxManager;
44 private Method method;
46 public void setUp() throws Exception {
47 sandBoxManager = SandBoxManager.getInstance();
51 public void testGetInstance() throws Exception {
52 sandBoxManager = SandBoxManager.getInstance();
56 public void testGets() throws Exception {
57 Field field = SandBoxManager.class.getDeclaredField("network");
58 field.setAccessible(true);
60 Network network = mock(Network.class);
61 JSONObject jsonObject = mock(JSONObject.class);
63 //no powermock and network=null
64 field.set(sandBoxManager, null);
65 org.junit.Assert.assertTrue(!sandBoxManager.createNetwork(null));
66 org.junit.Assert.assertTrue(!sandBoxManager.createNetwork());
67 org.junit.Assert.assertTrue(sandBoxManager.getHosts() == null);
68 org.junit.Assert.assertTrue(sandBoxManager.getExternals() == null);
69 org.junit.Assert.assertTrue(sandBoxManager.getSwitches() == null);
70 org.junit.Assert.assertTrue(sandBoxManager.getLinks() == null);
71 org.junit.Assert.assertTrue(sandBoxManager.destroyNetwork());
73 field.set(sandBoxManager, network);
74 PowerMockito.mockStatic(CmdExecutor.class);
75 PowerMockito.when(CmdExecutor.open()).thenReturn(true);
76 when(network.hostJsonNode()).thenReturn(jsonObject);
77 when(network.externalJsonNode()).thenReturn(jsonObject);
78 when(network.nodeJsonNode()).thenReturn(jsonObject);
79 when(network.innerLinkJsonNode()).thenReturn(jsonObject);
80 when(network.execute(any(String.class), any(String.class))).thenReturn("test");
81 org.junit.Assert.assertTrue(sandBoxManager.execute("1","1").equals("test"));
82 org.junit.Assert.assertTrue(sandBoxManager.getHosts() != null);
83 org.junit.Assert.assertTrue(sandBoxManager.getExternals() != null);
84 org.junit.Assert.assertTrue(sandBoxManager.getSwitches() != null);
85 org.junit.Assert.assertTrue(sandBoxManager.getLinks() != null);
87 org.junit.Assert.assertTrue(sandBoxManager.createNetwork(PropertyLoader.readLines("/Network", "Network file does not exist.")));
88 org.junit.Assert.assertTrue(sandBoxManager.createNetwork());
89 org.junit.Assert.assertTrue(sandBoxManager.destroyNetwork());
92 public void testGetNodeType() throws Exception {
93 method = SandBoxManager.class.getDeclaredMethod("getNodeType",new Class[]{String.class});
94 method.setAccessible(true);
96 org.junit.Assert.assertTrue(method.invoke(sandBoxManager, "Switch") == NodeType.SWITCH);
97 org.junit.Assert.assertTrue(method.invoke(sandBoxManager, "Router") == NodeType.ROUTER);
98 org.junit.Assert.assertTrue(method.invoke(sandBoxManager, "Cache") == NodeType.CACHE);
99 org.junit.Assert.assertTrue(method.invoke(sandBoxManager, "Firewall") == NodeType.FIREWALL);
100 org.junit.Assert.assertTrue(method.invoke(sandBoxManager, "Vm") == NodeType.VM);
101 org.junit.Assert.assertTrue(method.invoke(sandBoxManager,"1") == NodeType.UNKNOWN);
106 public void testHandleLink() throws Exception {
107 method = SandBoxManager.class.getDeclaredMethod("handleLink",new Class[]{String.class});
108 method.setAccessible(true);
110 org.junit.Assert.assertTrue(method.invoke(sandBoxManager, "12") == null);
111 org.junit.Assert.assertTrue(method.invoke(sandBoxManager,"1,2,3,4,5") != null);
115 public void testSaveConnector() throws Exception {
116 method = SandBoxManager.class.getDeclaredMethod("saveConnector",new Class[]{
120 method.setAccessible(true);
122 Connector connector = mock(Connector.class);
123 Map<String, List<Connector>> connectorMap = mock(Map.class);
125 when(connector.getNodeName()).thenReturn("test");
126 when(connectorMap.containsKey(any(String.class)))
129 when(connectorMap.get(any(String.class))).thenReturn(mock(List.class));
130 method.invoke(sandBoxManager, connector, connectorMap);
131 method.invoke(sandBoxManager, connector, connectorMap);
132 verify(connectorMap,times(2)).containsKey(any(String.class));
136 public void testParserHost() throws Exception {
137 method = SandBoxManager.class.getDeclaredMethod("parserHost",new Class[]{
142 method.setAccessible(true);
144 String[] args = {"1","2","3","1:2"};
145 Map<String, List<Connector>> connectorMap = mock(Map.class);
146 Host host = mock(Host.class);
147 Connector connector = mock(Connector.class);
148 List<Connector> connectors = new ArrayList<Connector>();
150 connectors.add(connector);
152 when(host.getName()).thenReturn("test");
153 when(connectorMap.get(host.getName())).thenReturn(connectors);
155 method.invoke(sandBoxManager, args, connectorMap, host);
156 verify(host,times(2)).getName();
160 public void testHandleFirewall() throws Exception {
161 method = SandBoxManager.class.getDeclaredMethod("handleFirewall",new Class[]{
165 method.setAccessible(true);
167 String line = "test";
168 Map<String, List<Connector>> connectorMap = mock(Map.class);
170 org.junit.Assert.assertTrue(method.invoke(sandBoxManager,line,connectorMap) == null);
172 when(connectorMap.get(any(String.class))).thenReturn(null);
173 org.junit.Assert.assertTrue(method.invoke(sandBoxManager,line,connectorMap) != null);
177 public void testHandleCache() throws Exception {
178 method = SandBoxManager.class.getDeclaredMethod("handleCache",new Class[]{
182 method.setAccessible(true);
184 String line = "test";
185 Map<String, List<Connector>> connectorMap = mock(Map.class);
187 org.junit.Assert.assertTrue(method.invoke(sandBoxManager,line,connectorMap) == null);
189 when(connectorMap.get(any(String.class))).thenReturn(null);
190 org.junit.Assert.assertTrue(method.invoke(sandBoxManager,line,connectorMap) != null);
195 public void testHandleVirtualMachine() throws Exception {
196 method = SandBoxManager.class.getDeclaredMethod("handleVirtualMachine",new Class[]{
200 method.setAccessible(true);
202 String line = "test";
203 Map<String, List<Connector>> connectorMap = mock(Map.class);
205 org.junit.Assert.assertTrue(method.invoke(sandBoxManager,line,connectorMap) == null);
207 when(connectorMap.get(any(String.class))).thenReturn(null);
208 org.junit.Assert.assertTrue(method.invoke(sandBoxManager,line,connectorMap) != null);
212 public void testHandleSwitch() throws Exception {
213 method = SandBoxManager.class.getDeclaredMethod("handleSwitch",new Class[]{
217 method.setAccessible(true);
219 List<Connector> connectorList = new ArrayList<Connector>();
220 Connector connector = mock(Connector.class);
221 String line = "test";
222 Map<String, List<Connector>> connectorMap = mock(Map.class);
224 connectorList.add(connector);
226 org.junit.Assert.assertTrue(method.invoke(sandBoxManager, line, connectorMap) == null);
228 when(connectorMap.get(any(String.class))).thenReturn(connectorList);
229 org.junit.Assert.assertTrue(method.invoke(sandBoxManager, line, connectorMap) != null);
234 public void testGenerateNetwork() throws Exception {
235 method = SandBoxManager.class.getDeclaredMethod("generateNetwork",new Class[]{List.class});
236 method.setAccessible(true);
238 List<String> list = new ArrayList<String>();
240 method.invoke(sandBoxManager, list);
243 method.invoke(sandBoxManager, list);
246 method.invoke(sandBoxManager, list);
248 list.add("Firewall");
249 method.invoke(sandBoxManager, list);