use of com.yahoo.elide.core.datastore.inmemory.InMemoryDataStore in project elide by yahoo.
the class ElideCustomSerdeRegistrationTest method testRegisterCustomSerde.
@Test
public void testRegisterCustomSerde() {
// Create a fake Elide. Don't actually bind any entities.
HashMapDataStore wrapped = new HashMapDataStore(DefaultClassScanner.getInstance(), String.class.getPackage());
InMemoryDataStore store = new InMemoryDataStore(wrapped);
ElideSettings elideSettings = new ElideSettingsBuilder(store).withEntityDictionary(EntityDictionary.builder().build()).build();
Elide elide = new Elide(elideSettings);
elide.doScans();
assertNotNull(CoerceUtil.lookup(Dummy.class));
assertNotNull(CoerceUtil.lookup(DummyTwo.class));
assertNotNull(CoerceUtil.lookup(DummyThree.class));
}
use of com.yahoo.elide.core.datastore.inmemory.InMemoryDataStore in project elide by yahoo.
the class SubscriptionDataFetcherTest method runSubscription.
/**
* Run a subscription.
* @param request The subscription query.
* @return A discrete list of results returned from the subscription.
*/
protected List<ExecutionResult> runSubscription(String request) {
InMemoryDataStore inMemoryDataStore = new InMemoryDataStore(dataStore);
DataStoreTransaction tx = inMemoryDataStore.beginTransaction();
GraphQLProjectionInfo projectionInfo = new SubscriptionEntityProjectionMaker(settings, new HashMap<>(), NO_VERSION).make(request);
GraphQLRequestScope requestScope = new GraphQLRequestScope(baseUrl, tx, null, NO_VERSION, settings, projectionInfo, UUID.randomUUID(), null);
ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(request).localContext(requestScope).build();
ExecutionResult executionResult = api.execute(executionInput);
if (!(executionResult.getData() instanceof Publisher)) {
return List.of(executionResult);
}
Publisher<ExecutionResult> resultPublisher = executionResult.getData();
requestScope.getTransaction().commit(requestScope);
if (resultPublisher == null) {
return List.of(executionResult);
}
List<ExecutionResult> results = new ArrayList<>();
AtomicReference<Subscription> subscriptionRef = new AtomicReference<>();
AtomicReference<Throwable> errorRef = new AtomicReference<>();
resultPublisher.subscribe(new Subscriber<ExecutionResult>() {
@Override
public void onSubscribe(Subscription subscription) {
subscriptionRef.set(subscription);
subscription.request(1);
}
@Override
public void onNext(ExecutionResult executionResult) {
results.add(executionResult);
subscriptionRef.get().request(1);
}
@Override
public void onError(Throwable t) {
errorRef.set(t);
}
@Override
public void onComplete() {
// NOOP
}
});
return results;
}
Aggregations