public void testBrokenSubscribe() throws Exception {
ExternalId broken = ExternalId.of(ExternalSchemes.BLOOMBERG_TICKER, "USSV15F Curncy");//Broken
ExternalId working = ExternalId.of(ExternalSchemes.BLOOMBERG_TICKER, "GBP Curncy");
List<ExternalId> instruments = Lists.newArrayList(broken, working);
CollectingLiveDataListener listener = new CollectingLiveDataListener(instruments.size(), 3);
subscribe(_liveDataClient, listener, instruments);
assertTrue(listener.waitUntilEnoughUpdatesReceived(30000));
unsubscribe(_liveDataClient, listener, instruments);
LiveDataSubscriptionResponse strongSub = null;
LiveDataSubscriptionResponse weakSub = null;
for (LiveDataSubscriptionResponse response : listener.getSubscriptionResponses()) {
if (response.getRequestedSpecification().getIdentifiers().contains(working)) {
assertEquals(LiveDataSubscriptionResult.SUCCESS, response.getSubscriptionResult());
strongSub = response;
} else if (response.getRequestedSpecification().getIdentifiers().contains(broken)) {
assertEquals(LiveDataSubscriptionResult.NOT_PRESENT, response.getSubscriptionResult());
weakSub = response;
} else {
throw new Exception("Unexpected subscription response");
}
}
assertFalse(strongSub.getFullyQualifiedSpecification().equals(weakSub.getFullyQualifiedSpecification()));
assertFalse(strongSub.getTickDistributionSpecification().equals(weakSub.getTickDistributionSpecification()));
List<LiveDataValueUpdate> allUpdates = listener.getValueUpdates();
List<LiveDataValueUpdate> brokenUpdates = listener.getValueUpdates(getLiveDataSpec(_liveDataClient, broken));
List<LiveDataValueUpdate> workingUpdates = listener.getValueUpdates(getLiveDataSpec(_liveDataClient, working));
assertEquals(0, brokenUpdates.size());
assertEquals(allUpdates.size(), brokenUpdates.size() + workingUpdates.size());
}