Fix InventoryReaderTest
[l2switch.git] / l2switch-main / src / test / java / org / opendaylight / l2switch / flow / InventoryReaderTest.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, 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.l2switch.flow;
9
10 import static org.mockito.Mockito.any;
11 import static org.mockito.Mockito.when;
12
13 import java.util.ArrayList;
14 import java.util.Date;
15 import java.util.List;
16 import java.util.Optional;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.mockito.Mock;
20 import org.mockito.MockitoAnnotations;
21 import org.opendaylight.l2switch.inventory.InventoryReader;
22 import org.opendaylight.mdsal.binding.api.DataBroker;
23 import org.opendaylight.mdsal.binding.api.ReadTransaction;
24 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.address.tracker.rev140617.AddressCapableNodeConnector;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.address.tracker.rev140617.AddressCapableNodeConnectorBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.address.tracker.rev140617.address.node.connector.Addresses;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.address.tracker.rev140617.address.node.connector.AddressesBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2switch.loopremover.rev140714.StpStatus;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2switch.loopremover.rev140714.StpStatusAwareNodeConnector;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2switch.loopremover.rev140714.StpStatusAwareNodeConnectorBuilder;
43 import org.opendaylight.yangtools.util.concurrent.FluentFutures;
44 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
45 import org.opendaylight.yangtools.yang.common.Uint64;
46
47 public class InventoryReaderTest {
48
49     @Mock
50     private DataBroker dataService;
51     @Mock
52     private ReadTransaction readOnlyTransaction;
53     private Optional<Node> dataObjectOptional = Optional.empty();
54     @Mock
55     private Node node;
56
57     private InventoryReader inventoryReader;
58     private InstanceIdentifier<Node> nodeInstanceIdentifier;
59
60     @Before
61     public void init() {
62         MockitoAnnotations.initMocks(this);
63         inventoryReader = new InventoryReader(dataService);
64     }
65
66     @Test
67     public void getNodeConnectorTest() throws Exception {
68
69         nodeInstanceIdentifier = InstanceIdentifier.builder(Nodes.class)
70                 .child(Node.class, new NodeKey(new NodeId("node-id"))).build();
71         when(dataService.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
72         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)))
73                 .thenReturn(FluentFutures.immediateFluentFuture(dataObjectOptional));
74         if (dataObjectOptional.isPresent()) {
75             node = dataObjectOptional.get();
76         }
77
78         long now = new Date().getTime();
79         IpAddress ipAddress1 = new IpAddress(Ipv4Address.getDefaultInstance("10.0.0.1"));
80         MacAddress macAddress1 = new MacAddress("00:00:00:00:00:01");
81         final Addresses address1 = new AddressesBuilder()
82             .setId(Uint64.ZERO)
83             .setIp(ipAddress1)
84             .setMac(macAddress1)
85             .setFirstSeen(now)
86             .setLastSeen(now)
87             .build();
88         IpAddress ipAddress2 = new IpAddress(Ipv4Address.getDefaultInstance("10.0.0.2"));
89         MacAddress macAddress2 = new MacAddress("00:00:00:00:00:02");
90         final Addresses address2 = new AddressesBuilder()
91             .setId(Uint64.ONE)
92             .setIp(ipAddress2)
93             .setMac(macAddress2)
94             .setFirstSeen(now)
95             .setLastSeen(now)
96             .build();
97         List<Addresses> addressList = new ArrayList<>();
98         addressList.add(address1);
99         addressList.add(address2);
100         AddressCapableNodeConnector addressCapableNodeConnector = new AddressCapableNodeConnectorBuilder()
101                 .setAddresses(addressList).build();
102
103         StpStatusAwareNodeConnector stpStatusAwareNodeConnector = new StpStatusAwareNodeConnectorBuilder()
104                 .setStatus(StpStatus.Discarding).build();
105
106         NodeConnector nc1 = new NodeConnectorBuilder().withKey(new NodeConnectorKey(new NodeConnectorId("1"))).build();
107         NodeConnector nc2 = new NodeConnectorBuilder().withKey(new NodeConnectorKey(new NodeConnectorId("2")))
108                 .addAugmentation(addressCapableNodeConnector).build();
109         NodeConnector nc3 = new NodeConnectorBuilder().withKey(new NodeConnectorKey(new NodeConnectorId("3")))
110                 .addAugmentation(stpStatusAwareNodeConnector)
111                 .addAugmentation(addressCapableNodeConnector).build();
112         NodeConnector ncLocal = new NodeConnectorBuilder().withKey(new NodeConnectorKey(new NodeConnectorId("LOCAL")))
113                 .addAugmentation(stpStatusAwareNodeConnector)
114                 .addAugmentation(addressCapableNodeConnector).build();
115
116         List<NodeConnector> nodeConnectors = new ArrayList<>();
117         nodeConnectors.add(nc1);
118         nodeConnectors.add(nc2);
119         nodeConnectors.add(nc3);
120         nodeConnectors.add(ncLocal);
121
122         //when(node.getNodeConnector().values()).thenReturn(nodeConnectors);
123
124         inventoryReader.getNodeConnector(nodeInstanceIdentifier, macAddress1);
125     }
126 }