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);
}
}
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();
}
Aggregations