@Inject @Filter(timeout=5000)
OpenflowPluginProvider openflowPluginProvider;
-
+
@Inject
BundleContext ctx;
/**
* test setup
- * @throws InterruptedException
+ * @throws InterruptedException
*/
@Before
public void setUp() throws InterruptedException {
LOG.debug("openflowPluginProvider: "+openflowPluginProvider);
- //FIXME: plugin should provide service exposing startup result via future
+ //FIXME: plugin should provide service exposing startup result via future
Thread.sleep(5000);
}
}
//TODO: dump errors of plugin (by exploiting ErrorHandler)
-
+
try {
LOG.debug("checking if simulator succeeded to connect to controller");
boolean simulatorWasOnline = switchSim.getIsOnlineFuture().get(100, TimeUnit.MILLISECONDS);
String message = "simulator probably failed to connect to controller";
LOG.error(message, e);
Assert.fail(message);
- }
+ }
}
/**
switchSim.start();
}
+ /**
+ * test with MLX running OF10 and OFP running OF13/OF10
+ *
+ * MLX issues an OFPT_ERROR on the version compatability MLX issues a second
+ * HELLO after the second OFP HELLO
+ *
+ * @throws Exception
+ */
+ @Test
+ public void handshakeOkNoVBM_OF10_TwoHello() throws Exception {
+ LOG.debug("handshakeOkMLX10 integration test");
+ LOG.debug("openflowPluginProvider: " + openflowPluginProvider);
+
+ switchSim = createSimpleClient();
+ switchSim.setSecuredClient(false);
+ Stack<ClientEvent> handshakeScenario = ScenarioFactory
+ .createHandshakeScenarioNoVBM_OF10_TwoHello();
+ // handshakeScenario.setElementAt(new SleepEvent(5000),
+ // handshakeScenario
+ // .size());
+
+ ScenarioHandler scenario = new ScenarioHandler(handshakeScenario);
+ switchSim.setScenarioHandler(scenario);
+ switchSim.start();
+ }
+
+ /**
+ * test with Mininet running OF10 and OFP running OF13/OF10
+ *
+ * Mininet issues an OFPT_ERROR on the version compatability Mininet doesn't
+ * issue a second HELLO
+ *
+ * @throws Exception
+ */
+ @Test
+ public void handshakeOkNoVBM_OF10_SingleHello() throws Exception {
+ LOG.debug("handshakeOkMLX10 integration test");
+ LOG.debug("openflowPluginProvider: " + openflowPluginProvider);
+
+ switchSim = createSimpleClient();
+ switchSim.setSecuredClient(false);
+ Stack<ClientEvent> handshakeScenario = ScenarioFactory
+ .createHandshakeScenarioNOVBM_OF10_OneHello();
+
+ ScenarioHandler scenario = new ScenarioHandler(handshakeScenario);
+ switchSim.setScenarioHandler(scenario);
+ switchSim.start();
+ }
+
/**
* @return
*/
OFPaxOptionsAssistant.osgiConsoleBundles(),
OFPaxOptionsAssistant.loggingBudles(),
-
+
TestHelper.junitAndMockitoBundles(),
- TestHelper.mdSalCoreBundles(),
+ TestHelper.mdSalCoreBundles(),
TestHelper.configMinumumBundles(),
TestHelper.baseModelBundles(),
- TestHelper.flowCapableModelBundles(),
-
+ TestHelper.flowCapableModelBundles(),
+
OFPaxOptionsAssistant.ofPluginBundles());
}
import org.opendaylight.openflowjava.util.ByteBufUtils;
/**
- * provisioning of most common scenarios used by testing of integration between OFLibrary, OFPlugin and MD-SAL
+ * provisioning of most common scenarios used by testing of integration between OFLibrary, OFPlugin and MD-SAL
*/
public abstract class ScenarioFactory {
-
+
/** version bitmap hex-string containing version 1.3 */
public static final String VERSION_BITMAP_13 = "00 01 00 08 00 00 00 10";
/** version bitmap hex-string containing versions: 1.0 + 1.3 */
public static Stack<ClientEvent> createHandshakeScenarioVBM(
String switchVersionBitmap, short auxId, String pluginVersionBitmap) {
Stack<ClientEvent> stack = new Stack<>();
-
- stack.add(0, new SendEvent(ByteBufUtils.hexStringToBytes("04 00 00 10 00 00 00 01 "
- + switchVersionBitmap)));
- stack.add(0, new WaitForMessageEvent(ByteBufUtils.hexStringToBytes("04 00 00 10 00 00 00 15 "
- + pluginVersionBitmap)));
- stack.add(0, new WaitForMessageEvent(ByteBufUtils.hexStringToBytes("04 05 00 08 00 00 00 02")));
- stack.add(0, new SendEvent(ByteBufUtils.hexStringToBytes(
- "04 06 00 20 00 00 00 02 "
- + "00 01 02 03 04 05 06 07 "
- + "00 01 02 03 01 "
- + Integer.toHexString(auxId)
- + " 00 00 00 01 02 03 00 01 02 03")));
+
+ stack.add(0, new SendEvent(ByteBufUtils
+ .hexStringToBytes("04 00 00 10 00 00 00 01 "
+ + switchVersionBitmap)));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("04 00 00 10 00 00 00 15 "
+ + pluginVersionBitmap)));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("04 05 00 08 00 00 00 02")));
+ stack.add(0, new SendEvent(ByteBufUtils
+ .hexStringToBytes("04 06 00 20 00 00 00 02 "
+ + "00 01 02 03 04 05 06 07 " + "00 01 02 03 01 "
+ + Integer.toHexString(auxId)
+ + " 00 00 00 01 02 03 00 01 02 03")));
addSleep(stack);
return stack;
}
/**
* @param auxId
- * @param pluginVersionBitmap
+ * @param pluginVersionBitmap
+ * @return handshake scenario without switch version bitmap
+ */
+ public static Stack<ClientEvent> createHandshakeScenario(short auxId,
+ String pluginVersionBitmap) {
+ Stack<ClientEvent> stack = new Stack<>();
+
+ stack.add(0, new SendEvent(ByteBufUtils
+ .hexStringToBytes("04 00 00 08 00 00 00 01")));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("04 00 00 10 00 00 00 15 "
+ + pluginVersionBitmap)));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("04 05 00 08 00 00 00 02")));
+ stack.add(0, new SendEvent(ByteBufUtils
+ .hexStringToBytes("04 06 00 20 00 00 00 02 "
+ + "00 01 02 03 04 05 06 07 " + "00 01 02 03 01 "
+ + Integer.toHexString(auxId)
+ + " 00 00 00 01 02 03 00 01 02 03")));
+ addSleep(stack);
+ return stack;
+ }
+
+ /**
+ * Attempt to simulate the MLX running 1.0 talking to ODL
+ *
+ * @param auxId
+ * @param pluginVersionBitmap
+ * @return handshake scenario without switch version bitmap
+ */
+ public static Stack<ClientEvent> createHandshakeScenarioNoVBM_OF10_TwoHello() {
+ Stack<ClientEvent> stack = new Stack<>();
+
+ stack.add(0, new SendEvent(ByteBufUtils
+ .hexStringToBytes("01 00 00 08 00 00 01 67")));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("04 00 00 10 00 00 00 15 00 01 00 08 00 00 00 12")));
+ stack.add(0, new SendEvent(ByteBufUtils
+ .hexStringToBytes("01 01 00 0c 00 00 00 15 00 00 00 00")));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("01 00 00 08 00 00 01 68")));
+ stack.add(0, new SendEvent(ByteBufUtils
+ .hexStringToBytes("01 00 00 08 00 00 01 68")));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("01 05 00 08 00 00 01 69")));
+
+ stack.add(0, new SendEvent(
+ ByteBufUtils
+ .hexStringToBytes("01 06 00 80 00 00 01 69 cc 4e 24 1c 4a 00 00 00"
+ + " 00 00 01 00 01 00 00 00 00 00 00 07 00 00 01 0f"
+ + " 00 61 cc 4e 24 1c 4a 60 65 74 68 33 2f 31 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 01"
+ + " 00 00 01 40 00 00 01 40 00 00 01 40 00 00 01 40"
+ + " 00 62 cc 4e 24 1c 4a 61 65 74 68 33 2f 32 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 01"
+ + " 00 00 01 40 00 00 01 40 00 00 01 40 00 00 01 40")));
+
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("01 10 00 0c 00 00 00 01 00 00 00 00")));
+
+ stack.add(0, new SendEvent(
+ ByteBufUtils
+ .hexStringToBytes("01 11 04 2c 00 00 00 01 00 00 00 00 42 72 6f 63"
+ + " 61 64 65 20 43 6f 6d 6d 75 6e 69 63 61 74 69"
+ + " 6f 6e 73 2c 20 49 6e 63 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 4d 75 6c"
+ + " 74 69 2d 53 65 72 76 69 63 65 20 49 72 6f 6e"
+ + " 77 61 72 65 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 4e 49"
+ + " 20 35 2e 37 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4e"
+ + " 6f 6e 65 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 4e 6f 6e 65 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00")));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("01 05 00 08 00 00 01 69")));
+
+ stack.add(0, new SendEvent(
+ ByteBufUtils
+ .hexStringToBytes("01 06 00 80 00 00 01 69 cc 4e 24 1c 4a 00 00 00"
+ + " 00 00 01 00 01 00 00 00 00 00 00 07 00 00 01 0f"
+ + " 00 61 cc 4e 24 1c 4a 60 65 74 68 33 2f 31 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 01"
+ + " 00 00 01 40 00 00 01 40 00 00 01 40 00 00 01 40"
+ + " 00 62 cc 4e 24 1c 4a 61 65 74 68 33 2f 32 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 01"
+ + " 00 00 01 40 00 00 01 40 00 00 01 40 00 00 01 40")));
+
+ stack.add(0, new SleepEvent(5000));
+
+ addSleep(stack);
+ return stack;
+ }
+
+ /**
+ * Attempt to simulate the MLX running 1.0 talking to ODL
+ *
+ * @param auxId
+ * @param pluginVersionBitmap
* @return handshake scenario without switch version bitmap
*/
- public static Stack<ClientEvent> createHandshakeScenario(short auxId, String pluginVersionBitmap) {
+ public static Stack<ClientEvent> createHandshakeScenarioNOVBM_OF10_OneHello() {
+ System.out.println("createHandshakeScenarioMininet");
Stack<ClientEvent> stack = new Stack<>();
-
- stack.add(0, new SendEvent(ByteBufUtils.hexStringToBytes("04 00 00 08 00 00 00 01")));
- stack.add(0, new WaitForMessageEvent(ByteBufUtils.hexStringToBytes("04 00 00 10 00 00 00 15 "
- + pluginVersionBitmap)));
- stack.add(0, new WaitForMessageEvent(ByteBufUtils.hexStringToBytes("04 05 00 08 00 00 00 02")));
- stack.add(0, new SendEvent(ByteBufUtils.hexStringToBytes(
- "04 06 00 20 00 00 00 02 "
- + "00 01 02 03 04 05 06 07 "
- + "00 01 02 03 01 "
- + Integer.toHexString(auxId)
- + " 00 00 00 01 02 03 00 01 02 03")));
+
+ stack.add(0, new SendEvent(ByteBufUtils
+ .hexStringToBytes("01 00 00 08 00 00 00 0d")));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("04 00 00 10 00 00 00 15")));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("01 00 00 08 00 00 00 0e")));
+ stack.add(0, new WaitForMessageEvent(ByteBufUtils
+ .hexStringToBytes("01 05 00 08 00 00 00 0f")));
+
+ stack.add(0, new SendEvent(
+ ByteBufUtils
+ .hexStringToBytes("01 01 00 14 00 00 00 0e 00 01 00 01 01 00 00 08 00 00 00 0e")));
+
+ stack.add(0, new SendEvent(
+ ByteBufUtils
+ .hexStringToBytes(" 01 06 00 b0 00 00 00 0f 00 00 00 00 00 00 00 01 00 00 01 00 fe 00"
+ + " 00 00 00 00 00 c7 00 00 0f ff 00 01 fa 01 ff 57 86 aa 73 31 2d"
+ + " 65 74 68 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01"
+ + " 00 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 00 00 02 c2 51 d8"
+ + " 24 38 97 73 31 2d 65 74 68 32 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 c0 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 ff fe ea bd f8 db 41 40 73 31 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
+ + " 00 00 00 00 00 00 00")));
addSleep(stack);
return stack;
}