1 package org.simantics.db.tests.regression.bugs;
6 import org.simantics.db.ReadGraph;
7 import org.simantics.db.Resource;
8 import org.simantics.db.Session;
9 import org.simantics.db.WriteGraph;
10 import org.simantics.db.WriteOnlyGraph;
11 import org.simantics.db.common.request.ReadRequest;
12 import org.simantics.db.common.request.WriteOnlyRequest;
13 import org.simantics.db.common.request.WriteRequest;
14 import org.simantics.db.exception.DatabaseException;
15 import org.simantics.db.service.ClusterControl;
16 import org.simantics.db.testing.base.ExistingDatabaseTest;
17 import org.simantics.db.testing.common.TestBase;
18 import org.simantics.layer0.Layer0;
20 public class SimanticsBug1659Test3 extends ExistingDatabaseTest {
21 static int LOOP_COUNT = 10;
22 static int CLUSTER_COUNT = 20;
23 static int RESOURCE_COUNT = 10000;
24 static boolean DEBUG = false;
27 ClusterControl clusterControl;
29 public void testSimanticsBug1659_3()
30 throws DatabaseException {
31 session = getSession();
32 clusterControl = getSession().getService(ClusterControl.class);
33 session.syncRequest(new Init());
34 session.syncRequest(new CreateWriteOnly());
35 for (int i=0; i<LOOP_COUNT; ++i) {
36 session.syncRequest(new Query());
39 class Init extends WriteRequest {
41 public void perform(WriteGraph g) throws DatabaseException {
42 Layer0 l0 = Layer0.getInstance(g);
43 Resource rl = g.getResource(TestBase.ROOT_LIBRARY_URI);
44 testRoot = g.newResource();
45 g.claim(testRoot, l0.InstanceOf, l0.Library);
46 g.claim(rl, l0.ConsistsOf, testRoot);
49 class CreateWriteOnly extends WriteOnlyRequest {
51 public void perform(WriteOnlyGraph g) throws DatabaseException {
52 Layer0 b = Layer0.getInstance(getSession());
53 for (int j=0; j<CLUSTER_COUNT; ++j) {
54 Resource root = g.newResource();
55 g.claim(testRoot, b.ConsistsOf, b.PartOf, root);
57 for(int i=0; i<RESOURCE_COUNT; i++) {
58 Resource item = g.newResource();
59 g.claim(item, b.InstanceOf, null, b.String);
60 g.claimValue(item, UUID.randomUUID().toString());
61 g.claim(root, b.ConsistsOf, b.PartOf, item);
66 class Query extends ReadRequest {
68 public void run(ReadGraph g) throws DatabaseException {
69 Layer0 l0 = Layer0.getInstance(g);
70 for (Resource r : g.getObjects(testRoot, l0.ConsistsOf)) {
72 System.out.println("Resource " + r);
73 for (Resource rr : g.getObjects(r, l0.ConsistsOf)) {
74 if (!g.isInstanceOf(rr, l0.String))
75 fail("Resource " + rr + " is not instance of String.");
76 if (!g.isInstanceOf(rr, l0.Entity))
77 fail("Resource " + rr + " is not instance of Entity.");