Package com.opengamma.bbg.loader.hts

Source Code of com.opengamma.bbg.loader.hts.BloombergHTSMasterUpdaterTest

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg.loader.hts;

import static com.opengamma.bbg.BloombergConstants.BLOOMBERG_DATA_SOURCE_NAME;
import static com.opengamma.util.time.DateUtils.nextWeekDay;
import static com.opengamma.util.time.DateUtils.previousWeekDay;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import org.threeten.bp.LocalDate;

import com.opengamma.core.historicaltimeseries.HistoricalTimeSeries;
import com.opengamma.id.VersionCorrection;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesInfoDocument;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesMaster;
import com.opengamma.timeseries.date.localdate.LocalDateDoubleTimeSeries;
import com.opengamma.util.test.DbTest;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.tuple.Pair;

/**
* Test.
*/
@Test(groups = TestGroup.UNIT_DB, singleThreaded = true)
public class BloombergHTSMasterUpdaterTest extends AbstractHistoricalTimeSeriesDBTest {
 
  private static final Logger s_logger = LoggerFactory.getLogger(BloombergHTSMasterUpdaterTest.class);
 
  /**
   * Creates an instance specifying the database to run.
   * @param databaseType  the database type
   * @param databaseVersion  the database version
   */
  @Factory(dataProvider = "databases", dataProviderClass = DbTest.class)
  public BloombergHTSMasterUpdaterTest(String databaseType, String databaseVersion) {
    super(databaseType, databaseVersion);
    s_logger.debug("running test for database = {}", databaseType);
  }

  //-------------------------------------------------------------------------
  public void update() throws Exception {
    HistoricalTimeSeriesMaster htsMaster = getHtsMaster();
    BloombergHTSMasterUpdater htsMasterUpdater = getHtsMasterUpdater();
    List<Pair<HistoricalTimeSeriesInfoDocument, HistoricalTimeSeries>> previousSeriesDocs = addTimeSeries();
    htsMasterUpdater.run();
    for (Pair<HistoricalTimeSeriesInfoDocument, HistoricalTimeSeries> previous : previousSeriesDocs) {
      HistoricalTimeSeriesInfoDocument currentDoc = htsMaster.get(previous.getFirst().getObjectId(), VersionCorrection.LATEST);
      assertEquals(previous.getFirst().getUniqueId(), currentDoc.getUniqueId())// document not changed
      HistoricalTimeSeries currentSeries = htsMaster.getTimeSeries(previous.getSecond().getUniqueId(), VersionCorrection.LATEST);
      assertNotNull(currentSeries);
      //will update only for Bloomberg dataSource
      if (previous.getFirst().getInfo().getDataSource().equals(BLOOMBERG_DATA_SOURCE_NAME)) {
        assertEquals(previousWeekDay(), currentSeries.getTimeSeries().getLatestTime());
        LocalDateDoubleTimeSeries previousSeries = previous.getSecond().getTimeSeries();
        final LocalDate previousStart = previousSeries.getEarliestTime();
        final LocalDate previousEnd = previousSeries.getLatestTime();
        assertEquals(previousSeries, currentSeries.getTimeSeries().subSeries(previousStart, true, previousEnd, true));
      } else {
        assertEquals(previous.getSecond().getTimeSeries(), currentSeries.getTimeSeries());
      }
    }
  }

  public void updateGivenDates() throws Exception {
    List<Pair<HistoricalTimeSeriesInfoDocument, HistoricalTimeSeries>> previousSeriesDocs = addTimeSeries();
    final LocalDate previousSeriesEnd = previousWeekDay().minusWeeks(1);
    final LocalDate startDate = nextWeekDay(previousSeriesEnd);
    final LocalDate endDate = nextWeekDay(startDate);
   
    HistoricalTimeSeriesMaster htsMaster = getHtsMaster();
    BloombergHTSMasterUpdater htsMasterUpdater = getHtsMasterUpdater();
   
    htsMasterUpdater.setStartDate(startDate);
    htsMasterUpdater.setEndDate(endDate);
    htsMasterUpdater.run();
    for (Pair<HistoricalTimeSeriesInfoDocument, HistoricalTimeSeries> previous : previousSeriesDocs) {
      HistoricalTimeSeries currentSeries = htsMaster.getTimeSeries(previous.getSecond().getUniqueId(), VersionCorrection.LATEST);
      assertNotNull(currentSeries);
      //will update only for Bloomberg dataSource
      if (previous.getFirst().getInfo().getDataSource().equals(BLOOMBERG_DATA_SOURCE_NAME)) {
        assertEquals(endDate, currentSeries.getTimeSeries().getLatestTime());
        LocalDateDoubleTimeSeries previousSeries = previous.getSecond().getTimeSeries();
        final LocalDate previousStart = previousSeries.getEarliestTime();
        final LocalDate previousEnd = previousSeries.getLatestTime();
        assertEquals(previousSeries, currentSeries.getTimeSeries().subSeries(previousStart, true, previousEnd, true));
      } else {
        assertEquals(previous.getSecond().getTimeSeries().getLatestTime(), currentSeries.getTimeSeries().getLatestTime());
      }
    }
  }

  public void reload() throws Exception {
    List<Pair<HistoricalTimeSeriesInfoDocument, HistoricalTimeSeries>> previousDocs = addTimeSeries();
    HistoricalTimeSeriesMaster htsMaster = getHtsMaster();
    BloombergHTSMasterUpdater htsMasterUpdater = getHtsMasterUpdater();
    //sleep for 1sec because of nano sec accuracy lost in the database
    Thread.sleep(1000);
    htsMasterUpdater.setReload(true);
    htsMasterUpdater.run();
    for (Pair<HistoricalTimeSeriesInfoDocument, HistoricalTimeSeries> previous : previousDocs) {
      HistoricalTimeSeries currentSeries = htsMaster.getTimeSeries(previous.getSecond().getUniqueId(), VersionCorrection.LATEST);
      assertNotNull(currentSeries);
      // after reload time series start date should be same, because the test provider returns
      // time-series with previous start date, but this may be different in production
      assertEquals(previous.getSecond().getTimeSeries().getEarliestTime(), currentSeries.getTimeSeries().getEarliestTime());
      // will reload only for Bloomberg dataSource
      if (previous.getFirst().getInfo().getDataSource().equals(BLOOMBERG_DATA_SOURCE_NAME)) {
        assertTrue(!previous.getSecond().getTimeSeries().equals(currentSeries.getTimeSeries()));
      } else {
        assertEquals(previous.getSecond().getTimeSeries(), currentSeries.getTimeSeries());
      }
    }
  }
}
TOP

Related Classes of com.opengamma.bbg.loader.hts.BloombergHTSMasterUpdaterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.