示例#1
0
 private boolean checkViewSize(int expectedSize, JChannel... channels) {
   boolean b = true;
   for (JChannel ch : channels) {
     b = b && ch.getView().size() == expectedSize;
   }
   return b;
 }
示例#2
0
 public void testSASLDigestMD5Merge() throws Exception {
   a = createChannel("A", "DIGEST-MD5", "jack");
   b = createChannel("B", "DIGEST-MD5", "jack");
   a.connect("SaslTest");
   b.connect("SaslTest");
   assertTrue(b.isConnected());
   print(a, b);
   createPartitions(a, b);
   print(a, b);
   assertTrue(checkViewSize(1, a, b));
   dropDiscard(a, b);
   mergePartitions(a, b);
   for (int i = 0; i < 10 && !checkViewSize(2, a, b); i++) {
     Util.sleep(500);
   }
   assertTrue(viewContains(a.getView(), a, b));
   assertTrue(viewContains(b.getView(), a, b));
 }
示例#3
0
 private static void mergePartitions(JChannel... channels) throws Exception {
   Membership membership = new Membership();
   for (JChannel ch : channels) {
     membership.add(ch.getAddress());
   }
   membership.sort();
   Address leaderAddress = membership.elementAt(0);
   JChannel leader = findChannelByAddress(leaderAddress, channels);
   GMS gms = (GMS) leader.getProtocolStack().findProtocol(GMS.class);
   gms.setLevel("trace");
   Map<Address, View> views = new HashMap<>();
   for (JChannel ch : channels) {
     views.put(ch.getAddress(), ch.getView());
   }
   gms.up(new Event(Event.MERGE, views));
 }
示例#4
0
 private static void print(JChannel... channels) {
   for (JChannel ch : channels) {
     System.out.println(ch.getName() + ": " + ch.getView());
   }
 }