]> review.fuel-infra Code Review - packages/trusty/mysql-wsrep-5.6.git/blob
2be71bae8b867ad097e14d8881399aa2fe466c49
[packages/trusty/mysql-wsrep-5.6.git] /
1 /*
2  *  Copyright (c) 2011, 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.LongvarbinaryPK;
24
25 public class LongvarbinaryPKTest extends AbstractClusterJTest {
26
27     protected int NUMBER_OF_INSTANCES = 15;
28     protected List<LongvarbinaryPK> instances = new ArrayList<LongvarbinaryPK>();
29
30     @Override
31     public void localSetUp() {
32         createSessionFactory();
33         session = sessionFactory.getSession();
34         tx = session.currentTransaction();
35         try {
36             tx.begin();
37             session.deletePersistentAll(LongvarbinaryPK.class);
38             tx.commit();
39         } catch (Throwable t) {
40             // ignore errors while deleting
41         }
42         createInstances();
43         addTearDownClasses(LongvarbinaryPK.class);
44     }
45
46     public void test() {
47         insert();
48         find();
49         update();
50         delete();
51         failOnError();
52     }
53
54     /** Insert all instances.
55      */
56     protected void insert() {
57         session.makePersistentAll(instances);
58     }
59
60     /** Find all instances.
61      */
62     protected void find() {
63         for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
64             byte[] key = getPK(i);
65             LongvarbinaryPK result = session.find(LongvarbinaryPK.class, key);
66             verify(result, i, false);
67         }
68     }
69
70     /** Blind update every fourth instance.
71      */
72     protected void update() {
73         // update the instances
74         for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
75             if (0 == i % 4) {
76                 LongvarbinaryPK instance = createInstance(i);
77                 instance.setName(getValue(NUMBER_OF_INSTANCES - i));
78                 session.updatePersistent(instance);
79                 verify(instance, i, true);
80             }
81         }
82         // verify the updated instances
83         for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
84             if (0 == i % 4) {
85                 byte[] key = getPK(i);
86                 LongvarbinaryPK instance = session.find(LongvarbinaryPK.class, key);
87                 verify(instance, i, true);
88             }
89         }
90     }
91
92     /** Blind delete every fifth instance.
93      */
94     protected void delete() {
95         // delete the instances
96         for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
97             if (0 == i % 5) {
98                 LongvarbinaryPK instance = createInstance(i);
99                 session.deletePersistent(instance);
100             }
101         }
102         // verify they have been deleted
103         for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
104             if (0 == i % 5) {
105                 byte[] key = getPK(i);
106                 LongvarbinaryPK instance = session.find(LongvarbinaryPK.class, key);
107                 errorIfNotEqual("Failed to delete instance: " + i, null, instance);
108             }
109         }
110     }
111
112     /** The strategy for instances is for the "instance number" to create 
113      * the keys by creating a byte[] with the encoded number.
114      */
115     protected void createInstances() {
116         for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
117             LongvarbinaryPK instance = createInstance(i);
118             if (getDebug()) System.out.println(toString(instance));
119             instances.add(instance);
120         }
121     }
122
123     /** Create an instance of LongvarbinaryPK.
124      * @param index the index to use to generate data
125      * @return the instance
126      */
127     protected LongvarbinaryPK createInstance(int index) {
128         LongvarbinaryPK instance = session.newInstance(LongvarbinaryPK.class);
129         instance.setId(getPK(index));
130         instance.setNumber(index);
131         instance.setName(getValue(index));
132         return instance;
133     }
134
135     protected String toString(LongvarbinaryPK instance) {
136         StringBuffer result = new StringBuffer();
137         result.append("LongvarbinaryPK[");
138         result.append(toString(instance.getId()));
139         result.append("]: ");
140         result.append(instance.getNumber());
141         result.append(", \"");
142         result.append(instance.getName());
143         result.append("\".");
144         return result.toString();
145     }
146
147     protected byte[] getPK(int index) {
148         return new byte[] {0, (byte)(index/256), (byte)(index%256)};
149     }
150
151     protected String getValue(int index) {
152         return "Value " + index;
153     }
154
155     protected void verify(LongvarbinaryPK instance, int index, boolean updated) {
156         errorIfNotEqual("id failed", toString(getPK(index)), toString(instance.getId()));
157         errorIfNotEqual("number failed", index, instance.getNumber());
158         if (updated) {
159             errorIfNotEqual("Value failed", getValue(NUMBER_OF_INSTANCES - index), instance.getName());
160         } else {
161             errorIfNotEqual("Value failed", getValue(index), instance.getName());
162
163         }
164     }
165
166     private String toString(byte[] id) {
167         StringBuilder builder = new StringBuilder();
168         for (int i = 0; i < id.length; ++i) {
169             builder.append(String.valueOf(id[i]));
170             builder.append('-');
171         }
172         return builder.toString();
173     }
174
175 }