ad548436845086513088e4eb47caa534d5371120
[groupbasedpolicy.git] / renderers / ofoverlay / src / test / java / org / opendaylight / groupbasedpolicy / renderer / ofoverlay / flow / GroupTableTest.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
9 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow;
10
11 import java.util.Collections;
12 import java.util.HashMap;
13
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.GroupTable.BucketCtx;
17 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.GroupTable.GroupCtx;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfigBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 import com.google.common.base.Objects;
28
29 import static org.junit.Assert.*;
30
31 public class GroupTableTest extends OfTableTest {
32     protected static final Logger LOG = 
33             LoggerFactory.getLogger(GroupTableTest.class);
34
35     GroupTable table;
36
37     NodeConnectorId tunnelId = 
38             new NodeConnectorId(nodeId.getValue() + ":42");
39     NodeConnectorId remoteTunnelId = 
40             new NodeConnectorId(remoteNodeId.getValue() + ":101");
41
42     @Before
43     public void setup() throws Exception {
44         initCtx();
45         table = new GroupTable(ctx);
46     }
47     
48     @Test
49     public void testGroup() throws Exception {
50         Endpoint localEp = localEP().build();
51         endpointManager.addEndpoint(localEp);
52         Endpoint remoteEp = remoteEP(remoteNodeId).build();
53         endpointManager.addEndpoint(remoteEp);
54         
55         switchManager.addSwitch(nodeId, tunnelId, 
56                                 Collections.<NodeConnectorId>emptySet(),
57                                 new OfOverlayNodeConfigBuilder()
58                                     .setTunnelIp(new IpAddress(new Ipv4Address("1.2.3.4")))
59                                     .build());
60         switchManager.addSwitch(remoteNodeId, remoteTunnelId, 
61                                 Collections.<NodeConnectorId>emptySet(),
62                                 new OfOverlayNodeConfigBuilder()
63                                     .setTunnelIp(new IpAddress(new Ipv4Address("1.2.3.5")))
64                                     .build());
65
66         policyResolver.addTenant(baseTenant().build());
67
68         HashMap<GroupId, GroupCtx> groupMap = new HashMap<>();
69         table.sync(nodeId, ctx.getPolicyResolver().getCurrentPolicy(),
70                    null, groupMap);
71         
72         assertEquals(1, groupMap.size());
73         int fdId = ctx.getPolicyManager().getContextOrdinal(tid, fd);
74         GroupCtx ctx = groupMap.get(new GroupId(Long.valueOf(fdId)));
75         assertNotNull(ctx);
76         long tunBucketId = 
77                 (long)policyManager.getContextOrdinal(remoteNodeId.getValue());
78         tunBucketId |= 1L << 31;
79  
80         int count = 0;
81         for (BucketCtx bctx : ctx.bucketMap.values()) {
82             if (Objects.equal(Long.valueOf(4),
83                               bctx.newb.getBucketId().getValue())) {
84                 count += 1;
85             } else if (Objects.equal(Long.valueOf(tunBucketId),
86                                      bctx.newb.getBucketId().getValue())) {
87                 
88                 count += 1;
89             }
90         }
91         assertEquals(2, count);
92     }
93 }