/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg.replay;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import java.io.File;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import org.fudgemsg.FudgeContext;
import org.fudgemsg.FudgeMsg;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.threeten.bp.OffsetDateTime;
import org.threeten.bp.ZoneOffset;
import org.threeten.bp.format.DateTimeFormatter;
import com.google.common.collect.Sets;
import com.opengamma.bbg.livedata.LoggedReferenceDataProvider;
import com.opengamma.bbg.util.MockReferenceDataProvider;
import com.opengamma.util.fudgemsg.OpenGammaFudgeContext;
import com.opengamma.util.test.TestGroup;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class BloombergRefDataCollectorTest {
private static final String WATCH_LIST_FILE = "watchListTest.txt";
private static final String FIELD_LIST_FILE = "fieldListTest.txt";
private static final FudgeContext s_fudgeContext = OpenGammaFudgeContext.getInstance();
private BloombergRefDataCollector _refDataCollector;
private File _outputFile;
@BeforeMethod
public void setUp(Method m) throws Exception {
MockReferenceDataProvider refDataProvider = new MockReferenceDataProvider();
refDataProvider.addExpectedField("SECURITY_TYP");
refDataProvider.addResult("QQQQ US Equity", "SECURITY_TYP", "ETP");
refDataProvider.addResult("/buid/EQ0082335400001000", "SECURITY_TYP", "ETP");
File watchListFile = new File(BloombergRefDataCollectorTest.class.getResource(WATCH_LIST_FILE).toURI());
File fieldListFile = new File(BloombergRefDataCollectorTest.class.getResource(FIELD_LIST_FILE).toURI());
String outfileName = getClass().getSimpleName() + "-" + Thread.currentThread().getName() +
"-" + OffsetDateTime.now(ZoneOffset.UTC).toString(DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss'Z'"));
_outputFile = File.createTempFile(outfileName, null);
_outputFile.deleteOnExit();
_refDataCollector = new BloombergRefDataCollector(s_fudgeContext, watchListFile, refDataProvider, fieldListFile, _outputFile);
_refDataCollector.start();
}
@AfterMethod
public void tearDown() throws Exception {
//clean up
_refDataCollector.stop();
}
//-------------------------------------------------------------------------
@Test
public void test() {
LoggedReferenceDataProvider loggedRefDataProvider = new LoggedReferenceDataProvider(s_fudgeContext, _outputFile);
Set<String> securities = Sets.newHashSet("QQQQ US Equity", "/buid/EQ0082335400001000");
Set<String> fields = Collections.singleton("SECURITY_TYP");
Map<String, FudgeMsg> refDataMap = loggedRefDataProvider.getReferenceData(securities, fields);
Set<String> testSecurities = refDataMap.keySet();
assertEquals(2, testSecurities.size());
assertTrue(testSecurities.containsAll(securities));
for (String security : testSecurities) {
FudgeMsg fieldData = refDataMap.get(security);
String securityType = fieldData.getString("SECURITY_TYP");
assertEquals("ETP", securityType);
}
}
}