delete all .class files
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / user / vnspacemanager / structurestyle / updateintent / UpdateOperationTest.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.user.vnspacemanager.structurestyle.updateintent;
9 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateOperation;
10
11 import static org.mockito.Mockito.mock;
12 import static org.mockito.Mockito.*;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16
17 import org.opendaylight.yangtools.yang.binding.DataObject;
18 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
19 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
20 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
21 //import org.opendaylight.nemo.user.vnspacemanager.instancecheck.OperationInstanceCheck;
22 //import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.OperationDefinitionCheck;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalHostId;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalNodeId;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationKey;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
38 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
39 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;
46 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
47 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;
54
55 import com.google.common.util.concurrent.CheckedFuture;
56 import com.google.common.util.concurrent.FutureCallback;
57 import com.google.common.util.concurrent.Futures;
58 import org.slf4j.Logger;
59 import org.slf4j.LoggerFactory;
60 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
61
62 import java.util.ArrayList;
63 import java.util.LinkedList;
64 import java.util.List;
65 /**
66  * Created by Zhongwei Zhao on 2015/12/23.
67  */
68 public class UpdateOperationTest {
69
70     private UpdateOperation updateOperation;
71
72     private DataBroker dataBroker;
73     private TenantManage tenantManage;
74     private UserId userId;
75     private User user;
76     private Operation operation;
77     private Objects objects;
78     
79     @org.junit.Before
80     public void setUp() throws Exception {
81         dataBroker = mock(DataBroker.class);
82         tenantManage = mock(TenantManage.class);
83         userId = mock(UserId.class);
84         user = mock(User.class);
85         operation = mock(Operation.class);
86         
87         updateOperation = new UpdateOperation(dataBroker, tenantManage);
88         objects = mock(Objects.class);
89
90     }
91     
92     @org.junit.Test
93     public void testOperationHandling() throws Exception {
94         
95         CheckedFuture operationdefinitionFuture = mock(CheckedFuture.class);
96         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
97
98         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
99         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(operationdefinitionFuture); 
100         //The action type has not been defined.
101         Assert.assertEquals(updateOperation.OperationHandling(userId,operation),"The action type has not been defined.");
102         
103         
104         when(operation.getAction()).thenReturn(null);
105         when(operation.getConditionSegment()).thenReturn(null);
106         
107         ObjectId objectId = mock(ObjectId.class);
108         when(operation.getTargetObject()).thenReturn(objectId);
109         //The target object is not exist.
110         Assert.assertEquals(updateOperation.OperationHandling(userId,operation),"The target null is not exist.");
111         
112         
113         when(operation.getTargetObject()).thenReturn(null);
114         //The target should not be empty.
115         Assert.assertEquals(updateOperation.OperationHandling(userId,operation),"The target should not be empty.");
116         
117         
118         when(operation.getTargetObject()).thenReturn(objectId);
119         when(tenantManage.getUser()).thenReturn(user);
120         when(user.getObjects()).thenReturn(objects);
121         
122         Node node = mock(Node.class);
123         List<Node> nodeList = new ArrayList<Node>(1);
124         nodeList.add(node);
125         when(objects.getNode()).thenReturn(nodeList);
126         
127         NodeId nodeId = mock(NodeId.class);
128         when(node.getNodeId()).thenReturn(nodeId);
129         when(nodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
130         when(objectId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
131         
132         WriteTransaction writeTransaction = mock(WriteTransaction.class);
133         when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
134
135         OperationId operationId = mock(OperationId.class);
136         when(operation.getOperationId()).thenReturn(operationId);
137         CheckedFuture<Void, TransactionCommitFailedException> f;
138         f=mock(CheckedFuture.class);
139         when(writeTransaction.submit()).thenReturn(f);
140         //null
141         Assert.assertEquals(updateOperation.OperationHandling(userId,operation),"The target 00001111-0000-0000-0000-000011112222 is not exist.");
142         
143     }
144 }