Search in sources :

Example 6 with CommitLog

use of ai.grakn.kb.log.CommitLog in project grakn by graknlabs.

the class IndexPostProcessorTest method whenAddingCommitLogToPostProcessor_EnsureIndexStorageIsUpdated.

@Test
public void whenAddingCommitLogToPostProcessor_EnsureIndexStorageIsUpdated() {
    // Create Sample Data For CommitLog
    String index1 = "index1";
    String index2 = "index2";
    Set<ConceptId> ids1 = Arrays.asList("a", "b", "c").stream().map(ConceptId::of).collect(Collectors.toSet());
    Set<ConceptId> ids2 = Arrays.asList("1", "2", "3").stream().map(ConceptId::of).collect(Collectors.toSet());
    HashMap<String, Set<ConceptId>> attributes = new HashMap<>();
    attributes.put(index1, ids1);
    attributes.put(index2, ids2);
    // Create Commit Log
    Keyspace keyspace = Keyspace.of("whatakeyspace");
    CommitLog commitLog = CommitLog.create(keyspace, Collections.emptyMap(), attributes);
    // Call the post processor
    indexPostProcessor.updateIndices(commitLog);
    // Check index storage is updated
    verify(indexStorage, Mockito.times(1)).addIndex(keyspace, index1, ids1);
    verify(indexStorage, Mockito.times(1)).addIndex(keyspace, index2, ids2);
}
Also used : Set(java.util.Set) HashMap(java.util.HashMap) Keyspace(ai.grakn.Keyspace) CommitLog(ai.grakn.kb.log.CommitLog) ConceptId(ai.grakn.concept.ConceptId) Test(org.junit.Test)

Example 7 with CommitLog

use of ai.grakn.kb.log.CommitLog 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

CommitLog (ai.grakn.kb.log.CommitLog)7 Test (org.junit.Test)5 Keyspace (ai.grakn.Keyspace)3 ConceptId (ai.grakn.concept.ConceptId)3 Set (java.util.Set)2 GraknConfigKey (ai.grakn.GraknConfigKey)1 GraknTxType (ai.grakn.GraknTxType)1 Attribute (ai.grakn.concept.Attribute)1 AttributeType (ai.grakn.concept.AttributeType)1 Concept (ai.grakn.concept.Concept)1 EntityType (ai.grakn.concept.EntityType)1 GraknConfig (ai.grakn.engine.GraknConfig)1 BackgroundTask (ai.grakn.engine.task.BackgroundTask)1 CountPostProcessor (ai.grakn.engine.task.postprocessing.CountPostProcessor)1 IndexPostProcessor (ai.grakn.engine.task.postprocessing.IndexPostProcessor)1 PostProcessor (ai.grakn.engine.task.postprocessing.PostProcessor)1 RedisCountStorage (ai.grakn.engine.task.postprocessing.redisstorage.RedisCountStorage)1 RedisIndexStorage (ai.grakn.engine.task.postprocessing.redisstorage.RedisIndexStorage)1 InvalidKBException (ai.grakn.exception.InvalidKBException)1 EmbeddedGraknSession (ai.grakn.factory.EmbeddedGraknSession)1