Search in sources :

Example 1 with Table

use of org.jgroups.util.Table in project JGroups by belaban.

the class TableStressTest method main.

public static void main(String[] args) throws InterruptedException {
    for (int i = 0; i < args.length; i++) {
        if (args[i].startsWith("-h")) {
            System.out.println("TableStressTest [-num numbers] [-adders <number of adder threads>]");
            return;
        }
        if (args[i].equals("-num")) {
            NUM = Integer.parseInt(args[++i]);
            continue;
        }
        if (args[i].equals("-adders")) {
            NUM_THREADS = Integer.parseInt(args[++i]);
        }
    }
    Table<Integer> buf = new Table<>(10000, 10240, 0);
    final CountDownLatch latch = new CountDownLatch(1);
    Remover remover = new Remover(buf, latch);
    remover.start();
    Adder[] adders = new Adder[NUM_THREADS];
    for (int i = 0; i < adders.length; i++) {
        adders[i] = new Adder(buf, latch, added);
        adders[i].start();
    }
    long start = System.currentTimeMillis();
    latch.countDown();
    while (remover.isAlive()) {
        System.out.println("added messages: " + added + ", removed messages: " + removed);
        remover.join(2000);
    }
    long diff = System.currentTimeMillis() - start;
    System.out.println("added messages: " + added + ", removed messages: " + removed);
    System.out.println("took " + diff + " ms to insert and remove " + NUM + " messages");
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Table(org.jgroups.util.Table) CountDownLatch(java.util.concurrent.CountDownLatch)

Example 2 with Table

use of org.jgroups.util.Table in project JGroups by belaban.

the class STABLE_Test method testStableWithDontLoopback.

public void testStableWithDontLoopback() throws Exception {
    byte[] payload = new byte[5000];
    for (int i = 0; i < 10; i++) {
        Message msg = new BytesMessage(null, payload).setFlag(Message.TransientFlag.DONT_LOOPBACK);
        b.send(msg);
        // prevents batches, which trigger STABLE msgs in non-10000 increments
        Util.sleep(200);
    }
    Util.waitUntil(5000, 500, () -> Stream.of(r1, r3).allMatch(r -> r.size() == 10));
    assert r2.size() == 0;
    Util.waitUntilTrue(5000, 500, () -> Stream.of(a, b, c).map(c -> ((NAKACK2) c.getProtocolStack().findProtocol(NAKACK2.class)).getWindow(b.getAddress())).allMatch(t -> t.getHighestReceived() == 10 && t.getHighestDelivered() == 10 && t.getLow() == 10));
    for (JChannel ch : List.of(a, b, c)) {
        NAKACK2 n = ch.getProtocolStack().findProtocol(NAKACK2.class);
        Table<Message> t = n.getWindow(b.getAddress());
        assert t.getHighestReceived() == 10 && t.getHighestDelivered() == 10 && t.getLow() == 10 : String.format("table for %s is %s (low is probably 0)", ch.getName(), t);
    }
}
Also used : Table(org.jgroups.util.Table) Util(org.jgroups.util.Util) BeforeMethod(org.testng.annotations.BeforeMethod) Test(org.testng.annotations.Test) AfterMethod(org.testng.annotations.AfterMethod) BytesMessage(org.jgroups.BytesMessage) MyReceiver(org.jgroups.util.MyReceiver) List(java.util.List) Stream(java.util.stream.Stream) Message(org.jgroups.Message) NAKACK2(org.jgroups.protocols.pbcast.NAKACK2) Global(org.jgroups.Global) STABLE(org.jgroups.protocols.pbcast.STABLE) JChannel(org.jgroups.JChannel) NAKACK2(org.jgroups.protocols.pbcast.NAKACK2) JChannel(org.jgroups.JChannel) BytesMessage(org.jgroups.BytesMessage) Message(org.jgroups.Message) BytesMessage(org.jgroups.BytesMessage)

Aggregations

Table (org.jgroups.util.Table)2 List (java.util.List)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 Stream (java.util.stream.Stream)1 BytesMessage (org.jgroups.BytesMessage)1 Global (org.jgroups.Global)1 JChannel (org.jgroups.JChannel)1 Message (org.jgroups.Message)1 NAKACK2 (org.jgroups.protocols.pbcast.NAKACK2)1 STABLE (org.jgroups.protocols.pbcast.STABLE)1 MyReceiver (org.jgroups.util.MyReceiver)1 Util (org.jgroups.util.Util)1 AfterMethod (org.testng.annotations.AfterMethod)1 BeforeMethod (org.testng.annotations.BeforeMethod)1 Test (org.testng.annotations.Test)1