Add INFO.yaml for nemo
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / user / vnspacemanager / languagestyle / updateintentlang / UpdateOperationLangTest.java
1 /*\r
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang;\r
9 \r
10 import junit.framework.TestCase;\r
11 import org.junit.Assert;\r
12 import org.junit.Before;\r
13 import org.junit.Test;\r
14 import static org.mockito.Mockito.*;\r
15 import static org.junit.Assert.*;\r
16 \r
17 import java.lang.reflect.Field;\r
18 import java.lang.reflect.Method;\r
19 import java.util.ArrayList;\r
20 import java.util.List;\r
21 import java.util.HashMap;\r
22 import java.util.LinkedHashMap;\r
23 \r
24 import java.lang.reflect.Field;\r
25 import java.lang.reflect.Method;\r
26 \r
27 \r
28 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
29 import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
30 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
31 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateFlow;\r
32 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateOperation;\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationBuilder;\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationKey;\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValuesBuilder;\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue;\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueBuilder;\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueKey;\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue;\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValueBuilder;\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue;\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueBuilder;\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueKey;\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment;\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegmentBuilder;\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegmentKey;\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.ConditionParameterTargetValueBuilder;\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.ActionBuilder;\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.ActionKey;\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationName;\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationId;\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeName;\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionName;\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowName;\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
68 \r
69 \r
70 /**\r
71  * Created by Thomas Liu on 2015/12/15.\r
72  */\r
73 public class UpdateOperationLangTest extends TestCase {\r
74 \r
75     private UpdateOperationLang updateOperationLangTest;\r
76     private DataBroker dataBroker;\r
77     private TenantManage tenantManage;\r
78     private UserId userId;\r
79     private String operationname;\r
80     private String target;\r
81     private String priority;\r
82     private LinkedHashMap<String, LinkedHashMap<String,String>> conditions,actions;\r
83     private LinkedHashMap<String,String> condition,action;\r
84     private Operations operation;\r
85     private List<Operation> operationList;\r
86     private Objects object;\r
87     private List<Flow> flows;\r
88     private List<Node> nodes;\r
89     private List<Connection> connections;\r
90     private User user;\r
91     private Method method;\r
92     private Field field;\r
93     private Class class1;\r
94 \r
95 \r
96     @org.junit.Before\r
97     public void setUp() throws Exception {\r
98         dataBroker = mock(DataBroker.class);\r
99         tenantManage = mock(TenantManage.class);\r
100         updateOperationLangTest = new UpdateOperationLang(dataBroker,tenantManage);\r
101         conditions = new LinkedHashMap<String, LinkedHashMap<String,String>>();\r
102         actions = new LinkedHashMap<String, LinkedHashMap<String,String>>();\r
103         operation = mock(Operations.class);\r
104         operationList = new ArrayList<Operation>(){{add(mock(Operation.class));}};\r
105         operationname = new String("o1");\r
106         object = mock(Objects.class);\r
107         flows = new ArrayList<Flow>(){{add(mock(Flow.class));}};\r
108         nodes = new ArrayList<Node>(){{add(mock(Node.class));}};\r
109         connections = new ArrayList<Connection>(){{add(mock(Connection.class));}};\r
110         user = mock(User.class);\r
111         conditions = new LinkedHashMap<String, LinkedHashMap<String,String>>();\r
112         actions = new LinkedHashMap<String, LinkedHashMap<String,String>>();\r
113         priority = "100";\r
114         class1 = UpdateOperationLang.class;\r
115 \r
116     }\r
117 \r
118     @org.junit.Test\r
119     public void testOperationHandling() throws Exception {\r
120         field = class1.getDeclaredField("updateOperation");\r
121         UpdateOperation updateOperation = mock(UpdateOperation.class);\r
122         field.setAccessible(true);\r
123         field.set(updateOperationLangTest,updateOperation);\r
124         field = class1.getDeclaredField("operation");\r
125         Operation operation2 = mock(Operation.class);\r
126         field.setAccessible(true);\r
127         field.set(updateOperationLangTest,operation2);\r
128 \r
129         condition = new LinkedHashMap<String,String>(){{\r
130             put(new String("group"),NEMOConstants.string);\r
131         }};\r
132         conditions.put(",a,equal",condition);\r
133         conditions.put("not,b,not_equal",condition);\r
134         conditions.put("and,c,greater_than",condition);\r
135         condition = new LinkedHashMap<String,String>(){{\r
136             put(new String("100"),NEMOConstants.integer);\r
137         }};\r
138         conditions.put("or,d,less_than",condition);\r
139         conditions.put("not,e,not_less_than",condition);\r
140         conditions.put("and,f,not_greater_than",condition);\r
141         condition = new LinkedHashMap<String,String>(){{\r
142             put(new String("100,200"),NEMOConstants.range);\r
143         }};\r
144         conditions.put("or,g,between",condition);\r
145         condition = new LinkedHashMap<String,String>(){{\r
146             put(new String("200,100"),NEMOConstants.range);\r
147         }};\r
148         conditions.put("or,g,between",condition);\r
149         action = new LinkedHashMap<String,String>(){{\r
150             //put(new String("1"),NEMOConstants.range);\r
151             //put(new String("group"),NEMOConstants.string);\r
152             //put(new String("100"),NEMOConstants.integer);\r
153             put(new String("100,200"),NEMOConstants.range);\r
154             put(new String("200,100"),NEMOConstants.range);\r
155         }};\r
156         actions.put(new String("action1"),action);\r
157 \r
158         HashMap<OperationId,Operation> operationMap = new HashMap<OperationId,Operation>();\r
159         OperationId operationId = new OperationId("11111111-1111-1111-1111-111111111111");\r
160         Operation operation = mock(Operation.class);\r
161         operationMap.put(operationId,operation);\r
162         when(tenantManage.getObjectId(userId,operationname)).thenReturn("11111111-1111-1111-1111-111111111111");\r
163         when(tenantManage.getObjectId(userId,operationname)).thenReturn("11111111-1111-1111-1111-111111111111");\r
164         when(tenantManage.getOperation(userId)).thenReturn(operationMap);\r
165         when(tenantManage.getOperation(userId)).thenReturn(operationMap);\r
166 \r
167         //if (tenantManage.getObjectId(userId,target)!=null)\r
168         when(tenantManage.getObjectId(userId,target)).thenReturn("11111111-1111-1111-1111-111111111111");\r
169         when(tenantManage.getObjectId(userId, target)).thenReturn("11111111-1111-1111-1111-111111111111");\r
170         //test createCondition\r
171         //test createAction\r
172         when(updateOperation.OperationHandling(userId,operation)).thenReturn("OperationHandling");\r
173         System.out.println("****************************************** Result1: "+updateOperationLangTest.OperationHandling(userId, operationname, target, priority, conditions,actions));\r
174 \r
175 \r
176         when(tenantManage.getObjectId(userId,operationname)).thenReturn(null);\r
177         when(tenantManage.getObjectId(userId,target)).thenReturn(null);\r
178         System.out.println("****************************************** Result2: "+updateOperationLangTest.OperationHandling(userId, operationname, target, priority, conditions,actions));\r
179 \r
180         when(tenantManage.getObjectId(userId, operationname)).thenReturn("11111111-1111-1111-1111-111111111111");\r
181         when(tenantManage.getObjectId(userId,operationname)).thenReturn("11111111-1111-1111-1111-111111111111");\r
182         operationMap.clear();\r
183         when(tenantManage.getOperation(userId)).thenReturn(operationMap);\r
184         operationMap.put(operationId,operation);\r
185         when(tenantManage.getOperationDataStore(userId)).thenReturn(operationMap);\r
186         when(tenantManage.getOperationDataStore(userId)).thenReturn(operationMap);\r
187         when(tenantManage.getObjectId(userId,target)).thenReturn(null);\r
188         System.out.println("****************************************** Result3: "+updateOperationLangTest.OperationHandling(userId, operationname, target, priority, conditions,actions));\r
189 \r
190         conditions.clear();\r
191         actions.clear();\r
192         when(tenantManage.getObjectId(userId, operationname)).thenReturn(null);\r
193         when(tenantManage.getObjectId(userId,target)).thenReturn("11111111-1111-1111-1111-111111111111");\r
194         when(updateOperation.OperationHandling(userId,operation)).thenReturn("OperationHandling");\r
195         System.out.println("****************************************** Result4: "+updateOperationLangTest.OperationHandling(userId, operationname, target, priority, conditions,actions));\r
196     }\r
197     @org.junit.Test\r
198     public void testcreateAction() throws Exception {\r
199         method = class1.getDeclaredMethod("createAction",new Class[]{\r
200                 UserId.class,\r
201                 LinkedHashMap.class,\r
202         });\r
203         method.setAccessible(true);\r
204 \r
205         actions.clear();\r
206         action = new LinkedHashMap<String,String>(){{\r
207             put(new String("100"),NEMOConstants.integer);\r
208             put(new String("group"),NEMOConstants.string);\r
209         }};\r
210         actions.put(new String("action1"),action);\r
211         System.out.println("****************************************** Result5: "+method.invoke(updateOperationLangTest,userId,actions));\r
212 \r
213         actions.clear();\r
214         action = new LinkedHashMap<String,String>(){{\r
215             put(new String("group"),NEMOConstants.string);\r
216             put(new String("100"),NEMOConstants.integer);\r
217         }};\r
218         actions.put(new String("action1"),action);\r
219         System.out.println("****************************************** Result6: "+method.invoke(updateOperationLangTest,userId,actions));\r
220 \r
221         actions.clear();\r
222         action = new LinkedHashMap<String,String>(){{\r
223             put(new String("100"),NEMOConstants.integer);\r
224             put(new String("100,200"),NEMOConstants.range);\r
225 \r
226         }};\r
227         actions.put(new String("action1"),action);\r
228         System.out.println("****************************************** Result7: "+method.invoke(updateOperationLangTest,userId,actions));\r
229 \r
230         actions.clear();\r
231         action = new LinkedHashMap<String,String>(){{\r
232             put(new String("group"),NEMOConstants.string);\r
233             put(new String("200,100"),NEMOConstants.range);\r
234         }};\r
235         actions.put(new String("action1"),action);\r
236         System.out.println("****************************************** Result8: "+method.invoke(updateOperationLangTest,userId,actions));\r
237 \r
238         actions.clear();\r
239         action = new LinkedHashMap<String,String>(){{\r
240             put(new String("100,200"),NEMOConstants.range);\r
241             put(new String("100"),NEMOConstants.integer);\r
242         }};\r
243         actions.put(new String("action1"),action);\r
244         System.out.println("****************************************** Result9: "+method.invoke(updateOperationLangTest,userId,actions));\r
245 \r
246         actions.clear();\r
247         action = new LinkedHashMap<String,String>(){{\r
248             put(new String("100,200"),NEMOConstants.range);\r
249             put(new String("group"),NEMOConstants.string);\r
250         }};\r
251         actions.put(new String("action1"),action);\r
252         System.out.println("****************************************** Result10: "+method.invoke(updateOperationLangTest,userId,actions));\r
253     }\r
254 }\r
255 \r