1 package org.simantics.db.tests.regression.bugs;
5 import org.junit.After;
6 import org.junit.Before;
8 import org.simantics.db.ReadGraph;
9 import org.simantics.db.Resource;
10 import org.simantics.db.Session;
11 import org.simantics.db.WriteGraph;
12 import org.simantics.db.WriteOnlyGraph;
13 import org.simantics.db.common.request.ReadRequest;
14 import org.simantics.db.common.request.WriteOnlyRequest;
15 import org.simantics.db.common.request.WriteRequest;
16 import org.simantics.db.exception.DatabaseException;
17 import org.simantics.db.service.ClusterControl;
18 import org.simantics.db.testing.annotation.Fails;
19 import org.simantics.db.testing.cases.FreshDatabaseTest;
20 import org.simantics.db.testing.common.Terminator;
21 import org.simantics.db.testing.common.TestBase;
22 import org.simantics.db.testing.impl.Configuration;
23 import org.simantics.layer0.Layer0;
25 public class Issue3199Test1 extends FreshDatabaseTest {
26 static int RESOURCE_COUNT = Configuration.get().i3199ResourceCount;
27 static boolean DEBUG = false;
30 ClusterControl clusterControl;
32 private Terminator terminator;
36 public void setUp() throws Exception {
38 terminator = new Terminator(3);
43 public void tearDown() throws Exception {
50 public void testSimanticsIssue3199()
51 throws DatabaseException {
52 session = getSession();
53 session.syncRequest(new Init());
54 session.syncRequest(new Create());
55 session.syncRequest(new Query());
57 class Init extends WriteRequest {
59 public void perform(WriteGraph g) throws DatabaseException {
60 Layer0 l0 = Layer0.getInstance(g);
61 Resource rl = g.getResource(TestBase.ROOT_LIBRARY_URI);
62 testRoot = g.newResource();
63 g.claim(testRoot, l0.InstanceOf, l0.Library);
64 g.claim(rl, l0.ConsistsOf, testRoot);
67 class Create extends WriteOnlyRequest {
69 public void perform(WriteOnlyGraph g) throws DatabaseException {
70 Layer0 l0 = Layer0.getInstance(getSession());
71 Resource root = g.newResource();
72 g.claim(testRoot, l0.ConsistsOf, l0.PartOf, root);
73 for (int i = 0; i < RESOURCE_COUNT; i++) {
74 Resource item = g.newResource();
75 g.claim(item, l0.InstanceOf, null, l0.String);
76 g.claim(item, l0.IsWeaklyRelatedTo, null, l0.Abstract);
77 g.claim(item, l0.IsWeaklyRelatedTo, null, l0.Assertion);
78 g.claim(item, l0.IsWeaklyRelatedTo, null, l0.Graph);
79 g.claim(item, l0.IsWeaklyRelatedTo, null, l0.Entity);
80 g.claim(item, l0.IsWeaklyRelatedTo, null, l0.Relation);
81 g.claimValue(item, UUID.randomUUID().toString());
82 g.claim(root, l0.ConsistsOf, l0.PartOf, item);
86 class Query extends ReadRequest {
88 public void run(ReadGraph g) throws DatabaseException {
89 Layer0 l0 = Layer0.getInstance(g);
90 for (Resource r : g.getObjects(testRoot, l0.ConsistsOf)) {
92 System.out.println("Resource " + r);
93 for (Resource rr : g.getObjects(r, l0.ConsistsOf)) {
94 if (!g.isInstanceOf(rr, l0.String))
95 fail("Resource " + rr + " is not instance of String.");
96 if (!g.isInstanceOf(rr, l0.Entity))
97 fail("Resource " + rr + " is not instance of Entity.");