public static void upgradeClusterMembers( TestHazelcastInstanceFactory factory, final HazelcastInstance[] membersToUpgrade, MemberVersion version, Config config, boolean assertClusterSize) { try { System.setProperty(HAZELCAST_INTERNAL_OVERRIDE_VERSION, version.toString()); // upgrade one by one each member of the cluster to the next version for (int i = 0; i < membersToUpgrade.length; i++) { membersToUpgrade[i].shutdown(); waitAllForSafeState(membersToUpgrade); // if new node's version is incompatible, then node startup will fail with // IllegalStateException membersToUpgrade[i] = factory.newHazelcastInstance(config); waitAllForSafeState(membersToUpgrade); if (assertClusterSize) { // assert all members are in the cluster assertTrueEventually( new AssertTask() { @Override public void run() throws Exception { assertEquals( membersToUpgrade.length, membersToUpgrade[0].getCluster().getMembers().size()); } }, 30); } } } finally { System.clearProperty(HAZELCAST_INTERNAL_OVERRIDE_VERSION); } }
// return a new HazelcastInstance at given version public static HazelcastInstance newHazelcastInstance( TestHazelcastInstanceFactory factory, MemberVersion version, Config config) { try { System.setProperty(HAZELCAST_INTERNAL_OVERRIDE_VERSION, version.toString()); return factory.newHazelcastInstance(config); } finally { System.clearProperty(HAZELCAST_INTERNAL_OVERRIDE_VERSION); } }