/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg.security;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
import java.util.Set;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.opengamma.bbg.BloombergConnector;
import com.opengamma.bbg.BloombergConstants;
import com.opengamma.bbg.referencedata.impl.BloombergReferenceDataProvider;
import com.opengamma.bbg.test.BloombergTestUtils;
import com.opengamma.core.id.ExternalSchemes;
import com.opengamma.core.security.Security;
import com.opengamma.financial.security.equity.EquitySecurity;
import com.opengamma.financial.timeseries.exchange.DefaultExchangeDataProvider;
import com.opengamma.financial.timeseries.exchange.ExchangeDataProvider;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.provider.security.SecurityProvider;
import com.opengamma.util.money.Currency;
import com.opengamma.util.test.TestGroup;
/**
* Base case for testing BloombergSecuritySource.
*/
@Test(groups = TestGroup.INTEGRATION)
public class BloombergBpipeSecurityProviderTest {
private static final String IBM_TICKER = "IBM US Equity";
private BloombergReferenceDataProvider _refDataProvider;
private SecurityProvider _securityProvider;
@BeforeClass
public void setupSecurityProvider() throws Exception {
_securityProvider = createSecurityProvider();
}
protected SecurityProvider createSecurityProvider() throws Exception {
BloombergConnector connector = BloombergTestUtils.getBloombergBipeConnector();
BloombergReferenceDataProvider refDataProvider = new BloombergReferenceDataProvider(connector);
refDataProvider.start();
_refDataProvider = refDataProvider;
ExchangeDataProvider exchangeProvider = DefaultExchangeDataProvider.getInstance();
return new BloombergSecurityProvider(refDataProvider, exchangeProvider);
}
@AfterClass
public void terminateSecurityProvider() throws Exception {
stopSecurityProvider(_securityProvider);
_securityProvider = null;
}
protected void stopSecurityProvider(SecurityProvider provider) throws Exception {
if (_refDataProvider != null) {
BloombergReferenceDataProvider dataProvider = _refDataProvider;
_refDataProvider = null;
dataProvider.stop();
}
}
@Test(enabled = true)
public void ibmEquity() throws Exception {
assertIbm(_securityProvider.getSecurity(ExternalIdBundle.of(ExternalSchemes.bloombergTickerSecurityId(IBM_TICKER))));
}
protected void assertIbm(Security sec) {
assertNotNull(sec);
assertTrue(sec instanceof EquitySecurity);
EquitySecurity finSecurity = (EquitySecurity) sec;
assertNotNull(finSecurity.getRequiredPermissions());
Set<String> permissions = finSecurity.getRequiredPermissions();
assertEquals(1, permissions.size());
assertTrue(permissions.contains(BloombergConstants.BLOOMBERG_DATA_SOURCE_NAME + ":" + 39491));
assertEquals("INTL BUSINESS MACHINES CORP", finSecurity.getName());
assertEquals("EQUITY", finSecurity.getSecurityType());
assertEquals("IBM", finSecurity.getShortName());
assertEquals("NEW YORK STOCK EXCHANGE, INC.", finSecurity.getExchange());
assertEquals("XNYS", finSecurity.getExchangeCode());
assertEquals(Currency.USD, finSecurity.getCurrency());
// assertEquals("45102010", finSecurity.getGicsCode().toString());
assertEquals(IBM_TICKER, finSecurity.getExternalIdBundle().getExternalId(ExternalSchemes.BLOOMBERG_TICKER).getValue());
assertEquals("EQ0010080100001000", finSecurity.getExternalIdBundle().getExternalId(ExternalSchemes.BLOOMBERG_BUID).getValue());
assertEquals("459200101", finSecurity.getExternalIdBundle().getExternalId(ExternalSchemes.CUSIP).getValue());
assertEquals("US4592001014", finSecurity.getExternalIdBundle().getExternalId(ExternalSchemes.ISIN).getValue());
assertEquals("2005973", finSecurity.getExternalIdBundle().getExternalId(ExternalSchemes.SEDOL1).getValue());
}
}