/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.bbg.livedata; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; import java.util.Map; import java.util.Set; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import com.google.common.collect.Sets; import com.opengamma.bbg.referencedata.ReferenceDataProvider; import com.opengamma.bbg.test.BloombergLiveDataServerUtils; import com.opengamma.bbg.util.BloombergDataUtils; import com.opengamma.core.id.ExternalSchemes; import com.opengamma.id.ExternalId; import com.opengamma.id.ExternalIdBundle; import com.opengamma.livedata.normalization.NormalizationRuleSet; import com.opengamma.livedata.resolver.JmsTopicNameResolveRequest; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.INTEGRATION) public class BloombergJmsTopicNameResolverTest { private BloombergLiveDataServer _server; @BeforeClass public void setUpClass() { _server = BloombergLiveDataServerUtils.startTestServer(BloombergJmsTopicNameResolverTest.class); } @AfterClass public void tearDownClass() { BloombergLiveDataServerUtils.stopTestServer(_server); } //------------------------------------------------------------------------- @Test(enabled = false) private void testResolve(NormalizationRuleSet rules) { ReferenceDataProvider rdp = _server.getReferenceDataProvider(); BloombergIdResolver idResolver = new BloombergIdResolver(rdp); BloombergJmsTopicNameResolver topicNameResolver = new BloombergJmsTopicNameResolver(rdp); ExternalId aaplEquity = idResolver.resolve( ExternalIdBundle.of(ExternalSchemes.bloombergTickerSecurityId("AAPL US Equity"))); String spec = topicNameResolver.resolve(new JmsTopicNameResolveRequest(aaplEquity, rules)); assertEquals("LiveData.Bloomberg.Equity.NASDAQ GS.AAPL" + rules.getJmsTopicSuffix(), spec); ExternalId usDomesticBond = idResolver.resolve( ExternalIdBundle.of(ExternalSchemes.cusipSecurityId("607059AT9"))); spec = topicNameResolver.resolve(new JmsTopicNameResolveRequest(usDomesticBond, rules)); assertEquals("LiveData.Bloomberg.Bond.MOBIL CORP.607059AT9" + rules.getJmsTopicSuffix(), spec); ExternalId globalBond = idResolver.resolve( ExternalIdBundle.of(ExternalSchemes.cusipSecurityId("4581X0AD0"))); spec = topicNameResolver.resolve(new JmsTopicNameResolveRequest(globalBond, rules)); assertEquals("LiveData.Bloomberg.Bond.INTER-AMERICAN DEVEL BK.US4581X0AD07" + rules.getJmsTopicSuffix(), spec); Set<ExternalId> options = BloombergDataUtils.getOptionChain(rdp, "AAPL US Equity"); assertFalse(options.isEmpty()); ExternalId aaplOptionId = options.iterator().next(); ExternalId aaplOption = idResolver.resolve(ExternalIdBundle.of(aaplOptionId)); spec = topicNameResolver.resolve(new JmsTopicNameResolveRequest(aaplOption, rules)); assertTrue(spec.startsWith("LiveData.Bloomberg.EquityOption.AAPL US.")); assertTrue(spec.endsWith(rules.getJmsTopicSuffix())); // bulk request Map<JmsTopicNameResolveRequest, String> request2TopicName = topicNameResolver.resolve( Sets.newHashSet( new JmsTopicNameResolveRequest(aaplEquity, rules), new JmsTopicNameResolveRequest(usDomesticBond, rules))); assertEquals(2, request2TopicName.size()); assertEquals("LiveData.Bloomberg.Equity.NASDAQ GS.AAPL" + rules.getJmsTopicSuffix(), request2TopicName.get(new JmsTopicNameResolveRequest(aaplEquity, rules))); assertEquals("LiveData.Bloomberg.Bond.MOBIL CORP.607059AT9" + rules.getJmsTopicSuffix(), request2TopicName.get(new JmsTopicNameResolveRequest(usDomesticBond, rules))); } @Test public void emptyNormalization() { testResolve(new NormalizationRuleSet("")); } @Test public void nonEmptyNormalization() { testResolve(new NormalizationRuleSet("Test")); } }