use of joynr.interlanguagetest.TestInterfaceBroadcastInterface.BroadcastWithFilteringBroadcastAdapter in project joynr by bmwcarit.
the class IltConsumerFilteredBroadcastSubscriptionTest method callSubscribeBroadcastWithFiltering.
@SuppressWarnings("checkstyle:methodlength")
@Test
public void callSubscribeBroadcastWithFiltering() {
Future<String> subscriptionIdFuture;
String subscriptionId;
int minIntervalMs = 0;
int maxIntervalMs = 10000;
long validityMs = 60000;
int alertAfterIntervalMs = 20000;
int publicationTtlMs = 5000;
OnChangeWithKeepAliveSubscriptionQos subscriptionQos = new OnChangeWithKeepAliveSubscriptionQos().setMinIntervalMs(minIntervalMs).setMaxIntervalMs(maxIntervalMs).setValidityMs(validityMs).setAlertAfterIntervalMs(alertAfterIntervalMs).setPublicationTtlMs(publicationTtlMs);
boolean result;
LOG.info(name.getMethodName() + "");
try {
BroadcastWithFilteringBroadcastFilterParameters filterParameters = new BroadcastWithFilteringBroadcastFilterParameters();
String stringOfInterst = "fireBroadcast";
filterParameters.setStringOfInterest(stringOfInterst);
String[] stringArrayOfInterest = IltUtil.createStringArray();
String json;
try {
LOG.info(name.getMethodName() + " - objectMapper is " + objectMapper);
LOG.info(name.getMethodName() + " - objectMapper stringArrayOfInterest " + stringArrayOfInterest);
json = objectMapper.writeValueAsString(stringArrayOfInterest);
} catch (JsonProcessingException je) {
fail(name.getMethodName() + " - FAILED - got exception when serializing stringArrayOfInterest" + je.getMessage());
return;
}
filterParameters.setStringArrayOfInterest(json);
ExtendedTypeCollectionEnumerationInTypeCollection enumerationOfInterest = ExtendedTypeCollectionEnumerationInTypeCollection.ENUM_2_VALUE_EXTENSION_FOR_TYPECOLLECTION;
try {
json = objectMapper.writeValueAsString(enumerationOfInterest);
} catch (JsonProcessingException je) {
fail(name.getMethodName() + " - FAILED - got exception when serializing enumerationOfInterest" + je.getMessage());
return;
}
filterParameters.setEnumerationOfInterest(json);
StructWithStringArray structWithStringArrayOfInterest = IltUtil.createStructWithStringArray();
try {
json = objectMapper.writeValueAsString(structWithStringArrayOfInterest);
} catch (JsonProcessingException je) {
fail(name.getMethodName() + " - FAILED - got exception when serializing structWithStringArrayOfInterest" + je.getMessage());
return;
}
filterParameters.setStructWithStringArrayOfInterest(json);
StructWithStringArray[] structWithStringArrayArrayOfInterest = IltUtil.createStructWithStringArrayArray();
try {
json = objectMapper.writeValueAsString(structWithStringArrayArrayOfInterest);
} catch (JsonProcessingException je) {
fail(name.getMethodName() + " - FAILED - got exception when serializing structWithStringArrayArrayOfInterest" + je.getMessage());
return;
}
filterParameters.setStructWithStringArrayArrayOfInterest(json);
subscriptionIdFuture = testInterfaceProxy.subscribeToBroadcastWithFilteringBroadcast(new BroadcastWithFilteringBroadcastAdapter() {
@Override
public void onReceive(String stringOut, String[] stringArrayOut, ExtendedTypeCollectionEnumerationInTypeCollection enumerationOut, StructWithStringArray structWithStringArrayOut, StructWithStringArray[] structWithStringArrayArrayOut) {
LOG.info(name.getMethodName() + " - callback - got broadcast");
if (!IltUtil.checkStringArray(stringArrayOut)) {
subscribeBroadcastWithFilteringCallbackResult = false;
} else if (enumerationOut != ExtendedTypeCollectionEnumerationInTypeCollection.ENUM_2_VALUE_EXTENSION_FOR_TYPECOLLECTION) {
LOG.info(name.getMethodName() + " - callback - invalid content");
subscribeBroadcastWithFilteringCallbackResult = false;
} else if (!IltUtil.checkStructWithStringArray(structWithStringArrayOut)) {
LOG.info(name.getMethodName() + " - callback - invalid content");
subscribeBroadcastWithFilteringCallbackResult = false;
} else if (!IltUtil.checkStructWithStringArrayArray(structWithStringArrayArrayOut)) {
LOG.info(name.getMethodName() + " - callback - invalid content");
subscribeBroadcastWithFilteringCallbackResult = false;
} else {
LOG.info(name.getMethodName() + " - callback - content OK");
subscribeBroadcastWithFilteringCallbackResult = true;
}
subscribeBroadcastWithFilteringCallbackDone = true;
}
@Override
public void onError(SubscriptionException error) {
LOG.info(name.getMethodName() + " - callback - error");
subscribeBroadcastWithFilteringCallbackResult = false;
subscribeBroadcastWithFilteringCallbackDone = true;
}
}, subscriptionQos, filterParameters);
subscriptionId = subscriptionIdFuture.get(10000);
LOG.info(name.getMethodName() + " - subscription successful, subscriptionId = " + subscriptionId);
LOG.info(name.getMethodName() + " - Waiting one second");
Thread.sleep(1000);
LOG.info(name.getMethodName() + " - Wait done, invoking fire method");
String stringArg = "fireBroadcast";
testInterfaceProxy.methodToFireBroadcastWithFiltering(stringArg);
LOG.info(name.getMethodName() + " - fire method invoked");
// should have been called ahead anyway
if (subscribeBroadcastWithFilteringCallbackDone == 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 (!subscribeBroadcastWithFilteringCallbackDone) {
fail(name.getMethodName() + " - FAILED - callback did not get called in time");
result = false;
} else if (subscribeBroadcastWithFilteringCallbackResult) {
LOG.info(name.getMethodName() + " - callback got called and received expected publication");
result = true;
} else {
fail(name.getMethodName() + " - FAILED - callback got called but received unexpected error or publication content");
result = false;
}
// get out, if first test run failed
if (result == false) {
return;
}
// reset counter for 2nd test
subscribeBroadcastWithFilteringCallbackResult = false;
subscribeBroadcastWithFilteringCallbackDone = false;
LOG.info(name.getMethodName() + " - invoking fire method with wrong stringArg");
stringArg = "doNotfireBroadcast";
testInterfaceProxy.methodToFireBroadcastWithFiltering(stringArg);
LOG.info(name.getMethodName() + " - fire method invoked");
// should have been called ahead anyway
if (subscribeBroadcastWithFilteringCallbackDone == 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 (!subscribeBroadcastWithFilteringCallbackDone) {
LOG.info(name.getMethodName() + " - callback did not get called in time (expected)");
result = true;
} else {
fail(name.getMethodName() + " - FAILED - callback got called unexpectedly");
result = false;
}
// try to unsubscribe
try {
testInterfaceProxy.unsubscribeFromBroadcastWithFilteringBroadcast(subscriptionId);
LOG.info(name.getMethodName() + " - unsubscribe successful");
} catch (Exception e) {
fail(name.getMethodName() + " - FAILED - caught unexpected exception on unsubscribe: " + e.getMessage());
result = false;
}
if (!result) {
LOG.info(name.getMethodName() + " - FAILED");
} else {
LOG.info(name.getMethodName() + " - OK");
}
return;
} catch (Exception e) {
// also catches InterruptedException from Thread.sleep() call
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
printWriter.flush();
fail(name.getMethodName() + " - FAILED - caught unexpected exception: " + stringWriter.toString());
return;
}
}
Aggregations