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;
}
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;
}
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;
}
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;
}
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];
}
Aggregations