Add AffinityConfig and AffinityLink objects, integrate into AffinityManager.
[affinity.git] / affinity / implementation / src / test / java / org / opendaylight / controller / affinity / internal / AffinityManagerImplTest.java
1 /*
2  * Copyright (c) 2013 Plexxi, 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.controller.affinity.internal;
10
11 import java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.Set;
14
15 import org.junit.Assert;
16 import org.junit.Test;
17 import org.opendaylight.controller.sal.core.Bandwidth;
18 import org.opendaylight.controller.sal.core.Latency;
19 import org.opendaylight.controller.sal.core.Property;
20 import org.opendaylight.controller.sal.core.State;
21 import org.opendaylight.controller.sal.core.UpdateType;
22 import org.opendaylight.controller.sal.utils.Status;
23 import org.opendaylight.controller.affinity.AffinityGroup;
24 import org.opendaylight.controller.affinity.AffinityLink;
25
26 public class AffinityManagerImplTest {
27
28     @Test
29     public void testAffinityManagerAddRemoveConfig() {
30         AffinityManagerImpl affinitymgr = new AffinityManagerImpl();
31         affinitymgr.startUp();
32
33         AffinityGroup ag1 = new AffinityGroup("group1");
34
35         // Add a valid IP and confirm. 
36         Status ret1 = ag1.add("10.0.0.10");
37         Assert.assertTrue(ret1.isSuccess());
38
39         Status ret2 = ag1.add("10.0.0.20");
40         Assert.assertTrue(ret2.isSuccess());
41
42         // Add an invalid element. 
43         Status ret3 = ag1.add("10");
44         System.out.println(ret3);
45         Assert.assertTrue(!ret3.isSuccess());
46
47         // Second affinity group.
48         AffinityGroup ag2 = new AffinityGroup("group2");
49         ag2.add("20.0.0.10");
50         ag2.add("20.0.0.20");
51
52         // Add an affinity link from ag1 to ag2. 
53         AffinityLink al1 = new AffinityLink();
54         al1.setFromGroup(ag1);
55         al1.setToGroup(ag2);
56         al1.setName("link1");
57         al1.setAttribute("isolate");
58
59         // Add a self loop for ag2.
60         AffinityLink al2 = new AffinityLink("link2", ag2, ag2);
61         al2.setFromGroup(ag2);
62         al2.setToGroup(ag2);
63         al2.setName("link2");
64         al2.setAttribute("hopcount");
65
66         System.out.println("Affinity group size is " + ag1.size());
67         Assert.assertTrue(ag1.size() == 2);
68         ag1.print();
69
70         Status result;
71         result = affinitymgr.addAffinityGroup(ag1);
72         Assert.assertTrue(result.isSuccess());
73
74         result = affinitymgr.addAffinityGroup(ag2);
75         Assert.assertTrue(result.isSuccess());
76         
77         result = affinitymgr.addAffinityLink(al1);
78         Assert.assertTrue(result.isSuccess());
79
80         result = affinitymgr.addAffinityLink(al2);
81         Assert.assertTrue(result.isSuccess());
82         
83         /* Constraint checking? */
84         result = (affinitymgr.removeAffinityGroup(ag1.getName()));
85         Assert.assertTrue(result.isSuccess());
86
87         affinitymgr.saveConfiguration();
88     }
89 }