Search in sources :

Example 6 with InvalidKBException

use of ai.grakn.exception.InvalidKBException in project grakn by graknlabs.

the class TxFactoryJanusTest method testMultithreadedRetrievalOfGraphs.

@Test
public void testMultithreadedRetrievalOfGraphs() {
    Set<Future> futures = new HashSet<>();
    ExecutorService pool = Executors.newFixedThreadPool(10);
    when(session.keyspace()).thenReturn(Keyspace.of("simplekeyspace"));
    TxFactoryJanus factory = new TxFactoryJanus(session);
    for (int i = 0; i < 200; i++) {
        futures.add(pool.submit(() -> {
            GraknTxJanus graph = factory.open(GraknTxType.WRITE);
            assertFalse("Grakn graph is closed", graph.isClosed());
            assertFalse("Internal tinkerpop graph is closed", graph.getTinkerPopGraph().isClosed());
            graph.putEntityType("A Thing");
            try {
                graph.close();
            } catch (InvalidKBException e) {
                e.printStackTrace();
            }
        }));
    }
    boolean exceptionThrown = false;
    for (Future future : futures) {
        try {
            future.get();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
            exceptionThrown = true;
        }
        assertFalse(exceptionThrown);
    }
}
Also used : GraknTxJanus(ai.grakn.kb.internal.GraknTxJanus) ExecutorService(java.util.concurrent.ExecutorService) Future(java.util.concurrent.Future) InvalidKBException(ai.grakn.exception.InvalidKBException) ExecutionException(java.util.concurrent.ExecutionException) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 7 with InvalidKBException

use of ai.grakn.exception.InvalidKBException in project grakn by graknlabs.

the class PostProcessingTest method whenCreatingDuplicateResources_EnsureTheyAreMergedInPost.

@Test
public void whenCreatingDuplicateResources_EnsureTheyAreMergedInPost() throws InvalidKBException, InterruptedException, JsonProcessingException {
    String value = "1";
    String sample = "Sample";
    // Create GraknTx With Duplicate Resources
    EmbeddedGraknTx<?> tx = session.open(GraknTxType.WRITE);
    AttributeType<String> attributeType = tx.putAttributeType(sample, AttributeType.DataType.STRING);
    Attribute<String> attribute = attributeType.putAttribute(value);
    tx.commitSubmitNoLogs();
    tx = session.open(GraknTxType.WRITE);
    assertEquals(1, attributeType.instances().count());
    // Check duplicates have been created
    Set<Vertex> resource1 = createDuplicateResource(tx, attributeType, attribute);
    Set<Vertex> resource2 = createDuplicateResource(tx, attributeType, attribute);
    Set<Vertex> resource3 = createDuplicateResource(tx, attributeType, attribute);
    Set<Vertex> resource4 = createDuplicateResource(tx, attributeType, attribute);
    assertEquals(5, attributeType.instances().count());
    // Attribute vertex index
    String resourceIndex = resource1.iterator().next().value(INDEX.name()).toString();
    // Merge the attribute sets
    Set<Vertex> merged = Sets.newHashSet();
    merged.addAll(resource1);
    merged.addAll(resource2);
    merged.addAll(resource3);
    merged.addAll(resource4);
    tx.close();
    // Casting sets as ConceptIds
    Set<ConceptId> resourceConcepts = merged.stream().map(c -> ConceptId.of(Schema.PREFIX_VERTEX + c.id().toString())).collect(toSet());
    // Create Commit Log
    CommitLog commitLog = CommitLog.createDefault(tx.keyspace());
    commitLog.attributes().put(resourceIndex, resourceConcepts);
    // Submit it
    postProcessor.submit(commitLog);
    // Force running the PP job
    engine.server().backgroundTaskRunner().tasks().forEach(BackgroundTask::run);
    Thread.sleep(2000);
    tx = session.open(GraknTxType.READ);
    // Check it's fixed
    assertEquals(1, tx.getAttributeType(sample).instances().count());
    tx.close();
}
Also used : InvalidKBException(ai.grakn.exception.InvalidKBException) BeforeClass(org.junit.BeforeClass) GraknTestUtil(ai.grakn.util.GraknTestUtil) CountPostProcessor(ai.grakn.engine.task.postprocessing.CountPostProcessor) SampleKBLoader(ai.grakn.util.SampleKBLoader) Keyspace(ai.grakn.Keyspace) Concept(ai.grakn.concept.Concept) PostProcessingTestUtils.createDuplicateResource(ai.grakn.test.engine.postprocessing.PostProcessingTestUtils.createDuplicateResource) EntityType(ai.grakn.concept.EntityType) GraknConfig(ai.grakn.engine.GraknConfig) Attribute(ai.grakn.concept.Attribute) AttributeType(ai.grakn.concept.AttributeType) After(org.junit.After) ConceptId(ai.grakn.concept.ConceptId) ClassRule(org.junit.ClassRule) RedisCountStorage(ai.grakn.engine.task.postprocessing.redisstorage.RedisCountStorage) INDEX(ai.grakn.util.Schema.VertexProperty.INDEX) Collectors.toSet(java.util.stream.Collectors.toSet) EngineContext(ai.grakn.test.rule.EngineContext) Before(org.junit.Before) GraknTxType(ai.grakn.GraknTxType) MetricRegistry(com.codahale.metrics.MetricRegistry) Set(java.util.Set) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) Test(org.junit.Test) Vertex(org.apache.tinkerpop.gremlin.structure.Vertex) Sets(com.google.common.collect.Sets) PostProcessor(ai.grakn.engine.task.postprocessing.PostProcessor) CommitLog(ai.grakn.kb.log.CommitLog) GraknConfigKey(ai.grakn.GraknConfigKey) IndexPostProcessor(ai.grakn.engine.task.postprocessing.IndexPostProcessor) BackgroundTask(ai.grakn.engine.task.BackgroundTask) EmbeddedGraknSession(ai.grakn.factory.EmbeddedGraknSession) EmbeddedGraknTx(ai.grakn.kb.internal.EmbeddedGraknTx) Assume.assumeTrue(org.junit.Assume.assumeTrue) RedisIndexStorage(ai.grakn.engine.task.postprocessing.redisstorage.RedisIndexStorage) Schema(ai.grakn.util.Schema) Assert.assertEquals(org.junit.Assert.assertEquals) Vertex(org.apache.tinkerpop.gremlin.structure.Vertex) CommitLog(ai.grakn.kb.log.CommitLog) ConceptId(ai.grakn.concept.ConceptId) BackgroundTask(ai.grakn.engine.task.BackgroundTask) Test(org.junit.Test)

Aggregations

InvalidKBException (ai.grakn.exception.InvalidKBException)7 Test (org.junit.Test)6 GraknTx (ai.grakn.GraknTx)5 GraknTxType (ai.grakn.GraknTxType)5 Attribute (ai.grakn.concept.Attribute)5 AttributeType (ai.grakn.concept.AttributeType)5 EntityType (ai.grakn.concept.EntityType)5 Schema (ai.grakn.util.Schema)5 HashSet (java.util.HashSet)5 Set (java.util.Set)5 Assert.assertEquals (org.junit.Assert.assertEquals)5 GraknSession (ai.grakn.GraknSession)4 Concept (ai.grakn.concept.Concept)4 ConceptId (ai.grakn.concept.ConceptId)4 Entity (ai.grakn.concept.Entity)4 Label (ai.grakn.concept.Label)4 RelationshipType (ai.grakn.concept.RelationshipType)4 Role (ai.grakn.concept.Role)4 GraknTestUtil (ai.grakn.util.GraknTestUtil)4 Matchers.empty (org.hamcrest.Matchers.empty)4