Adding multiple EPG capability to EPs and IntraEPG policy
[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.inventory.rev130819.NodeConnectorId;\r
27 import org.slf4j.Logger;\r
28 import org.slf4j.LoggerFactory;\r
29 \r
30 import com.google.common.base.Objects;\r
31 \r
32 public class GroupTableTest extends OfTableTest {\r
33     protected static final Logger LOG =\r
34             LoggerFactory.getLogger(GroupTableTest.class);\r
35 \r
36     GroupTable table;\r
37 \r
38     NodeConnectorId tunnelId =\r
39             new NodeConnectorId(nodeId.getValue() + ":42");\r
40     NodeConnectorId remoteTunnelId =\r
41             new NodeConnectorId(remoteNodeId.getValue() + ":101");\r
42 \r
43     @Before\r
44     public void setup() throws Exception {\r
45         initCtx();\r
46         table = new GroupTable(ctx);\r
47     }\r
48 \r
49     @Test\r
50     public void testGroup() throws Exception {\r
51         Endpoint localEp = localEP().build();\r
52         endpointManager.addEndpoint(localEp);\r
53         Endpoint remoteEp = remoteEP(remoteNodeId).build();\r
54         endpointManager.addEndpoint(remoteEp);\r
55 \r
56         switchManager.addSwitch(nodeId, tunnelId,\r
57                                 Collections.<NodeConnectorId>emptySet(),\r
58                                 new OfOverlayNodeConfigBuilder()\r
59                                     .setTunnelIp(new IpAddress(new Ipv4Address("1.2.3.4")))\r
60                                     .build());\r
61         switchManager.addSwitch(remoteNodeId, remoteTunnelId,\r
62                                 Collections.<NodeConnectorId>emptySet(),\r
63                                 new OfOverlayNodeConfigBuilder()\r
64                                     .setTunnelIp(new IpAddress(new Ipv4Address("1.2.3.5")))\r
65                                     .build());\r
66 \r
67         policyResolver.addTenant(baseTenant().build());\r
68 \r
69         HashMap<GroupId, GroupCtx> groupMap = new HashMap<>();\r
70         table.sync(nodeId, ctx.getPolicyResolver().getCurrentPolicy(), groupMap);\r
71 \r
72         assertEquals(1, groupMap.size());\r
73         int fdId = OrdinalFactory.getContextOrdinal(tid, fd);\r
74         GroupCtx ctx = groupMap.get(new GroupId(Long.valueOf(fdId)));\r
75         assertNotNull(ctx);\r
76         long tunBucketId =\r
77                 OrdinalFactory.getContextOrdinal(remoteNodeId);\r
78         tunBucketId |= 1L << 31;\r
79 \r
80         int count = 0;\r
81         for (BucketCtx bctx : ctx.bucketMap.values()) {\r
82             if (Objects.equal(Long.valueOf(4),\r
83                               bctx.newb.getBucketId().getValue())) {\r
84                 count += 1;\r
85             } else if (Objects.equal(Long.valueOf(tunBucketId),\r
86                                      bctx.newb.getBucketId().getValue())) {\r
87 \r
88                 count += 1;\r
89             }\r
90         }\r
91         assertEquals(2, count);\r
92     }\r
93 }\r