Merge "Fix pep8 violations in odl_meter_test"
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / services / SalGroupServiceImplTest.java
1 package org.opendaylight.openflowplugin.impl.services;
2
3 import com.google.common.util.concurrent.Futures;
4 import com.google.common.util.concurrent.ListenableFuture;
5 import org.junit.Test;
6 import org.mockito.Matchers;
7 import org.mockito.Mock;
8 import org.opendaylight.openflowplugin.api.openflow.registry.group.DeviceGroupRegistry;
9 import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleListener;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.*;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.OriginalGroup;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.OriginalGroupBuilder;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.UpdatedGroup;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.UpdatedGroupBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
18 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
19 import org.opendaylight.yangtools.yang.common.RpcResult;
20 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
21
22 import static org.mockito.Matchers.eq;
23 import static org.mockito.Mockito.mock;
24 import static org.mockito.Mockito.verify;
25 import static org.mockito.Mockito.when;
26
27 public class SalGroupServiceImplTest extends ServiceMocking {
28
29     private static final Long DUMMY_GROUP_ID = 15L;
30
31     @Mock
32     DeviceGroupRegistry mockedDeviceGroupRegistry;
33
34     SalGroupServiceImpl salGroupService;
35
36     @Override
37     public void initialization() {
38         super.initialization();
39         when(mockedDeviceContext.getDeviceGroupRegistry()).thenReturn(mockedDeviceGroupRegistry);
40         salGroupService = new SalGroupServiceImpl(mockedRequestContextStack, mockedDeviceContext);
41     }
42
43     @Test
44     public void testAddGroup() throws Exception {
45         addGroup(null);
46     }
47
48     @Test
49     public void testAddGroupWithItemLifecycle() throws Exception {
50         addGroup(mock(ItemLifecycleListener.class));
51     }
52
53     private void addGroup(final ItemLifecycleListener itemLifecycleListener) {
54         final GroupId dummyGroupId = new GroupId(DUMMY_GROUP_ID);
55         AddGroupInput addGroupInput = new AddGroupInputBuilder().setGroupId(dummyGroupId).build();
56
57         this.<AddGroupOutput>mockSuccessfulFuture();
58
59         salGroupService.setItemLifecycleListener(itemLifecycleListener);
60
61         salGroupService.addGroup(addGroupInput);
62         verify(mockedRequestContextStack).createRequestContext();
63         verify(mockedDeviceGroupRegistry).store(eq(dummyGroupId));
64
65         if (itemLifecycleListener != null) {
66             verify(itemLifecycleListener).onAdded(Matchers.<KeyedInstanceIdentifier<Group, GroupKey>>any(),Matchers.<Group>any());
67         }
68     }
69
70     @Test
71     public void testUpdateGroup() throws Exception {
72         updateGroup(null);
73     }
74
75     @Test
76     public void testUpdateGroupWithItemLifecycle() throws Exception {
77         updateGroup(mock(ItemLifecycleListener.class));
78     }
79
80     private void updateGroup(final ItemLifecycleListener itemLifecycleListener) {
81         final UpdatedGroup updatedGroup = new UpdatedGroupBuilder().setGroupId(new GroupId(DUMMY_GROUP_ID)).build();
82         final OriginalGroup originalGroup = new OriginalGroupBuilder().setGroupId(new GroupId(DUMMY_GROUP_ID)).build();
83         final UpdateGroupInput updateGroupInput = new UpdateGroupInputBuilder().setUpdatedGroup(updatedGroup).setOriginalGroup(originalGroup).build();
84
85         this.<UpdateGroupOutput>mockSuccessfulFuture();
86
87         salGroupService.setItemLifecycleListener(itemLifecycleListener);
88
89         salGroupService.updateGroup(updateGroupInput);
90         verify(mockedRequestContextStack).createRequestContext();
91
92         if (itemLifecycleListener != null) {
93             verify(itemLifecycleListener).onAdded(Matchers.<KeyedInstanceIdentifier<Group, GroupKey>>any(),Matchers.<Group>any());
94             verify(itemLifecycleListener).onRemoved(Matchers.<KeyedInstanceIdentifier<Group, GroupKey>>any());
95         }
96     }
97
98     @Test
99     public void testRemoveGroup() throws Exception {
100         removeGroup(null);
101     }
102
103     @Test
104     public void testRemoveGroupWithItemLifecycle() throws Exception {
105         removeGroup(mock(ItemLifecycleListener.class));
106     }
107
108     private void removeGroup(final ItemLifecycleListener itemLifecycleListener) throws Exception {
109         final GroupId dummyGroupId = new GroupId(DUMMY_GROUP_ID);
110         RemoveGroupInput removeGroupInput = new RemoveGroupInputBuilder().setGroupId(dummyGroupId).build();
111
112         this.<RemoveGroupOutput>mockSuccessfulFuture();
113
114         salGroupService.setItemLifecycleListener(itemLifecycleListener);
115
116         salGroupService.removeGroup(removeGroupInput);
117         verify(mockedRequestContextStack).createRequestContext();
118         verify(mockedDeviceGroupRegistry).markToBeremoved(eq(dummyGroupId));
119
120         if (itemLifecycleListener != null) {
121             verify(itemLifecycleListener).onRemoved(Matchers.<KeyedInstanceIdentifier<Group, GroupKey>>any());
122         }
123     }
124 }