2 * Copyright (c) 2015 Yale University and others. 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.alto.provider;
11 import java.util.ArrayList;
12 import java.util.List;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
16 //import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.address.tracker.rev140617.address.node.connector.Addresses;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.address.tracker.rev140617.address.node.connector.AddressesBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.endpoint.cost.service.output.endpoint.cost.service.EndpointCostMap;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.endpoint.cost.service.output.endpoint.cost.service.EndpointCostMapBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.endpoint.cost.service.output.endpoint.cost.service.endpoint.cost.map.DstCosts;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.endpoint.cost.service.output.endpoint.cost.service.endpoint.cost.map.DstCostsBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.costdefault.rev150507.DstCosts1;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.costdefault.rev150507.DstCosts1Builder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.TypedEndpointAddress;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.TypedIpv4Address;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.host.tracker.rev140624.HostNode;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.host.tracker.rev140624.HostNodeBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.host.tracker.rev140624.host.AttachmentPoints;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.host.tracker.rev140624.host.AttachmentPointsBuilder;
33 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.LinkId;
34 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
35 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
36 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
37 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.Destination;
38 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.DestinationBuilder;
39 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.Source;
40 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.SourceBuilder;
41 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
42 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyBuilder;
43 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link;
44 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkBuilder;
45 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
46 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
47 import org.junit.Assert;
48 import org.junit.Before;
49 import org.junit.Test;
51 import static org.mockito.Mockito.mock;
53 public class AltoProviderTest {
55 private AltoProvider altoProvider;
56 private Addresses addrs;
57 private DataBroker dataBroker;
58 private IpAddress ipAddress;
59 private MacAddress mac;
64 dataBroker = mock(DataBroker.class);
65 altoProvider = new AltoProvider();
69 public void onProcessTopology() throws Exception {
70 IpAddress ipAddress1 = new IpAddress(new Ipv4Address("10.0.0.1"));
71 MacAddress mac1 = new MacAddress("00:00:00:00:00:01");
72 Addresses addrs1 = new AddressesBuilder().setIp(ipAddress1).setMac(mac1).build();
73 List<Addresses> addrsList1 = new ArrayList<Addresses>();
74 addrsList1.add(addrs1);
76 AttachmentPoints ap1 = new AttachmentPointsBuilder().setTpId(new TpId("openflow:1:1")).build();
77 List<AttachmentPoints> apList1 = new ArrayList<AttachmentPoints>();
79 HostNode hostNode1 = new HostNodeBuilder().setAddresses(addrsList1).setAttachmentPoints(apList1).build();
81 IpAddress ipAddress2 = new IpAddress(new Ipv4Address("10.0.0.2"));
82 MacAddress mac2 = new MacAddress("00:00:00:00:00:02");
83 Addresses addrs2 = new AddressesBuilder().setIp(ipAddress2).setMac(mac2).build();
84 List<Addresses> addrsList2 = new ArrayList<Addresses>();
85 addrsList2.add(addrs2);
87 AttachmentPoints ap2 = new AttachmentPointsBuilder().setTpId(new TpId("openflow:2:1")).build();
88 List<AttachmentPoints> apList2 = new ArrayList<AttachmentPoints>();
90 HostNode hostNode2 = new HostNodeBuilder().setAddresses(addrsList2).setAttachmentPoints(apList2).build();
93 Node node1 = new NodeBuilder().addAugmentation(HostNode.class, hostNode1).build();
94 Node node2 = new NodeBuilder().addAugmentation(HostNode.class, hostNode2).build();
96 Node sw1 = new NodeBuilder().setNodeId(new NodeId("openflow:1")).build();
97 Node sw2 = new NodeBuilder().setNodeId(new NodeId("openflow:2")).build();
98 Node sw3 = new NodeBuilder().setNodeId(new NodeId("openflow:3")).build();
100 Destination SW1_2 = new DestinationBuilder().setDestNode(new NodeId("openflow:1"))
101 .setDestTp(new TpId("openflow:1:2")).build();
102 Source SW3_1 = new SourceBuilder().setSourceNode(new NodeId("openflow:3"))
103 .setSourceTp(new TpId("openflow:3:1")).build();
104 Link l1 = new LinkBuilder().setLinkId(new LinkId("link1"))
105 .setDestination(SW1_2)
106 .setSource(SW3_1).build();
108 Destination SW1_3 = new DestinationBuilder().setDestNode(new NodeId("openflow:1"))
109 .setDestTp(new TpId("openflow:1:3")).build();
110 Source SW2_2 = new SourceBuilder().setSourceNode(new NodeId("openflow:2"))
111 .setSourceTp(new TpId("openflow:2:2")).build();
112 Link l2 = new LinkBuilder().setLinkId(new LinkId("link2"))
113 .setDestination(SW1_3)
114 .setSource(SW2_2).build();
116 Destination SW3_2 = new DestinationBuilder().setDestNode(new NodeId("openflow:3"))
117 .setDestTp(new TpId("openflow:3:2")).build();
118 Source SW2_3 = new SourceBuilder().setSourceNode(new NodeId("openflow:2"))
119 .setSourceTp(new TpId("openflow:2:3")).build();
120 Link l3 = new LinkBuilder().setLinkId(new LinkId("link3"))
121 .setDestination(SW3_2)
122 .setSource(SW2_3).build();
124 List<Node> nodeList = new ArrayList<Node>();
131 List<Link> linkList = new ArrayList<Link>();
136 Topology topology = new TopologyBuilder().setTopologyId(new TopologyId("flow:1"))
138 .setNode(nodeList).build();
140 altoProvider.processTopology(topology);
142 TypedIpv4Address ipv4_1 = new TypedIpv4Address("ipv4:10.0.0.1");
143 TypedEndpointAddress tea1 = new TypedEndpointAddress(ipv4_1);
145 List<TypedEndpointAddress> teaList1 = new ArrayList<TypedEndpointAddress>();
148 TypedIpv4Address ipv4_2 = new TypedIpv4Address("ipv4:10.0.0.2");
149 TypedEndpointAddress tea2 = new TypedEndpointAddress(ipv4_2);
151 List<TypedEndpointAddress> teaList2 = new ArrayList<TypedEndpointAddress>();
154 DstCosts1 dc1 = new DstCosts1Builder().setCostDefault("1").build();
155 DstCosts dc = new DstCostsBuilder().setDst(tea2).addAugmentation(DstCosts1.class, dc1).build();
157 List<DstCosts> dcList = new ArrayList<DstCosts>();
160 EndpointCostMap ecp = new EndpointCostMapBuilder().setSrc(tea1).setDstCosts(dcList).build();
161 List<EndpointCostMap> ecpList = new ArrayList<EndpointCostMap>();
164 Assert.assertEquals(altoProvider.hopcountNumerical(teaList1, teaList2), ecpList);