BUG-7464: Reformat source code
[yangtools.git] / third-party / triemap / src / test / java / org / opendaylight / yangtools / triemap / TestMultiThreadAddDelete.java
1 package org.opendaylight.yangtools.triemap;
2
3 import java.util.Map;
4 import java.util.concurrent.ExecutorService;
5 import java.util.concurrent.Executors;
6 import java.util.concurrent.TimeUnit;
7 import org.junit.Test;
8
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;
13
14     @Test
15     public void testMultiThreadAddDelete () {
16         for (int j = 0; j < RETRIES; j++) {
17             final Map<Object, Object> bt = new TrieMap <> ();
18
19             {
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 () {
24                         @Override
25                         public void run () {
26                             for (int j = 0; j < COUNT; j++) {
27                                 if (j % N_THREADS == threadNo) {
28                                     bt.put (Integer.valueOf (j), Integer.valueOf (j));
29                                 }
30                             }
31                         }
32                     });
33                 }
34                 es.shutdown ();
35                 try {
36                     es.awaitTermination (3600L, TimeUnit.SECONDS);
37                 } catch (final InterruptedException e) {
38                     e.printStackTrace ();
39                 }
40             }
41
42             TestHelper.assertEquals (COUNT, bt.size ());
43             TestHelper.assertFalse (bt.isEmpty ());
44
45             {
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 () {
50                         @Override
51                         public void run () {
52                             for (int j = 0; j < COUNT; j++) {
53                                 if (j % N_THREADS == threadNo) {
54                                     bt.remove (Integer.valueOf (j));
55                                 }
56                             }
57                         }
58                     });
59                 }
60                 es.shutdown ();
61                 try {
62                     es.awaitTermination (3600L, TimeUnit.SECONDS);
63                 } catch (final InterruptedException e) {
64                     e.printStackTrace ();
65                 }
66             }
67
68
69             TestHelper.assertEquals (0, bt.size ());
70             TestHelper.assertTrue (bt.isEmpty ());
71
72             {
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 () {
77                         @Override
78                         public void run () {
79                             for (int j = 0; j < COUNT; j++) {
80                                 if (j % N_THREADS == threadNo) {
81                                     try {
82                                         bt.put (Integer.valueOf (j), Integer.valueOf (j));
83                                         if (!bt.containsKey (Integer.valueOf (j))) {
84                                             System.out.println (j);
85                                         }
86                                         bt.remove (Integer.valueOf (j));
87                                         if (bt.containsKey (Integer.valueOf (j))) {
88                                             System.out.println (-j);
89                                         }
90                                     } catch (Throwable t) {
91                                         t.printStackTrace ();
92                                     }
93                                 }
94                             }
95                         }
96                     });
97                 }
98                 es.shutdown ();
99                 try {
100                     es.awaitTermination (3600L, TimeUnit.SECONDS);
101                 } catch (final InterruptedException e) {
102                     e.printStackTrace ();
103                 }
104             }
105
106             TestHelper.assertEquals (0, bt.size ());
107             if (!bt.isEmpty ()) {
108                 System.out.println ();
109             }
110             TestHelper.assertTrue (bt.isEmpty ());
111         }
112     }
113 }