2 * Copyright (c) 2015 Inocybe Technologies. All rights reserved.
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
9 package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
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;
24 import java.lang.reflect.Field;
25 import java.util.ArrayList;
26 import java.util.List;
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;
63 * Unit test for {@link MdsalConsumerImpl}
65 /* TODO SB_MIGRATION */
67 @RunWith(MockitoJUnitRunner.class)
68 public class MdsalConsumerImplTest {
70 private MdsalConsumerImpl mdsalConsumer;
73 private DataBroker dataBroker;
76 private ConsumerContext session;
79 private ProviderContext providerSession;
82 private NotificationProviderService notificationService;
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);
93 when(session.getSALService(DataBroker.class)).thenReturn(dataBroker);
94 when(providerSession.getSALService(NotificationProviderService.class)).thenReturn(notificationService);
96 //Initialize the Mdsal consumer
97 mdsalConsumer.onSessionInitialized(session);
98 mdsalConsumer.onSessionInitiated(providerSession);
103 * {@link MdsalConsumerImpl#getConsumerContext()}
104 * {@link MdsalConsumerImpl#getDataBroker()}
105 * {@link MdsalConsumerImpl#getNotificationService()}
109 public void InitializationsTests(){
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());
118 * Get the specified field from MdsalConsumerImpl using reflection
119 * @param instance - the class instance
120 * @param fieldName - the field to retrieve
122 * @return the desired field
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);