MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UpdateTest.java
1 /*
2  Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; version 2 of the License.
7 
8  This program is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  GNU General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License
14  along with this program; if not, write to the Free Software
15  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17 
18 package testsuite.clusterj;
19 
20 import java.util.ArrayList;
21 import java.util.List;
22 
23 import testsuite.clusterj.model.Employee;
24 
25 public class UpdateTest extends AbstractClusterJModelTest {
26 
27  private static final int NUMBER_TO_INSERT = 4;
28 
29  @Override
30  public void localSetUp() {
31  createSessionFactory();
32  session = sessionFactory.getSession();
33  tx = session.currentTransaction();
34  tx.begin();
35  session.deletePersistentAll(Employee.class);
36  tx.commit();
37  createEmployeeInstances(NUMBER_TO_INSERT);
38  tx.begin();
39  session.makePersistentAll(employees);
40  tx.commit();
41  addTearDownClasses(Employee.class);
42  }
43 
44  public void testUpdate() {
45  tx.begin();
46  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
47  Employee e = session.find(Employee.class, i);
48  // change age
49  e.setAge(NUMBER_TO_INSERT - i);
50  // send the change to the database
51  session.updatePersistent(e);
52  }
53  tx.commit();
54 
55  // now verify that the changes were committed
56  tx.begin();
57  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
58  Employee e = session.find(Employee.class, i);
59  // verify age
60  int expected = NUMBER_TO_INSERT - i;
61  int actual = e.getAge();
62  if (expected != actual) {
63  error("Failed update: for employee " + i
64  + " expected age " + expected
65  + " actual age " + actual);
66  }
67  }
68  tx.commit();
69  failOnError();
70  }
71 
72  public void testBlindUpdate() {
73  tx.begin();
74  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
75  Employee e = session.newInstance(Employee.class);
76  // set primary key (required for blind update)
77  e.setId(i);
78  // change age
79  e.setAge(NUMBER_TO_INSERT - i);
80  // send the change to the database
81  session.updatePersistent(e);
82  }
83  tx.commit();
84 
85  // now verify that the changes were committed
86  tx.begin();
87  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
88  Employee e = session.find(Employee.class, i);
89  // verify age
90  int expected = NUMBER_TO_INSERT - i;
91  int actual = e.getAge();
92  if (expected != actual) {
93  error("Failed update: for employee " + i
94  + " expected age " + expected
95  + " actual age " + actual);
96  }
97  }
98  tx.commit();
99  failOnError();
100  }
101 
102  public void testUpdateAll() {
103  List<Employee> employees = new ArrayList<Employee>();
104  tx.begin();
105  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
106  Employee e = session.find(Employee.class, i);
107  // change age
108  e.setAge(NUMBER_TO_INSERT - i);
109  employees.add(e);
110  }
111  // send the changes to the database
112  session.updatePersistentAll(employees);
113  tx.commit();
114 
115  // now verify that the changes were committed
116  tx.begin();
117  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
118  Employee e = session.find(Employee.class, i);
119  // verify age
120  int expected = NUMBER_TO_INSERT - i;
121  int actual = e.getAge();
122  if (expected != actual) {
123  error("Failed update: for employee " + i
124  + " expected age " + expected
125  + " actual age " + actual);
126  }
127  }
128  tx.commit();
129  failOnError();
130  }
131 
132  public void testBlindUpdateAll() {
133  List<Employee> employees = new ArrayList<Employee>();
134  tx.begin();
135  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
136  Employee e = session.newInstance(Employee.class);
137  // set primary key (required for blind update)
138  e.setId(i);
139  // change age
140  e.setAge(NUMBER_TO_INSERT - i);
141  employees.add(e);
142  }
143  // send the changes to the database
144  session.updatePersistentAll(employees);
145  tx.commit();
146 
147  // now verify that the changes were committed
148  tx.begin();
149  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
150  Employee e = session.find(Employee.class, i);
151  // verify age
152  int expected = NUMBER_TO_INSERT - i;
153  int actual = e.getAge();
154  if (expected != actual) {
155  error("Failed update: for employee " + i
156  + " expected age " + expected
157  + " actual age " + actual);
158  }
159  }
160  tx.commit();
161  failOnError();
162  }
163 
164  public void testUpdateAllAutocommit() {
165  List<Employee> employees = new ArrayList<Employee>();
166  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
167  Employee e = session.find(Employee.class, i);
168  // change age
169  e.setAge(NUMBER_TO_INSERT - i);
170  employees.add(e);
171  }
172  // send the changes to the database in a single autocommit transaction
173  session.updatePersistentAll(employees);
174 
175  // now verify that the changes were committed
176  tx.begin();
177  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
178  Employee e = session.find(Employee.class, i);
179  // verify age
180  int expected = NUMBER_TO_INSERT - i;
181  int actual = e.getAge();
182  if (expected != actual) {
183  error("Failed update: for employee " + i
184  + " expected age " + expected
185  + " actual age " + actual);
186  }
187  }
188  tx.commit();
189  failOnError();
190  }
191 
192  public void testBlindUpdateAllAutocommit() {
193  List<Employee> employees = new ArrayList<Employee>();
194  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
195  Employee e = session.newInstance(Employee.class);
196  // set primary key (required for blind update)
197  e.setId(i);
198  // change age
199  e.setAge(NUMBER_TO_INSERT - i);
200  employees.add(e);
201  }
202  // send the changes to the database in a single autocommit transaction
203  session.updatePersistentAll(employees);
204 
205  // now verify that the changes were committed
206  tx.begin();
207  for (int i = 0; i < NUMBER_TO_INSERT; ++i) {
208  Employee e = session.find(Employee.class, i);
209  // verify age
210  int expected = NUMBER_TO_INSERT - i;
211  int actual = e.getAge();
212  if (expected != actual) {
213  error("Failed update: for employee " + i
214  + " expected age " + expected
215  + " actual age " + actual);
216  }
217  }
218  tx.commit();
219  failOnError();
220  }
221 
222 }