use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class TestNonBlockingCoordinator method testCoord1.
@Test
public void testCoord1() throws Exception {
int expectedCount = channels[0].getMembers().length;
log.info("Expecting each channel to have [" + expectedCount + "] members");
for (int i = 1; i < CHANNEL_COUNT; i++) {
Assert.assertEquals("Member count expected to be equal.", expectedCount, channels[i].getMembers().length);
}
Member member = coordinators[0].getCoordinator();
log.info("Coordinator[0] is:" + member);
for (int i = 0; i < CHANNEL_COUNT; i++) {
Assert.assertEquals("Local member " + channels[i].getLocalMember(false), member, coordinators[i].getCoordinator());
}
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class TestNonBlockingCoordinator method testCoord2.
@Test
public void testCoord2() throws Exception {
// Stop current coordinator to trigger new election
Member member = coordinators[1].getCoordinator();
log.info("Coordinator[2a] is:" + member);
int index = -1;
for (int i = 0; i < CHANNEL_COUNT; i++) {
if (channels[i].getLocalMember(false).equals(member)) {
log.info("Shutting down:" + channels[i].getLocalMember(true).toString());
channels[i].stop(Channel.DEFAULT);
index = i;
break;
}
}
int dead = index;
Thread.sleep(1000);
if (index == 0) {
index = 1;
} else {
index = 0;
}
// Allow up to 30s for election to complete
int count = 0;
member = null;
boolean electionComplete = false;
while (!electionComplete && count < 300) {
electionComplete = true;
member = coordinators[index].getCoordinator();
if (member == null) {
electionComplete = false;
} else {
for (int i = 0; i < CHANNEL_COUNT; i++) {
if (i != dead) {
electionComplete = electionComplete && (member.equals(coordinators[i].getCoordinator()));
}
}
}
Thread.sleep(100);
count++;
}
log.info("Member count:" + channels[index].getMembers().length);
member = coordinators[index].getCoordinator();
for (int i = 1; i < CHANNEL_COUNT; i++) {
if (i != dead) {
Assert.assertEquals(member, coordinators[i].getCoordinator());
}
}
log.info("Coordinator[2b] is:" + member);
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class TestUdpPackages method testDataSendNO_ACK.
@Test
public void testDataSendNO_ACK() throws Exception {
final AtomicInteger counter = new AtomicInteger(0);
ReceiverBase rb1 = (ReceiverBase) channel1.getChannelReceiver();
ReceiverBase rb2 = (ReceiverBase) channel2.getChannelReceiver();
rb1.setUdpRxBufSize(1024 * 1024 * 10);
rb2.setUdpRxBufSize(1024 * 1024 * 10);
rb1.setUdpTxBufSize(1024 * 1024 * 10);
rb2.setUdpTxBufSize(1024 * 1024 * 10);
System.err.println("Starting NO_ACK");
Thread[] threads = new Thread[threadCount];
for (int x = 0; x < threads.length; x++) {
threads[x] = new Thread() {
@Override
public void run() {
try {
long start = System.currentTimeMillis();
for (int i = 0; i < msgCount; i++) {
int cnt = counter.getAndAdd(1);
channel1.send(new Member[] { channel2.getLocalMember(false) }, Data.createRandomData(1024, cnt), Channel.SEND_OPTIONS_UDP);
// Thread.currentThread().sleep(10);
}
System.out.println("Thread[" + this.getName() + "] sent " + msgCount + " messages in " + (System.currentTimeMillis() - start) + " ms.");
} catch (Exception x) {
x.printStackTrace();
}
}
};
}
for (Thread thread : threads) {
thread.start();
}
for (Thread thread : threads) {
thread.join();
}
// sleep for 50 sec, let the other messages in
long start = System.currentTimeMillis();
while ((System.currentTimeMillis() - start) < 25000 && msgCount * threadCount != listener1.count.get()) {
Thread.sleep(500);
}
System.err.println("Finished NO_ACK [" + listener1.count + "]");
System.out.println("Sent " + counter.get() + " messages. Received " + listener1.count + " Highest msg received:" + listener1.maxIdx);
System.out.print("Missing messages:");
printMissingMsgs(listener1.nrs, counter.get());
Assert.assertEquals("Checking success messages.", msgCount * threadCount, listener1.count.get());
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class TestOrderInterceptor method setUp.
@Before
public void setUp() throws Exception {
System.out.println("Setup");
channels = new GroupChannel[channelCount];
orderitcs = new OrderInterceptor[channelCount];
mangleitcs = new MangleOrderInterceptor[channelCount];
test = new TestListener[channelCount];
threads = new Thread[channelCount];
for (int i = 0; i < channelCount; i++) {
channels[i] = new GroupChannel();
((ReceiverBase) channels[i].getChannelReceiver()).setHost("localhost");
orderitcs[i] = new OrderInterceptor();
mangleitcs[i] = new MangleOrderInterceptor();
orderitcs[i].setExpire(Long.MAX_VALUE);
channels[i].addInterceptor(orderitcs[i]);
channels[i].addInterceptor(mangleitcs[i]);
test[i] = new TestListener(i);
channels[i].addChannelListener(test[i]);
final int j = i;
threads[i] = new Thread() {
@Override
public void run() {
try {
channels[j].start(Channel.DEFAULT);
Thread.sleep(50);
} catch (Exception x) {
x.printStackTrace();
}
}
};
}
TesterUtil.addRandomDomain(channels);
for (int i = 0; i < channelCount; i++) {
threads[i].start();
}
int totalSleep = 0;
for (int i = 0; i < channelCount; i++) {
Member[] m = channels[i].getMembers();
while (m == null || m.length < channelCount - 1) {
totalSleep += 50;
if (totalSleep > 60000) {
Assert.fail("Cluster took more than 60s to start");
}
Thread.sleep(50);
m = channels[i].getMembers();
}
}
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class TestOrderInterceptor method testOrder1.
@Test
public void testOrder1() throws Exception {
Member[] dest = channels[0].getMembers();
final AtomicInteger value = new AtomicInteger(0);
for (int i = 0; i < 100; i++) {
channels[0].send(dest, Integer.valueOf(value.getAndAdd(1)), 0);
}
Thread.sleep(5000);
for (TestListener testListener : test) {
Assert.assertFalse(testListener.fail);
}
}
Aggregations