use of joynr.interlanguagetest.TestInterfaceAsync.MethodWithMultipleStructParametersFuture in project joynr by bmwcarit.
the class IltConsumerAsyncMethodTest method callMethodWithMultipleStructParametersAsync.
@Test
public void callMethodWithMultipleStructParametersAsync() {
LOG.info(name.getMethodName() + "");
try {
// setup input parameters
ExtendedStructOfPrimitives extendedStructOfPrimitivesArg = IltUtil.createExtendedStructOfPrimitives();
BaseStruct baseStructArg = IltUtil.createBaseStruct();
MethodWithMultipleStructParametersCallback callback = new MethodWithMultipleStructParametersCallback() {
@Override
public void onSuccess(BaseStructWithoutElements baseStructWithoutElementsOut, ExtendedExtendedBaseStruct extendedExtendedBaseStructOut) {
// check results
if (!IltUtil.checkBaseStructWithoutElements(baseStructWithoutElementsOut)) {
methodWithMultipleStructParametersAsyncCallbackResult = false;
methodWithMultipleStructParametersAsyncCallbackDone = true;
LOG.info(name.getMethodName() + " - callback - invalid baseStructWithoutElementsOut");
LOG.info(name.getMethodName() + " - FAILED");
return;
}
if (!IltUtil.checkExtendedExtendedBaseStruct(extendedExtendedBaseStructOut)) {
methodWithMultipleStructParametersAsyncCallbackResult = false;
methodWithMultipleStructParametersAsyncCallbackDone = true;
LOG.info(name.getMethodName() + " - callback - invalid extendedExtendedBaseStructOut");
LOG.info(name.getMethodName() + " - FAILED");
return;
}
methodWithMultipleStructParametersAsyncCallbackResult = true;
methodWithMultipleStructParametersAsyncCallbackDone = true;
}
@Override
public void onFailure(JoynrRuntimeException error) {
methodWithMultipleStructParametersAsyncCallbackResult = false;
methodWithMultipleStructParametersAsyncCallbackDone = true;
if (error instanceof JoynrRuntimeException) {
LOG.info(name.getMethodName() + " - callback - caught exception " + ((JoynrRuntimeException) error).getMessage());
} else {
LOG.info(name.getMethodName() + " - callback - caught exception");
}
LOG.info(name.getMethodName() + " - FAILED");
}
};
MethodWithMultipleStructParametersFuture future = testInterfaceProxy.methodWithMultipleStructParameters(callback, extendedStructOfPrimitivesArg, baseStructArg);
try {
long timeoutInMilliseconds = 8000;
LOG.info(name.getMethodName() + " - about to call future.get");
MethodWithMultipleStructParametersReturned result = future.get(timeoutInMilliseconds);
if (result == null) {
fail(name.getMethodName() + " - FAILED - got no result");
return;
}
LOG.info(name.getMethodName() + " - returned from future.get");
// check results from future
if (!IltUtil.checkBaseStructWithoutElements(result.baseStructWithoutElementsOut)) {
fail(name.getMethodName() + " - FAILED - got invalid result - baseStructWithoutElementsOut");
return;
}
if (!IltUtil.checkExtendedExtendedBaseStruct(result.extendedExtendedBaseStructOut)) {
fail(name.getMethodName() + " - FAILED - got invalid result - extendedExtendedBaseStructOut");
return;
}
LOG.info(name.getMethodName() + " - future result checks OK");
// should have been called ahead anyway
if (methodWithMultipleStructParametersAsyncCallbackDone == false) {
LOG.info(name.getMethodName() + " - about to wait for a second for callback");
Thread.sleep(1000);
LOG.info(name.getMethodName() + " - wait for callback is over");
} else {
LOG.info(name.getMethodName() + " - callback already done");
}
if (methodWithMultipleStructParametersAsyncCallbackDone == false) {
fail(name.getMethodName() + " - FAILED - callback NOT done");
return;
}
if (methodWithMultipleStructParametersAsyncCallbackResult == false) {
fail(name.getMethodName() + " - FAILED - callback reported error");
return;
}
LOG.info(name.getMethodName() + " - callback has set OK flags");
} catch (InterruptedException | JoynrRuntimeException | ApplicationException e) {
fail(name.getMethodName() + " - FAILED - caught unexpected exception: " + e.getMessage());
return;
}
} catch (Exception e) {
fail(name.getMethodName() + " - FAILED - caught unexpected exception: " + e.getMessage());
return;
}
LOG.info(name.getMethodName() + " - OK");
}
Aggregations