package uk.ac.imperial.lsds.seep.integration.performance.microbenchmarks;
import static org.junit.Assert.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import org.junit.Test;
public class JavaQueueSimplePerformanceTest {
@Test
public void test() {
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(100);
Thread writer = new Thread (new Runnable() {
public void run() {
while(true) {
try {
queue.put(new Integer(0));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
Thread reader = new Thread(new Runnable() {
long refTime = System.currentTimeMillis();
int reportInterval = 1000; //ms
int events = 0;
public void run() {
while(true){
try {
queue.take();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
events++;
if(System.currentTimeMillis() - refTime > reportInterval) {
System.out.println("e/s: "+events);
events = 0;
refTime = System.currentTimeMillis();
}
}
}
});
writer.start();
reader.start();
try {
reader.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
assert(true);
}
}