1 package org.opendaylight.yangtools.triemap;
4 import java.util.concurrent.ExecutorService;
5 import java.util.concurrent.Executors;
6 import java.util.concurrent.TimeUnit;
9 public class TestMultiThreadAddDelete {
10 private static final int RETRIES = 1;
11 private static final int N_THREADS = 7;
12 private static final int COUNT = 50 * 1000;
15 public void testMultiThreadAddDelete () {
16 for (int j = 0; j < RETRIES; j++) {
17 final Map<Object, Object> bt = new TrieMap <> ();
20 final ExecutorService es = Executors.newFixedThreadPool (N_THREADS);
21 for (int i = 0; i < N_THREADS; i++) {
22 final int threadNo = i;
23 es.execute (new Runnable () {
26 for (int j = 0; j < COUNT; j++) {
27 if (j % N_THREADS == threadNo) {
28 bt.put (Integer.valueOf (j), Integer.valueOf (j));
36 es.awaitTermination (3600L, TimeUnit.SECONDS);
37 } catch (final InterruptedException e) {
42 TestHelper.assertEquals (COUNT, bt.size ());
43 TestHelper.assertFalse (bt.isEmpty ());
46 final ExecutorService es = Executors.newFixedThreadPool (N_THREADS);
47 for (int i = 0; i < N_THREADS; i++) {
48 final int threadNo = i;
49 es.execute (new Runnable () {
52 for (int j = 0; j < COUNT; j++) {
53 if (j % N_THREADS == threadNo) {
54 bt.remove (Integer.valueOf (j));
62 es.awaitTermination (3600L, TimeUnit.SECONDS);
63 } catch (final InterruptedException e) {
69 TestHelper.assertEquals (0, bt.size ());
70 TestHelper.assertTrue (bt.isEmpty ());
73 final ExecutorService es = Executors.newFixedThreadPool (N_THREADS);
74 for (int i = 0; i < N_THREADS; i++) {
75 final int threadNo = i;
76 es.execute (new Runnable () {
79 for (int j = 0; j < COUNT; j++) {
80 if (j % N_THREADS == threadNo) {
82 bt.put (Integer.valueOf (j), Integer.valueOf (j));
83 if (!bt.containsKey (Integer.valueOf (j))) {
84 System.out.println (j);
86 bt.remove (Integer.valueOf (j));
87 if (bt.containsKey (Integer.valueOf (j))) {
88 System.out.println (-j);
90 } catch (Throwable t) {
100 es.awaitTermination (3600L, TimeUnit.SECONDS);
101 } catch (final InterruptedException e) {
102 e.printStackTrace ();
106 TestHelper.assertEquals (0, bt.size ());
107 if (!bt.isEmpty ()) {
108 System.out.println ();
110 TestHelper.assertTrue (bt.isEmpty ());