UT for ovsdb.southbound transact package
[ovsdb.git] / southbound / southbound-impl / src / test / java / org / opendaylight / ovsdb / southbound / ovsdb / transact / ControllerRemovedCommandTest.java
1 /*
2  * Copyright (c) 2015 Inocybe Technologies. 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
9 package org.opendaylight.ovsdb.southbound.ovsdb.transact;
10
11 import static org.mockito.Mockito.mock;
12 import static org.mockito.Mockito.times;
13 import static org.mockito.Mockito.verify;
14 import static org.mockito.Mockito.when;
15
16 import java.util.Map;
17 import java.util.Set;
18
19 import org.junit.Before;
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22 import org.mockito.Mock;
23 import org.mockito.Mockito;
24 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
25 import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
28 import org.opendaylight.yangtools.yang.binding.DataObject;
29 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
30 import org.powermock.api.mockito.PowerMockito;
31 import org.powermock.api.support.membermodification.MemberMatcher;
32 import org.powermock.api.support.membermodification.MemberModifier;
33 import org.powermock.core.classloader.annotations.PrepareForTest;
34 import org.powermock.modules.junit4.PowerMockRunner;
35
36 @PrepareForTest(ControllerRemovedCommand.class)
37 @RunWith(PowerMockRunner.class)
38 public class ControllerRemovedCommandTest {
39
40     @Mock private ControllerRemovedCommand contRemoveCmd;
41     @Mock private AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes;
42     @Mock private AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> returnChanges;
43     @Mock private Set<InstanceIdentifier<ControllerEntry>> removed;
44     @Mock private Map<InstanceIdentifier<ControllerEntry>, ControllerEntry> operationalControllerEntries;
45     @Mock private Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> created;
46     @Mock private Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> updated;
47     @Before
48     public void setUp() throws Exception {
49         contRemoveCmd = mock(ControllerRemovedCommand.class, Mockito.CALLS_REAL_METHODS);
50     }
51
52     @Test
53     public void testExecute() throws Exception {
54         TransactionBuilder transaction = mock( TransactionBuilder.class, Mockito.RETURNS_MOCKS);
55
56         PowerMockito.mockStatic(TransactUtils.class);
57         when(TransactUtils.extractRemoved(changes, ControllerEntry.class)).thenReturn(removed);
58         when(TransactUtils.extractOriginal(changes, ControllerEntry.class)).thenReturn(operationalControllerEntries);
59         when(TransactUtils.extractCreated(changes, OvsdbBridgeAugmentation.class)).thenReturn(created);
60         when(TransactUtils.extractUpdated(changes, OvsdbBridgeAugmentation.class)).thenReturn(updated);
61
62         MemberModifier.suppress(MemberMatcher.method(ControllerRemovedCommand.class, "getChanges"));
63         when(contRemoveCmd.getChanges()).thenReturn(returnChanges);
64
65         contRemoveCmd.execute(transaction);
66         verify(contRemoveCmd, times(3)).getChanges();
67     }
68
69 }