Squashed commit of the following:
[ovsdb.git] / openstack / net-virt-providers / src / test / java / org / opendaylight / ovsdb / openstack / netvirt / providers / openflow13 / MdsalConsumerImplTest.java
1 /*
2  * Copyright (c) 2015 Inocybe Technologies.  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.openstack.netvirt.providers.openflow13;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertSame;
14 import static org.junit.Assert.assertTrue;
15 import static org.mockito.Matchers.any;
16 import static org.mockito.Matchers.anyString;
17 import static org.mockito.Matchers.eq;
18 import static org.mockito.Matchers.same;
19 import static org.mockito.Mockito.mock;
20 import static org.mockito.Mockito.times;
21 import static org.mockito.Mockito.verify;
22 import static org.mockito.Mockito.when;
23
24 import java.lang.reflect.Field;
25 import java.util.ArrayList;
26 import java.util.List;
27
28 import org.junit.Before;
29 import org.junit.Ignore;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.InjectMocks;
33 import org.mockito.Mock;
34 import org.mockito.Mockito;
35 import org.mockito.runners.MockitoJUnitRunner;
36 import org.powermock.api.mockito.PowerMockito;
37 import org.powermock.core.classloader.annotations.PrepareForTest;
38 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
39 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
40 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
41 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
42 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
43 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
44 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
45 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
52 import org.opendaylight.yangtools.concepts.ListenerRegistration;
53 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
54 import org.opendaylight.neutron.spi.INeutronPortCRUD;
55 import org.opendaylight.neutron.spi.INeutronSubnetCRUD;
56 import org.opendaylight.ovsdb.openstack.netvirt.NeutronCacheUtils;
57 import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
58 import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
59 import org.opendaylight.ovsdb.openstack.netvirt.impl.EventDispatcherImpl;
60 import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
61
62 /**
63  * Unit test for {@link MdsalConsumerImpl}
64  */
65 /* TODO SB_MIGRATION */
66 @Ignore
67 @RunWith(MockitoJUnitRunner.class)
68 public class MdsalConsumerImplTest {
69
70     private MdsalConsumerImpl mdsalConsumer;
71
72     @Mock
73     private DataBroker dataBroker;
74
75     @Mock
76     private ConsumerContext session;
77
78     @Mock
79     private ProviderContext providerSession;
80
81     @Mock
82     private NotificationProviderService notificationService;
83
84     @Before
85     public void setUp(){
86
87         mdsalConsumer = new MdsalConsumerImpl();
88         dataBroker = Mockito.mock(DataBroker.class);
89         session = Mockito.mock(ConsumerContext.class);
90         providerSession = Mockito.mock(ProviderContext.class);
91         notificationService = Mockito.mock(NotificationProviderService.class);
92
93         when(session.getSALService(DataBroker.class)).thenReturn(dataBroker);
94         when(providerSession.getSALService(NotificationProviderService.class)).thenReturn(notificationService);
95
96         //Initialize the Mdsal consumer
97         mdsalConsumer.onSessionInitialized(session);
98         mdsalConsumer.onSessionInitiated(providerSession);
99     }
100
101     /**
102      * Test method for
103      *          {@link MdsalConsumerImpl#getConsumerContext()}
104      *          {@link MdsalConsumerImpl#getDataBroker()}
105      *          {@link MdsalConsumerImpl#getNotificationService()}
106      *
107      */
108     @Test
109     public void InitializationsTests(){
110
111         assertSame("Error, getConsumerContext - returned context is invalid", session, mdsalConsumer.getConsumerContext());
112         assertSame("Error, getDataBroker - returned broker is invalid", dataBroker, mdsalConsumer.getDataBroker());
113         assertSame("Error, getNotificationService - returned notification service provider is invalid", notificationService, mdsalConsumer.getNotificationService());
114
115     }
116
117     /**
118      * Get the specified field from MdsalConsumerImpl using reflection
119      * @param instance - the class instance
120      * @param fieldName - the field to retrieve
121      *
122      * @return the desired field
123      */
124     private Object getClassField(MdsalConsumerImpl instance, String fieldName) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
125         Field field = MdsalConsumerImpl.class.getDeclaredField(fieldName);
126         field.setAccessible(true);
127         return field.get(instance);
128     }
129 }