1 package org.opendaylight.yangtools.triemap;
4 import java.util.concurrent.ExecutorService;
5 import java.util.concurrent.Executors;
6 import java.util.concurrent.TimeUnit;
10 public class TestMultiThreadAddDelete {
11 private static final int RETRIES = 1;
12 private static final int N_THREADS = 7;
13 private static final int COUNT = 50 * 1000;
16 public void testMultiThreadAddDelete () {
17 for (int j = 0; j < RETRIES; j++) {
18 final Map<Object, Object> bt = new TrieMap <Object, Object> ();
21 final ExecutorService es = Executors.newFixedThreadPool (N_THREADS);
22 for (int i = 0; i < N_THREADS; i++) {
23 final int threadNo = i;
24 es.execute (new Runnable () {
27 for (int j = 0; j < COUNT; j++) {
28 if (j % N_THREADS == threadNo) {
29 bt.put (Integer.valueOf (j), Integer.valueOf (j));
37 es.awaitTermination (3600L, TimeUnit.SECONDS);
38 } catch (final InterruptedException e) {
43 TestHelper.assertEquals (COUNT, bt.size ());
44 TestHelper.assertFalse (bt.isEmpty ());
47 final ExecutorService es = Executors.newFixedThreadPool (N_THREADS);
48 for (int i = 0; i < N_THREADS; i++) {
49 final int threadNo = i;
50 es.execute (new Runnable () {
53 for (int j = 0; j < COUNT; j++) {
54 if (j % N_THREADS == threadNo) {
55 bt.remove (Integer.valueOf (j));
63 es.awaitTermination (3600L, TimeUnit.SECONDS);
64 } catch (final InterruptedException e) {
70 TestHelper.assertEquals (0, bt.size ());
71 TestHelper.assertTrue (bt.isEmpty ());
74 final ExecutorService es = Executors.newFixedThreadPool (N_THREADS);
75 for (int i = 0; i < N_THREADS; i++) {
76 final int threadNo = i;
77 es.execute (new Runnable () {
80 for (int j = 0; j < COUNT; j++) {
81 if (j % N_THREADS == threadNo) {
83 bt.put (Integer.valueOf (j), Integer.valueOf (j));
84 if (!bt.containsKey (Integer.valueOf (j))) {
85 System.out.println (j);
87 bt.remove (Integer.valueOf (j));
88 if (bt.containsKey (Integer.valueOf (j))) {
89 System.out.println (-j);
91 } catch (Throwable t) {
101 es.awaitTermination (3600L, TimeUnit.SECONDS);
102 } catch (final InterruptedException e) {
103 e.printStackTrace ();
107 TestHelper.assertEquals (0, bt.size ());
108 if (!bt.isEmpty ()) {
109 System.out.println ();
111 TestHelper.assertTrue (bt.isEmpty ());