Merge "Fixed missing tunnel type"
[groupbasedpolicy.git] / renderers / ofoverlay / src / test / java / org / opendaylight / groupbasedpolicy / renderer / ofoverlay / flow / GroupTableTest.java
1 /*\r
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 \r
9 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow;\r
10 \r
11 import static org.junit.Assert.assertEquals;\r
12 import static org.junit.Assert.assertNotNull;\r
13 \r
14 import java.util.Collections;\r
15 import java.util.HashMap;\r
16 \r
17 import org.junit.Before;\r
18 import org.junit.Test;\r
19 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.GroupTable.BucketCtx;\r
20 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.GroupTable.GroupCtx;\r
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;\r
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfigBuilder;\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.TunnelBuilder;\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;\r
30 import org.slf4j.Logger;\r
31 import org.slf4j.LoggerFactory;\r
32 \r
33 import com.google.common.base.Objects;\r
34 import com.google.common.collect.ImmutableList;\r
35 \r
36 public class GroupTableTest extends OfTableTest {\r
37     protected static final Logger LOG =\r
38             LoggerFactory.getLogger(GroupTableTest.class);\r
39 \r
40     GroupTable table;\r
41 \r
42     NodeConnectorId tunnelId =\r
43             new NodeConnectorId(nodeId.getValue() + ":42");\r
44     NodeConnectorId remoteTunnelId =\r
45             new NodeConnectorId(remoteNodeId.getValue() + ":101");\r
46 \r
47     @Before\r
48     public void setup() throws Exception {\r
49         initCtx();\r
50         table = new GroupTable(ctx);\r
51     }\r
52 \r
53     @Test\r
54     public void testGroup() throws Exception {\r
55         Endpoint localEp = localEP().build();\r
56         endpointManager.addEndpoint(localEp);\r
57         Endpoint remoteEp = remoteEP(remoteNodeId).build();\r
58         endpointManager.addEndpoint(remoteEp);\r
59         switchManager.addSwitch(\r
60                 nodeId,\r
61                 tunnelId,\r
62                 Collections.<NodeConnectorId>emptySet(),\r
63                 new OfOverlayNodeConfigBuilder().setTunnel(\r
64                         ImmutableList.of(new TunnelBuilder().setIp(new IpAddress(new Ipv4Address("1.2.3.4")))\r
65                             .setTunnelType(TunnelTypeVxlan.class)\r
66                             .setNodeConnectorId(tunnelId)\r
67                             .build())).build());\r
68         switchManager.addSwitch(\r
69                 remoteNodeId,\r
70                 remoteTunnelId,\r
71                 Collections.<NodeConnectorId>emptySet(),\r
72                 new OfOverlayNodeConfigBuilder().setTunnel(\r
73                         ImmutableList.of(new TunnelBuilder().setIp(new IpAddress(new Ipv4Address("1.2.3.5")))\r
74                             .setTunnelType(TunnelTypeVxlan.class)\r
75                             .setNodeConnectorId(tunnelId)\r
76                             .build())).build());\r
77 \r
78         policyResolver.addTenant(baseTenant().setContract(\r
79                 ImmutableList.<Contract>of(baseContract(null).build())).build());\r
80 \r
81         HashMap<GroupId, GroupCtx> groupMap = new HashMap<>();\r
82         table.sync(nodeId, ctx.getPolicyResolver().getCurrentPolicy(), groupMap);\r
83 \r
84         assertEquals(1, groupMap.size());\r
85         int fdId = OrdinalFactory.getContextOrdinal(tid, fd);\r
86         GroupCtx ctx = groupMap.get(new GroupId(Long.valueOf(fdId)));\r
87         assertNotNull(ctx);\r
88         long tunBucketId =\r
89                 OrdinalFactory.getContextOrdinal(remoteNodeId);\r
90         tunBucketId |= 1L << 31;\r
91 \r
92         int count = 0;\r
93         for (BucketCtx bctx : ctx.bucketMap.values()) {\r
94             if (Objects.equal(Long.valueOf(4),\r
95                               bctx.newb.getBucketId().getValue())) {\r
96                 count += 1;\r
97             } else if (Objects.equal(Long.valueOf(tunBucketId),\r
98                                      bctx.newb.getBucketId().getValue())) {\r
99 \r
100                 count += 1;\r
101             }\r
102         }\r
103         assertEquals(2, count);\r
104     }\r
105 }\r