18 package testsuite.clusterj;
20 import com.mysql.clusterj.ClusterJUserException;
22 import java.util.Arrays;
24 import testsuite.clusterj.model.LongIntStringIndex;
52 protected int PK_MODULUS = 3;
53 protected long PRETTY_BIG_NUMBER = 1000000000000000L;
56 protected boolean getCleanupAfterTest() {
60 public void testInAndBetween() {
61 inAndBetweenQuery(
"longix",
new Object[] {1000000000000000L, 0L},
"intix", 1, 2,
"idx_long_int_string", 3, 4, 5, 6, 7, 8);
62 inAndBetweenQuery(
"longix", Arrays.asList(
new Object[] {1000000000000000L, 0L}),
"stringix",
"1",
"4",
"idx_long_int_string", 1, 2, 4, 5, 7, 8);
66 public void testBetweenAndIn() {
67 betweenAndInQuery(
"longix", 0L, 3000000000000000L,
"intix",
new Object[] {2, 0},
"idx_long_int_string", 0, 1, 2, 6, 7, 8, 9);
68 betweenAndInQuery(
"longix", 0L, 1000000000000000L,
"intix", Arrays.asList(
new Object[] {2, 1}),
"idx_long_int_string", 3, 4, 5, 6, 7, 8);
72 public void testPartialBoundsAndEqual() {
73 greaterThanAnd1ExtraQuery(
"longix", 0,
"intix", extraEqualPredicateProvider, 0,
"idx_long_int_string", 9);
74 greaterEqualAnd1ExtraQuery(
"longix", 0,
"intix", extraEqualPredicateProvider, 0,
"idx_long_int_string", 0, 1, 2, 9);
75 lessThanAnd1ExtraQuery(
"longix", 1000000000000000L,
"intix", extraEqualPredicateProvider, 0,
"idx_long_int_string", 0, 1, 2);
76 lessEqualAnd1ExtraQuery(
"longix", 1000000000000000L,
"intix", extraEqualPredicateProvider, 0,
"idx_long_int_string", 0, 1, 2, 9);
80 public void testGapBoundsAndEqual() {
81 greaterThanAnd1ExtraQuery(
"longix", 0,
"stringix", extraEqualPredicateProvider,
"0",
"idx_long_int_string", 9);
82 greaterEqualAnd1ExtraQuery(
"longix", 0,
"stringix", extraEqualPredicateProvider,
"0",
"idx_long_int_string", 0, 3, 6, 9);
83 lessThanAnd1ExtraQuery(
"longix", 1000000000000000L,
"stringix", extraEqualPredicateProvider,
"0",
"idx_long_int_string", 0, 3, 6);
84 lessEqualAnd1ExtraQuery(
"longix", 1000000000000000L,
"stringix", extraEqualPredicateProvider,
"0",
"idx_long_int_string", 0, 3, 6, 9);
88 public void testNegativeInParameter() {
89 int keys[] =
new int[0];
91 inQuery(
"id", keys,
"PRIMARY", keys);
92 error(
"Query with ''in'' parameter of int[] type should fail.");
93 }
catch (ClusterJUserException e) {
98 if (!message.contains(
"id")) {
99 error(
"Query with ''in'' parameter of int[] type should fail.");
105 public void testPrettyBigIn() {
106 int arraySize = 4096;
107 Integer[] keys =
new Integer[arraySize];
108 for (
int i = 0;
i < arraySize; ++
i) {
111 int[] expectedKeys =
new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
112 inQuery(
"id", keys,
"PRIMARY", expectedKeys);
116 public void testNegativeInTooBig() {
117 int arraySize = 4097;
118 Integer[] keys =
new Integer[arraySize];
119 for (
int i = 0;
i < arraySize; ++
i) {
122 int[] expectedKeys =
new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
124 inQuery(
"id", keys,
"PRIMARY", expectedKeys);
125 error(
"Query with more than 4096 elements should fail.");
126 }
catch (ClusterJUserException e) {
130 String message = e.getMessage();
131 if (!message.contains(
"4097")) {
132 error(
"Query with more than 4096 elements should fail.");
144 for (
int i = 0;
i < number; ++
i) {
147 instances.add(instance);
157 instance.setId(index);
158 instance.setLongix(getPK1(index));
159 instance.setIntix(getPK2(index));
160 instance.setStringix(getPK3(index));
161 instance.setStringvalue(getValue(index));
165 protected long getPK1(
int index) {
166 return PRETTY_BIG_NUMBER * ((index / PK_MODULUS / PK_MODULUS) % PK_MODULUS);
169 protected int getPK2(
int index) {
170 return ((index / PK_MODULUS) % PK_MODULUS);
173 protected String getPK3(
int index) {
174 return "" + (index % PK_MODULUS);
177 protected String getValue(
int index) {
178 return "Value " +
index;
181 protected String toString(LongIntStringIndex instance) {
183 result.append(
"LongIntStringIndex[");
184 result.append(instance.getId());
185 result.append(
"]: ");
186 result.append(instance.getLongix());
188 result.append(instance.getIntix());
189 result.append(
", \"");
190 result.append(instance.getStringix());
191 result.append(
"\", \"");
192 result.append(instance.getStringvalue());
193 result.append(
"\".");
194 return result.toString();