Search in sources :

Example 1 with BlockingInputStream

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

the class BlockingInputStreamTest method testMultipleWriters.

public void testMultipleWriters() throws Exception {
    final BlockingInputStream in = new BlockingInputStream(100);
    final byte[] buffer = generateBuffer(500);
    final Writer[] writers = new Writer[5];
    for (int i = 0; i < writers.length; i++) {
        writers[i] = new Writer(in, buffer, 1, false);
        writers[i].setName("writer-" + (i + 1));
        writers[i].start();
    }
    new Thread(() -> {
        while (true) {
            boolean all_done = true;
            for (Writer writer : writers) {
                if (writer.isAlive()) {
                    all_done = false;
                    break;
                }
            }
            if (all_done) {
                Util.close(in);
                return;
            } else
                Util.sleep(100);
        }
    }).start();
    byte[] tmp = new byte[400];
    int num = 0;
    while (true) {
        int read = in.read(tmp, 0, tmp.length);
        if (read == -1)
            break;
        num += read;
    }
    System.out.println("read " + num + " bytes");
    assert num == writers.length * buffer.length;
    for (Writer writer : writers) assert writer.isAlive() == false;
}
Also used : BlockingInputStream(org.jgroups.util.BlockingInputStream)

Example 2 with BlockingInputStream

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

the class BlockingInputStreamTest method testRead.

public void testRead() throws IOException {
    final BlockingInputStream in = new BlockingInputStream(100);
    byte[] input = { 'B', 'e', 'l', 'a' };
    in.write(input);
    in.close();
    assert in.available() == 4;
    for (int i = 0; i < input.length; i++) {
        int b = in.read();
        assert b == input[i];
    }
    int b = in.read();
    assert b == -1;
}
Also used : BlockingInputStream(org.jgroups.util.BlockingInputStream)

Example 3 with BlockingInputStream

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

the class BlockingInputStreamTest method testBlockingReadAndClose.

public void testBlockingReadAndClose() throws IOException {
    final BlockingInputStream in = new BlockingInputStream(100);
    final CountDownLatch latch = new CountDownLatch(1);
    byte[] buf = new byte[100];
    // closes input stream after 1 sec
    new Closer(latch, in, 1000L).start();
    latch.countDown();
    int num = in.read(buf, 0, buf.length);
    assert num == -1 : " expected -1 (EOF) but got " + num;
}
Also used : CountDownLatch(java.util.concurrent.CountDownLatch) BlockingInputStream(org.jgroups.util.BlockingInputStream)

Example 4 with BlockingInputStream

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

the class BlockingInputStreamTest method testWritingBeyondLength.

public void testWritingBeyondLength() throws IOException {
    final BlockingInputStream in = new BlockingInputStream(800);
    new Thread(() -> {
        byte[] buf = new byte[800 + 600];
        try {
            in.write(buf);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }).start();
    byte[] buf = new byte[1000];
    int read = in.read(buf);
    assert read == buf.length;
}
Also used : BlockingInputStream(org.jgroups.util.BlockingInputStream)

Example 5 with BlockingInputStream

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

the class BlockingInputStreamTest method testSimpleWrite.

public void testSimpleWrite() throws Exception {
    final BlockingInputStream input = new BlockingInputStream(8192);
    byte[] in = { 'B', 'e', 'l', 'a' };
    input.write(in);
    byte[] buf = new byte[5];
    for (int i = 0; i < in.length; i++) {
        int read = input.read(buf, i, 1);
        assert read == 1;
    }
    for (int i = 0; i < in.length; i++) assert in[i] == buf[i];
}
Also used : BlockingInputStream(org.jgroups.util.BlockingInputStream)

Aggregations

BlockingInputStream (org.jgroups.util.BlockingInputStream)18 CountDownLatch (java.util.concurrent.CountDownLatch)2 Tuple (org.jgroups.util.Tuple)1