1 package org.apache.onami.persist.test.transaction;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import com.google.inject.Guice;
23 import com.google.inject.Injector;
24 import org.apache.onami.persist.PersistenceModule;
25 import org.apache.onami.persist.PersistenceService;
26 import org.apache.onami.persist.test.transaction.testframework.TransactionalWorker;
27 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnAnyThrowingNone;
28 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnAnyThrowingRuntimeTestException;
29 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnAnyThrowingTestException;
30 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnNoneThrowingNone;
31 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnNoneThrowingRuntimeTestException;
32 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnNoneThrowingTestException;
33 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnRuntimeTestExceptionThrowingNone;
34 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException;
35 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnRuntimeTestExceptionThrowingTestException;
36 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnTestExceptionThrowingNone;
37 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnTestExceptionThrowingRuntimeTestException;
38 import org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnTestExceptionThrowingTestException;
39 import org.junit.After;
40 import org.junit.Before;
41 import org.junit.Test;
42
43
44
45
46
47 public class SingleTransactionTest
48 {
49
50 private Injector injector;
51
52 private TransactionalWorker worker;
53
54 @Before
55 public void setUp()
56 {
57 final PersistenceModule pm = createPersistenceModuleForTest();
58 injector = Guice.createInjector( pm );
59
60
61 injector.getInstance( PersistenceService.class ).start();
62 worker = injector.getInstance( TransactionalWorker.class );
63 }
64
65 private PersistenceModule createPersistenceModuleForTest()
66 {
67 return new PersistenceModule()
68 {
69
70 @Override
71 protected void configurePersistence()
72 {
73 bindApplicationManagedPersistenceUnit( "testUnit" );
74 }
75 };
76 }
77
78 @After
79 public void tearDown()
80 {
81 injector.getInstance( PersistenceService.class ).stop();
82 injector = null;
83 }
84
85 @Test
86 public void testTaskRollingBackOnAnyThrowingNone()
87 {
88
89 worker.scheduleTask( TaskRollingBackOnAnyThrowingNone.class );
90
91
92 worker.doTasks();
93
94
95 worker.assertAllEntitiesHaveBeenPersisted();
96 }
97
98 @Test
99 public void testTaskRollingBackOnAnyThrowingRuntimeTestException()
100 {
101
102 worker.scheduleTask( TaskRollingBackOnAnyThrowingRuntimeTestException.class );
103
104
105 worker.doTasks();
106
107
108 worker.assertNoEntityHasBeenPersisted();
109 }
110
111 @Test
112 public void testTaskRollingBackOnAnyThrowingTestException()
113 {
114
115 worker.scheduleTask( TaskRollingBackOnAnyThrowingTestException.class );
116
117
118 worker.doTasks();
119
120
121 worker.assertNoEntityHasBeenPersisted();
122 }
123
124 @Test
125 public void testTaskRollingBackOnNoneThrowingNone()
126 {
127
128 worker.scheduleTask( TaskRollingBackOnNoneThrowingNone.class );
129
130
131 worker.doTasks();
132
133
134 worker.assertAllEntitiesHaveBeenPersisted();
135 }
136
137 @Test
138 public void testTaskRollingBackOnNoneThrowingRuntimeTestException()
139 {
140
141 worker.scheduleTask( TaskRollingBackOnNoneThrowingRuntimeTestException.class );
142
143
144 worker.doTasks();
145
146
147 worker.assertAllEntitiesHaveBeenPersisted();
148 }
149
150 @Test
151 public void testTaskRollingBackOnNoneThrowingTestException()
152 {
153
154 worker.scheduleTask( TaskRollingBackOnNoneThrowingTestException.class );
155
156
157 worker.doTasks();
158
159
160 worker.assertAllEntitiesHaveBeenPersisted();
161 }
162
163 @Test
164 public void testTaskRollingBackOnRuntimeTestExceptionThrowingNone()
165 {
166
167 worker.scheduleTask( TaskRollingBackOnRuntimeTestExceptionThrowingNone.class );
168
169
170 worker.doTasks();
171
172
173 worker.assertAllEntitiesHaveBeenPersisted();
174 }
175
176 @Test
177 public void testTaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException()
178 {
179
180 worker.scheduleTask( TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class );
181
182
183 worker.doTasks();
184
185
186 worker.assertNoEntityHasBeenPersisted();
187 }
188
189 @Test
190 public void testTaskRollingBackOnRuntimeTestExceptionThrowingTestException()
191 {
192
193 worker.scheduleTask( TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class );
194
195
196 worker.doTasks();
197
198
199 worker.assertAllEntitiesHaveBeenPersisted();
200 }
201
202 @Test
203 public void testTaskRollingBackOnTestExceptionThrowingNone()
204 {
205
206 worker.scheduleTask( TaskRollingBackOnTestExceptionThrowingNone.class );
207
208
209 worker.doTasks();
210
211
212 worker.assertAllEntitiesHaveBeenPersisted();
213 }
214
215 @Test
216 public void testTaskRollingBackOnTestExceptionThrowingRuntimeTestException()
217 {
218
219 worker.scheduleTask( TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class );
220
221
222 worker.doTasks();
223
224
225 worker.assertAllEntitiesHaveBeenPersisted();
226 }
227
228 @Test
229 public void testTaskRollingBackOnTestExceptionThrowingTestException()
230 {
231
232 worker.scheduleTask( TaskRollingBackOnTestExceptionThrowingTestException.class );
233
234
235 worker.doTasks();
236
237
238 worker.assertNoEntityHasBeenPersisted();
239 }
240
241 }