ops.add(
new JpaOp("insA") {
public void run(int countA, int countB) {
for (int i = 0; i < countA; i++) {
final A o = new A();
o.setId(i);
em.persist(o);
}
}
});
ops.add(
new JpaOp("insB0") {
public void run(int countA, int countB) {
for (int i = 0; i < countB; i++) {
final B0 o = new B0();
o.setId(i);
em.persist(o);
}
}
});
ops.add(
new JpaOp("setAByPK") {
public void run(int countA, int countB) {
for (int i = 0; i < countA; i++) {
final A o = em.find(A.class, i);
assert o != null;
o.setCint((int)i);
o.setClong((long)i);
o.setCfloat((float)i);
o.setCdouble((double)i);
}
}
});
ops.add(
new JpaOp("setB0ByPK") {
public void run(int countA, int countB) {
for (int i = 0; i < countB; i++) {
final B0 o = em.find(B0.class, i);
assert o != null;
o.setCint((int)i);
o.setClong((long)i);
o.setCfloat((float)i);
o.setCdouble((double)i);
}
}
});
ops.add(
new JpaOp("getAByPK") {
public void run(int countA, int countB) {
for (int i = 0; i < countA; i++) {
final A o = em.find(A.class, i);
assert o != null;
final int id = o.getId();
verify(id == i);
final int j = checkFields(o);
verify(j == id);
}
}
});
ops.add(
new JpaOp("getB0ByPK") {
public void run(int countA, int countB) {
for (int i = 0; i < countB; i++) {
final B0 o = em.find(B0.class, i);
assert o != null;
final int id = o.getId();
verify(id == i);
final int j = checkFields(o);
verify(j == id);
}
}
});
ops.add(
new JpaOp("setB0->A") {
public void run(int countA, int countB) {
for (int i = 0; i < countB; i++) {
final B0 b0 = em.find(B0.class, i);
assert b0 != null;
int aId = i % countA;
final A a = em.find(A.class, aId);
assert a != null;
b0.setA(a);
}
}
});
ops.add(
new JpaOp("navB0->A") {
public void run(int countA, int countB) {
for (int i = 0; i < countB; i++) {
final B0 b0 = em.find(B0.class, i);
assert b0 != null;
final A a = b0.getA();
assert a != null;
final int id = a.getId();
verify(id == i % countA);
final int j = checkFields(a);
verify(j == id);
}
}
});
ops.add(
new JpaOp("nullB0->A") {
public void run(int countA, int countB) {
for (int i = 0; i < countB; i++) {
final B0 b0 = em.find(B0.class, i);
assert b0 != null;
b0.setA(null);
}
}
});
ops.add(
new JpaOp("setA->B0") {
public void run(int countA, int countB) {
for (int i = 0; i < countA; i++) {
final A a = em.find(A.class, i);
assert a != null;
final Collection<B0> b0s = new ArrayList<B0>();
for (int j = i; j < countB; j += countA) {
//assert i == j % countA;
final B0 b0 = em.find(B0.class, j);
assert b0 != null;
b0s.add(b0);
}
a.setB0s(b0s);
}
}
});
// this operation fails on an empty PersistenceContext
if (allowExtendedPC) {
ops.add(
new JpaOp("navA->B0") {
public void run(int countA, int countB) {
for (int i = 0; i < countA; i++) {
final A a = em.find(A.class, i);
assert a != null;
final Collection<B0> b0s = a.getB0s();
assert b0s != null;
// fails on an empty PC (no managed relationships)
verify(b0s.size() > 0);
for (B0 b0 : b0s) {
assert b0 != null;
final int id = b0.getId();
verify(id % countA == i);
final int j = checkFields(b0);
verify(j == id);
}
}
}
});
}
ops.add(
new JpaOp("nullA->B0") {
public void run(int countA, int countB) {
for (int i = 0; i < countA; i++) {
final A a = em.find(A.class, i);
assert a != null;
a.setB0s(null);
}
}
});
ops.add(
new JpaOp("delB0ByPK") {
public void run(int countA, int countB) {
for (int i = 0; i < countB; i++) {
final B0 o = em.find(B0.class, i);
assert o != null;
em.remove(o);
}
}
});
ops.add(
new JpaOp("delAByPK") {
public void run(int countA, int countB) {
for (int i = 0; i < countA; i++) {
final A o = em.find(A.class, i);
assert o != null;
em.remove(o);
}
}
});
ops.add(
new JpaOp("insA_attr") {
public void run(int countA, int countB) {
for (int i = 0; i < countA; i++) {
final A o = new A();
o.setId(i);
o.setCint((int)-i);
o.setClong((long)-i);
o.setCfloat((float)-i);
o.setCdouble((double)-i);
o.setCstring(String.valueOf(i));
em.persist(o);
}
}
});
ops.add(
new JpaOp("insB0_attr") {
public void run(int countA, int countB) {
for (int i = 0; i < countB; i++) {
final B0 o = new B0();
o.setId(i);
o.setCint((int)-i);
o.setClong((long)-i);
o.setCfloat((float)-i);
o.setCdouble((double)-i);
o.setCstring(String.valueOf(i));
em.persist(o);
}
}
});