/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.master.historicaltimeseries.impl; import static com.opengamma.master.historicaltimeseries.impl.HistoricalTimeSeriesRatingFieldNames.DATA_PROVIDER_NAME; import static com.opengamma.master.historicaltimeseries.impl.HistoricalTimeSeriesRatingFieldNames.DATA_SOURCE_NAME; import static com.opengamma.master.historicaltimeseries.impl.HistoricalTimeSeriesRatingFieldNames.STAR_VALUE; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import java.util.ArrayList; import java.util.List; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.opengamma.core.config.impl.ConfigItem; import com.opengamma.id.ExternalIdBundleWithDates; import com.opengamma.master.config.ConfigMasterUtils; import com.opengamma.master.config.impl.InMemoryConfigMaster; import com.opengamma.master.config.impl.MasterConfigSource; import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesInfoDocument; import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesMaster; import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesResolutionResult; import com.opengamma.util.test.TestGroup; /** * Test {@link DefaultHistoricalTimeSeriesSelector}. */ @Test(groups = TestGroup.UNIT) public class DefaultHistoricalTimeSeriesResolverTest { private static final int TS_DATASET_SIZE = 1; private static final String LCLOSE_OBSERVATION_TIME = "LCLOSE"; private static final String DEFAULT_DATA_SOURCE = "BLOOMBERG"; private static final String DEFAULT_DATA_PROVIDER = "CMPL"; private static final String[] DATA_FIELDS = new String[] { "PX_LAST", "VOLUME" }; private static final String[] DATA_PROVIDERS = new String[] { "UNKNOWN", "CMPL", "CMPT" }; private static final String[] DATA_SOURCES = new String[] { "BLOOMBERG", "REUTERS", "JPM" }; private static final String CONFIG_DOC_NAME = "TEST"; private DefaultHistoricalTimeSeriesResolver _infoResolver; private HistoricalTimeSeriesMaster _htsMaster = new InMemoryHistoricalTimeSeriesMaster(); @BeforeMethod public void setUp() throws Exception { InMemoryConfigMaster configMaster = new InMemoryConfigMaster(); populateConfigMaster(configMaster); _infoResolver = new DefaultHistoricalTimeSeriesResolver(new DefaultHistoricalTimeSeriesSelector(new MasterConfigSource(configMaster)), _htsMaster); } private void populateConfigMaster(InMemoryConfigMaster configMaster) { ConfigItem<HistoricalTimeSeriesRating> testDoc = ConfigItem.of(createRules()); testDoc.setName(CONFIG_DOC_NAME); ConfigMasterUtils.storeByName(configMaster, testDoc); } private HistoricalTimeSeriesRating createRules() { List<HistoricalTimeSeriesRatingRule> rules = new ArrayList<HistoricalTimeSeriesRatingRule>(); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_SOURCE_NAME, "BLOOMBERG", 3)); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_SOURCE_NAME, "REUTERS", 2)); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_SOURCE_NAME, "JPM", 1)); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_SOURCE_NAME, "XXX", 0)); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_SOURCE_NAME, STAR_VALUE, 0)); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_PROVIDER_NAME, "CMPL", 3)); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_PROVIDER_NAME, "CMPT", 2)); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_PROVIDER_NAME, "CMPN", 1)); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_PROVIDER_NAME, "EXCH_LSE", 0)); rules.add(HistoricalTimeSeriesRatingRule.of(DATA_PROVIDER_NAME, STAR_VALUE, 0)); return HistoricalTimeSeriesRating.of(rules); } @AfterMethod public void tearDown() throws Exception { _infoResolver = null; _htsMaster = null; } //------------------------------------------------------------------------- public void test() throws Exception { List<ExternalIdBundleWithDates> identifiers = HistoricalTimeSeriesMasterPopulator.populateAndTestMaster(_htsMaster, TS_DATASET_SIZE, DATA_SOURCES, DATA_PROVIDERS, DATA_FIELDS, LCLOSE_OBSERVATION_TIME); for (ExternalIdBundleWithDates identifierBundleWithDates : identifiers) { HistoricalTimeSeriesResolutionResult resolutionResult = _infoResolver.resolve(identifierBundleWithDates.toBundle(), null, null, null, "PX_LAST", CONFIG_DOC_NAME); assertNotNull(resolutionResult); HistoricalTimeSeriesInfoDocument doc = _htsMaster.get(resolutionResult.getHistoricalTimeSeriesInfo().getUniqueId()); assertEquals(DEFAULT_DATA_SOURCE, doc.getInfo().getDataSource()); assertEquals(DEFAULT_DATA_PROVIDER, doc.getInfo().getDataProvider()); assertEquals("PX_LAST", doc.getInfo().getDataField()); } } }