MCPcopy Create free account
hub / github.com/apache/sirona / CounterBench

Class CounterBench

core/src/test/java/org/apache/sirona/counters/CounterBench.java:29–61  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27import static org.junit.Assert.assertEquals;
28
29public class CounterBench implements Runnable {
30 private static final int THREADS = 30;
31 private static final int LOOPS = 20000000;
32
33 private Counter counter;
34 private String mode;
35
36 @Test
37 public void defaultCounter() throws Exception {
38 mode = "RentrantLockCounter";
39 counter = new DefaultCounter(new Counter.Key(Role.FAILURES, mode), new InMemoryCounterDataStore());
40 runConcurrent();
41 }
42
43 private void runConcurrent() throws InterruptedException {
44 final long start = System.nanoTime();
45 final ExecutorService pool = Executors.newFixedThreadPool(THREADS);
46 for (int i = 0; i < LOOPS; i++) {
47 pool.submit(this);
48 }
49 pool.shutdown();
50 pool.awaitTermination(60, TimeUnit.SECONDS);
51
52 final long duration = System.nanoTime() - start;
53 System.out.printf("%s : %,d ns/operation %n\n", mode, duration / LOOPS);
54 assertEquals(LOOPS, counter.getSum(), 0);
55
56 }
57
58 public void run() {
59 counter.add(1, Unit.UNARY);
60 }
61}
62
63

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected