import org.opendaylight.openflowjava.protocol.impl.clients.ClientEvent;
import org.opendaylight.openflowjava.protocol.impl.clients.SendEvent;
+import org.opendaylight.openflowjava.protocol.impl.clients.SleepEvent;
import org.opendaylight.openflowjava.protocol.impl.clients.WaitForMessageEvent;
-import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
+import org.opendaylight.openflowjava.util.ByteBufUtils;
+/**
+ * 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 stack
+ */
+ private static void addSleep(Stack<ClientEvent> stack) {
+ stack.add(0, new SleepEvent(2000));
+ }
+
/**
* @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> createHandshakeScenario(short auxId, String pluginVersionBitmap) {
+ public static Stack<ClientEvent> createHandshakeScenarioNoVBM_OF10_TwoHello() {
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 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 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> createHandshakeScenarioNOVBM_OF10_OneHello() {
+ System.out.println("createHandshakeScenarioMininet");
+ Stack<ClientEvent> stack = new Stack<>();
+
+ 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;
}
}