]> gerrit.simantics Code Review - simantics/platform.git/blob - tests/org.simantics.db.tests/src/org/simantics/db/tests/regression/bugs/Issue3199Test1.java
Added missing org.simantics.db.{tests,testing} plug-ins.
[simantics/platform.git] / tests / org.simantics.db.tests / src / org / simantics / db / tests / regression / bugs / Issue3199Test1.java
1 package org.simantics.db.tests.regression.bugs;
2
3 import java.util.UUID;
4
5 import org.junit.After;
6 import org.junit.Before;
7 import org.junit.Test;
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;
24
25 public class Issue3199Test1 extends FreshDatabaseTest {
26     static int RESOURCE_COUNT = Configuration.get().i3199ResourceCount;
27     static boolean DEBUG = false;
28     Session session;
29     Resource testRoot;
30     ClusterControl clusterControl;
31     
32     private Terminator terminator;
33     
34     @Before
35     @Override
36     public void setUp() throws Exception {
37         super.setUp();
38         terminator = new Terminator(3);
39     }
40
41     @After
42     @Override
43     public void tearDown() throws Exception {
44         terminator.disarm();
45         super.tearDown();
46     }
47     
48     @Test
49     @Fails
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());
56     }
57     class Init extends WriteRequest {
58         @Override
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);
65         }
66     }
67     class Create extends WriteOnlyRequest {
68         @Override
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);
83             }
84         }
85     }
86     class Query extends ReadRequest {
87         @Override
88         public void run(ReadGraph g) throws DatabaseException {
89             Layer0 l0 = Layer0.getInstance(g);
90             for (Resource r : g.getObjects(testRoot, l0.ConsistsOf)) {
91                 if (DEBUG)
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.");
98                 }
99             }
100         }
101     }
102 }