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