c0005d2e6b300fc39dcd4813398451f3446f396c
[packages/trusty/mysql-wsrep-5.6.git] /
1 /*
2    Copyright 2010 Sun Microsystems, Inc.
3    All rights reserved. Use is subject to license terms.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; version 2 of the License.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program; if not, write to the Free Software
16    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
17 */
18
19 package testsuite.clusterj;
20
21 import testsuite.clusterj.model.Employee;
22
23 public class SerialTransactionsTest extends AbstractClusterJModelTest {
24
25     private static final int NUMBER_TO_INSERT = 4;
26
27     protected int numberOfEmployees() {
28         return NUMBER_TO_INSERT;
29     }
30
31     @Override
32     public void localSetUp() {
33         createSessionFactory();
34         createSession();
35         createEmployeeInstances(NUMBER_TO_INSERT);
36         addTearDownClasses(Employee.class);
37     }
38
39
40     public void test() {
41         deleteAll();
42         createSession();
43         findAll();
44         createSession();
45         createAll();
46         createSession();
47         findAll();
48         createSession();
49         findAll();
50         createSession();
51         updateThenVerifyAll();
52         failOnError();
53     }
54
55     protected void createAll() {
56         tx.begin();
57         session.makePersistentAll(employees);
58         tx.commit();
59     }
60
61     /** Find instances. */
62     public void findAll() {
63         tx.begin();
64         for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
65             Employee e = session.find(Employee.class, i);
66         }
67         tx.commit();
68     }
69
70     public void deleteAll() {
71         tx.begin();
72         for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
73             Employee e = session.find(Employee.class, i);
74             session.deletePersistent(e);
75         }
76         tx.commit();
77     }
78
79     public void updateThenVerifyAll() {
80         tx.begin();
81         for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
82             Employee e = session.find(Employee.class, i);
83             // change age 
84             e.setAge(NUMBER_TO_INSERT - i);
85             // send the change to the database
86             session.updatePersistent(e);
87         }
88         tx.commit();
89         
90         // now verify that the changes were committed
91         tx.begin();
92         for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
93             Employee e = session.find(Employee.class, i);
94             // verify age 
95             int expected = NUMBER_TO_INSERT - i;
96             int actual = e.getAge();
97             if (expected != actual) {
98                 error("Failed update: for employee " + i
99                         + " expected age " + expected
100                         + " actual age " + actual);
101             }
102         }
103         tx.commit();
104     }
105 }