- //////// Start - Version Negotiation Test //////////////
-
- /**
- * Test of version negotiation Where switch version = 1.0
- *
- * @throws Exception
- */
- @Test
- public void testVersionNegotiation10() throws Exception {
- LOG.debug("testVersionNegotiation10");
- Short version = (short) 0x01;
- eventPlan.add(0, EventFactory.createConnectionReadyCallback(connectionConductor));
- eventPlan.add(0, EventFactory.createDefaultNotificationEvent(42, version, new HelloMessageBuilder()));
- eventPlan.add(0, EventFactory.createDefaultWaitForAllEvent(
- EventFactory.createDefaultWaitForRpcEvent(21, "helloReply"),
- EventFactory.createDefaultWaitForRpcEvent(43, "helloReply")));
- eventPlan.add(0, EventFactory.createDefaultWaitForRpcEvent(44, "getFeatures"));
- eventPlan.add(0,
- EventFactory.createDefaultRpcResponseEvent(44, EventFactory.DEFAULT_VERSION, getFeatureResponseMsg()));
-
- executeNow();
- Assert.assertEquals(version, connectionConductor.getVersion());
- }
-
- /**
- * Test of version negotiation Where switch version < 1.0
- *
- * @throws Exception
- */
- @Test
- public void testVersionNegotiation00() throws Exception {
- Short version = (short) 0x00;
- eventPlan.add(0, EventFactory.createDefaultNotificationEvent(42L, version, new HelloMessageBuilder()));
- executeNow();
- Assert.assertNull(connectionConductor.getVersion());
- }
-
- /**
- * Test of version negotiation Where 1.0 < switch version < 1.3
- *
- * @throws Exception
- */
- @Test
- public void testVersionNegotiation11() throws Exception {
- LOG.debug("testVersionNegotiation11");
- connectionConductor.setBitmapNegotiationEnable(false);
- Short version = (short) 0x02;
- Short expVersion = (short) 0x01;
- Assert.assertNull(connectionConductor.getVersion());
-
- eventPlan.add(0, EventFactory.createConnectionReadyCallback(connectionConductor));
- eventPlan.add(0, EventFactory.createDefaultNotificationEvent(42L, version, new HelloMessageBuilder()));
- eventPlan.add(0, EventFactory.createDefaultWaitForAllEvent(
- EventFactory.createDefaultWaitForRpcEvent(21, "helloReply"),
- EventFactory.createDefaultWaitForRpcEvent(43, "helloReply")));
- eventPlan.add(0, EventFactory.createDefaultNotificationEvent(44, expVersion, new HelloMessageBuilder()));
- eventPlan.add(0, EventFactory.createDefaultWaitForRpcEvent(45, "getFeatures"));
- eventPlan.add(0,
- EventFactory.createDefaultRpcResponseEvent(45, EventFactory.DEFAULT_VERSION, getFeatureResponseMsg()));
- executeNow();
- Assert.assertEquals(expVersion, connectionConductor.getVersion());
-
- }
-
- /**
- * Test of version negotiation Where switch version = 1.3
- *
- * @throws Exception
- */
- @Test
- public void testVersionNegotiation13() throws Exception {
- LOG.debug("testVersionNegotiation13");
- Short version = (short) 0x04;
- eventPlan.add(0, EventFactory.createConnectionReadyCallback(connectionConductor));
- eventPlan.add(0, EventFactory.createDefaultNotificationEvent(42L, version, new HelloMessageBuilder()));
- eventPlan.add(0, EventFactory.createDefaultWaitForAllEvent(
- EventFactory.createDefaultWaitForRpcEvent(21, "helloReply"),
- EventFactory.createDefaultWaitForRpcEvent(43, "getFeatures")));
- eventPlan.add(0,
- EventFactory.createDefaultRpcResponseEvent(43, EventFactory.DEFAULT_VERSION, getFeatureResponseMsg()));
-
- executeNow();
- Assert.assertEquals(version, connectionConductor.getVersion());
- }
-
- /**
- * Test of version negotiation Where switch version >= 1.3
- *
- * @throws Exception
- */
- @Test
- public void testVersionNegotiation15() throws Exception {
- LOG.debug("testVersionNegotiation15");
- connectionConductor.setBitmapNegotiationEnable(false);
- Short version = (short) 0x06;
- Short expVersion = (short) 0x04;
- Assert.assertNull(connectionConductor.getVersion());
-
- eventPlan.add(0, EventFactory.createConnectionReadyCallback(connectionConductor));
- eventPlan.add(0, EventFactory.createDefaultNotificationEvent(42L, version, new HelloMessageBuilder()));
- eventPlan.add(0, EventFactory.createDefaultWaitForRpcEvent(21, "helloReply"));
- eventPlan.add(0, EventFactory.createDefaultNotificationEvent(44, expVersion, new HelloMessageBuilder()));
- eventPlan.add(0, EventFactory.createDefaultWaitForRpcEvent(45, "getFeatures"));
- eventPlan.add(0,
- EventFactory.createDefaultRpcResponseEvent(45, EventFactory.DEFAULT_VERSION, getFeatureResponseMsg()));
- executeNow();
- Assert.assertEquals(expVersion, connectionConductor.getVersion());
- }
-
- /**
- * Test of version negotiation Where switch version > 1.3
- *
- * @throws Exception
- */
- @Test
- public void testVersionNegotiation15_MultipleCall() throws Exception {
- LOG.debug("testVersionNegotiation15_MultipleCall");
- connectionConductor.setBitmapNegotiationEnable(false);
- Short version = (short) 0x06;
- Assert.assertNull(connectionConductor.getVersion());
-
- eventPlan.add(0, EventFactory.createConnectionReadyCallback(connectionConductor));
- eventPlan.add(0, EventFactory.createDefaultWaitForRpcEvent(21, "helloReply"));
- eventPlan.add(0, EventFactory.createDefaultNotificationEvent(42, version, new HelloMessageBuilder()));
- eventPlan.add(0, EventFactory.createDefaultNotificationEvent(44, version, new HelloMessageBuilder()));
- executeNow();
- // TODO : check for connection termination
- Assert.assertNull(connectionConductor.getVersion());
- }
-
- /**
- * Test of version negotiation Where bitmap version {0x05,0x01}
- *
- * @throws Exception
- */
- @Test
- public void testVersionNegotiation10InBitmap() throws Exception {
- LOG.debug("testVersionNegotiation10InBitmap");
- Short version = (short) 0x01;
-
- eventPlan.add(0, EventFactory.createConnectionReadyCallback(connectionConductor));
- eventPlan.add(
- 0,
- EventFactory.createDefaultNotificationEvent(42L, (short) 0x05,
- getHelloBitmapMessage(Lists.newArrayList((short) 0x05, (short) 0x01))));
- eventPlan.add(0, EventFactory.createDefaultWaitForAllEvent(
- EventFactory.createDefaultWaitForRpcEvent(21, "helloReply"),
- EventFactory.createDefaultWaitForRpcEvent(43, "getFeatures")));
- eventPlan.add(0,
- EventFactory.createDefaultRpcResponseEvent(43, EventFactory.DEFAULT_VERSION, getFeatureResponseMsg()));
-
- executeNow();
- Assert.assertEquals(version, connectionConductor.getVersion());
- }
-
- /**
- * Test of version negotiation Where bitmap version {0x05,0x04}
- *
- * @throws Exception
- */
- @Test
- public void testVersionNegotiation13InBitmap() throws Exception {
- LOG.debug("testVersionNegotiation13InBitmap");
- Short version = (short) 0x04;
-
- eventPlan.add(0, EventFactory.createConnectionReadyCallback(connectionConductor));
- eventPlan.add(
- 0,
- EventFactory.createDefaultNotificationEvent(42L, (short) 0x05,
- getHelloBitmapMessage(Lists.newArrayList((short) 0x05, (short) 0x04))));
- eventPlan.add(0, EventFactory.createDefaultWaitForAllEvent(
- EventFactory.createDefaultWaitForRpcEvent(21, "helloReply"),
- EventFactory.createDefaultWaitForRpcEvent(43, "getFeatures")));
- eventPlan.add(0,
- EventFactory.createDefaultRpcResponseEvent(43, EventFactory.DEFAULT_VERSION, getFeatureResponseMsg()));
-
- executeNow();
- Assert.assertEquals(version, connectionConductor.getVersion());
- }
-
- /**
- * Test of version negotiation Where bitmap version {0x05,0x02}
- *
- * @throws Exception
- */
- @Test
- public void testVersionNegotiationNoCommonVersionInBitmap() throws Exception {
- eventPlan.add(
- 0,
- EventFactory.createDefaultNotificationEvent(42L, (short) 0x05,
- getHelloBitmapMessage(Lists.newArrayList((short) 0x05, (short) 0x02))));
- executeNow();
- Assert.assertNull(connectionConductor.getVersion());
- }
-
- private HelloMessageBuilder getHelloBitmapMessage(List<Short> versionOrder) {
- short highestVersion = versionOrder.get(0);
- int elementsCount = highestVersion / Integer.SIZE;
- ElementsBuilder elementsBuilder = new ElementsBuilder();
-
- List<Elements> elementList = new ArrayList<>();
- int orderIndex = versionOrder.size();
- int value = versionOrder.get(--orderIndex);
- for (int index = 0; index <= elementsCount; index++) {
- List<Boolean> booleanList = new ArrayList<>();
- for (int i = 0; i < Integer.SIZE; i++) {
- if (value == ((index * Integer.SIZE) + i)) {
- booleanList.add(true);
- value = (orderIndex == 0) ? highestVersion : versionOrder.get(--orderIndex);
- } else {
- booleanList.add(false);
- }
- }
- elementsBuilder.setType(HelloElementType.forValue(1));
- elementsBuilder.setVersionBitmap(booleanList);
- elementList.add(elementsBuilder.build());
- }
-
- HelloMessageBuilder builder = new HelloMessageBuilder();
- builder.setXid(10L);
- builder.setVersion(highestVersion);
- builder.setElements(elementList);
- return builder;
-
- }
-
- private GetFeaturesOutputBuilder getFeatureResponseMsg() {