blob: 8f272c5f460e8617a7bb64a52336cfa4ba887a9a [file] [log] [blame]
Jonathan Hart627f10c2013-01-16 14:20:03 -08001package net.floodlightcontroller.core.internal;
2
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -08003import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertFalse;
5import static org.junit.Assert.assertTrue;
6import static org.junit.Assert.fail;
Jonathan Hart627f10c2013-01-16 14:20:03 -08007
8import java.util.Iterator;
9
Jonathan Hart627f10c2013-01-16 14:20:03 -080010import net.floodlightcontroller.core.ISwitchStorage;
11import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
12
13import org.junit.After;
14import org.junit.Before;
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -080015import org.junit.Ignore;
Jonathan Hart627f10c2013-01-16 14:20:03 -080016import org.junit.Test;
17import org.openflow.protocol.OFPhysicalPort;
18
19import com.thinkaurelius.titan.core.TitanGraph;
Jonathan Hart627f10c2013-01-16 14:20:03 -080020import com.tinkerpop.blueprints.Vertex;
21import com.tinkerpop.gremlin.java.GremlinPipeline;
22
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -080023public class SwitchStorageImplTest {
Jonathan Hart627f10c2013-01-16 14:20:03 -080024
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -080025 private ISwitchStorage switchStorage;
26 private TitanGraph titanGraph;
Jonathan Hart627f10c2013-01-16 14:20:03 -080027
28 @Before
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -080029 public void setUp() throws Exception {
Jonathan Hart627f10c2013-01-16 14:20:03 -080030 titanGraph = TestDatabaseManager.getTestDatabase();
31 TestDatabaseManager.populateTestData(titanGraph);
32
33 switchStorage = new TestableSwitchStorageImpl(titanGraph);
34 }
35
36 @After
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -080037 public void tearDown() throws Exception {
38 titanGraph.shutdown();
Jonathan Hart627f10c2013-01-16 14:20:03 -080039 }
40
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -080041 @Ignore @Test
Jonathan Hart627f10c2013-01-16 14:20:03 -080042 public void testUpdate() {
43 fail("Not yet implemented");
44 }
45
46 @Test
47 public void testAddPort() {
48
49 String dpid = "00:00:00:00:00:00:0a:01";
50 short portNumber = 5;
51
52 OFPhysicalPort portToAdd = new OFPhysicalPort();
53 portToAdd.setName("port 5 at SEA switch");
54 portToAdd.setCurrentFeatures(OFPhysicalPort.OFPortFeatures.OFPPF_100MB_FD.getValue());
55 portToAdd.setPortNumber(portNumber);
56
57 switchStorage.addPort(dpid, portToAdd);
58
59 Vertex sw = titanGraph.getVertices("dpid", dpid).iterator().next();
60
61 GremlinPipeline<Vertex, Vertex> pipe = new GremlinPipeline<Vertex, Vertex>();
62 pipe.start(sw).out("on").has("number", portNumber);
63
64 assertTrue(pipe.hasNext());
65 Vertex addedPort = pipe.next();
66 assertFalse(pipe.hasNext());
67
68 assertEquals(addedPort.getProperty("number"), portNumber);
69 }
70
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -080071 @Ignore @Test
Jonathan Hart627f10c2013-01-16 14:20:03 -080072 public void testGetPorts() {
73 fail("Not yet implemented");
74 }
75
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -080076 @Ignore @Test
Jonathan Hart627f10c2013-01-16 14:20:03 -080077 public void testGetPortStringShort() {
78 fail("Not yet implemented");
79 }
80
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -080081 @Ignore @Test
Jonathan Hart627f10c2013-01-16 14:20:03 -080082 public void testGetPortStringString() {
83 fail("Not yet implemented");
84 }
85
86 @Test
87 public void testAddSwitch() {
88 String dpid = "00:00:00:00:00:00:0a:07";
89
90 switchStorage.addSwitch(dpid);
91
92 Iterator<Vertex> it = titanGraph.getVertices("dpid", dpid).iterator();
93 assertTrue(it.hasNext());
94 Vertex addedSwitch = it.next();
95 assertFalse(it.hasNext());
96
97 assertEquals(addedSwitch.getProperty("type"), "switch");
98 assertEquals(addedSwitch.getProperty("dpid"), dpid);
99 assertEquals(addedSwitch.getProperty("state"), SwitchState.ACTIVE.toString());
100 }
101
102
Jonathan Hart627f10c2013-01-16 14:20:03 -0800103 @Test
104 public void testDeleteSwitch() {
105 String dpid = "00:00:00:00:00:00:0a:01";
106
107 switchStorage.deleteSwitch(dpid);
108
109 Iterator<Vertex> it = titanGraph.getVertices("dpid", dpid).iterator();
110 assertFalse(it.hasNext());
111 }
112
Jonathan Hart627f10c2013-01-16 14:20:03 -0800113 @Test
114 public void testDeletePortByPortNum() {
115 //FIXME fails because query for the port is wrong in SwitchStorageImpl
116
117 String dpid = "00:00:00:00:00:00:0a:01";
118 short portNum = 3;
119
120 switchStorage.deletePort(dpid, portNum);
121
122 Vertex sw = titanGraph.getVertices("dpid", dpid).iterator().next();
123
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -0800124 /*
Jonathan Hart627f10c2013-01-16 14:20:03 -0800125 Iterator<Vertex> it = sw.getVertices(Direction.OUT, "on").iterator();
126
127 while (it.hasNext()){
128 System.out.println(it.next());
129 }
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -0800130 */
Jonathan Hart627f10c2013-01-16 14:20:03 -0800131
132 GremlinPipeline<Vertex, Vertex> pipe = new GremlinPipeline<Vertex, Vertex>();
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -0800133 pipe.start(sw).out("on").has("number", portNum);
Jonathan Hart627f10c2013-01-16 14:20:03 -0800134 assertFalse(pipe.hasNext());
135 }
136
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -0800137 @Ignore @Test
Jonathan Hart627f10c2013-01-16 14:20:03 -0800138 public void testDeletePortStringString() {
139 fail("Not yet implemented");
140 }
141
Jonathan Hartd1c5a1c2013-01-23 00:56:14 -0800142 @Ignore @Test
Jonathan Hart627f10c2013-01-16 14:20:03 -0800143 public void testGetActiveSwitches() {
144 fail("Not yet implemented");
145 }
Jonathan Hart627f10c2013-01-16 14:20:03 -0800146}