Package com.opengamma.bbg.test

Source Code of com.opengamma.bbg.test.BloombergTestUtils

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

import static com.opengamma.bbg.replay.BloombergTick.FIELDS_KEY;
import static org.testng.AssertJUnit.assertEquals;

import java.util.Properties;
import java.util.Random;
import java.util.Set;

import org.apache.commons.lang.StringUtils;
import org.fudgemsg.FudgeMsgFactory;
import org.fudgemsg.MutableFudgeMsg;

import com.bloomberglp.blpapi.SessionOptions;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.bbg.BloombergConnector;
import com.opengamma.bbg.referencedata.ReferenceDataProvider;
import com.opengamma.bbg.referencedata.cache.MongoDBValueCachingReferenceDataProvider;
import com.opengamma.bbg.referencedata.impl.BloombergReferenceDataProvider;
import com.opengamma.bbg.util.BloombergDataUtils;
import com.opengamma.id.ExternalId;
import com.opengamma.util.mongo.MongoConnector;
import com.opengamma.util.mongo.MongoConnectorFactoryBean;
import com.opengamma.util.test.TestProperties;

/**
* Test utilities for Bloomberg.
*/
public class BloombergTestUtils {

  /**
   * Restricted constructor.
   */
  private BloombergTestUtils() {
  }

  //-------------------------------------------------------------------------
  /**
   * Creates a Bloomberg connector for testing.
   *
   * @return the connector, not null
   */
  public static BloombergConnector getBloombergConnector() {
    return new BloombergConnector("BloombergTestUtils", getSessionOptions());
  }

  /**
   * Creates a Bloomberg reference data provider for testing.
   * This must be started before use by the caller.
   * This must be closed after use by the caller.
   * It is typically also wrapped in a caching provider.
   *
   * @return the provider, not null
   */
  public static BloombergReferenceDataProvider getBloombergReferenceDataProvider() {
    BloombergConnector bbgConnector = BloombergTestUtils.getBloombergConnector();
    return new BloombergReferenceDataProvider(bbgConnector);
  }

  /**
   * Creates Bloomberg session options for testing.
   *
   * @return the session options, not null
   */
  private static SessionOptions getSessionOptions() {
    SessionOptions options = new SessionOptions();
    Properties properties = TestProperties.getTestProperties();
    String serverHost = properties.getProperty("bbgServer.host");
    if (StringUtils.isBlank(serverHost)) {
      throw new OpenGammaRuntimeException("bloomberg.host is missing in tests.properties");
    }
    String serverPort = properties.getProperty("bbgServer.port");
    if (StringUtils.isBlank(serverPort)) {
      throw new OpenGammaRuntimeException("bloomberg.port is missing in tests.properties");
    }
    options.setServerHost(serverHost);
    options.setServerPort(Integer.parseInt(serverPort));
    return options;
  }

  //-------------------------------------------------------------------------
  /**
   * Creates a Mongo connector for testing.
   *
   * @return the connector, not null
   */
  public static MongoConnector getMongoConnector() {
    Properties testProperties = TestProperties.getTestProperties();
    String mongoHost = testProperties.getProperty("mongoServer.host");
    int mongoPort = Integer.parseInt(testProperties.getProperty("mongoServer.port"));
    MongoConnectorFactoryBean mongoFactory = new MongoConnectorFactoryBean();
    mongoFactory.setName("BloombergTestUtils");
    mongoFactory.setHost(mongoHost);
    mongoFactory.setPort(mongoPort);
    mongoFactory.setDatabaseName("testReferenceData");
    mongoFactory.setCollectionSuffix("bloomberg-security-loader-test-context");
    return mongoFactory.getObjectCreating();
  }

  /**
   * Creates a Mongo caching reference data provider for testing.
   *
   * @return the provider, not null
   */
  public static ReferenceDataProvider getMongoCachingReferenceDataProvider(BloombergReferenceDataProvider bbgProvider) {
    MongoConnector mongoConnector = BloombergTestUtils.getMongoConnector();
    return new MongoDBValueCachingReferenceDataProvider(bbgProvider, mongoConnector);
  }

  //-------------------------------------------------------------------------
  /**
   * Creates a random tick.
   *
   * @param random  the source of randomness, not null
   * @param fudgeMsgFactory  the Fudge message factory, not null
   * @return the message, not null
   */
  public static MutableFudgeMsg makeRandomStandardTick(Random random, FudgeMsgFactory fudgeMsgFactory) {
    MutableFudgeMsg result = fudgeMsgFactory.newMessage();
    MutableFudgeMsg bbgTickAsFudgMsg = fudgeMsgFactory.newMessage();
    bbgTickAsFudgMsg.add("BID", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("ASK", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("BEST_BID", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("BEST_ASK", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("IND_BID_FLAG", false);
    bbgTickAsFudgMsg.add("IND_ASK_FLAG", false);
    bbgTickAsFudgMsg.add("ASK_SIZE_TDY", String.valueOf(random.nextInt()));
    bbgTickAsFudgMsg.add("BID_SIZE_TDY", String.valueOf(random.nextInt()));
    bbgTickAsFudgMsg.add("BID_TDY", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("ASK_TDY", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("ASK_SIZE", String.valueOf(random.nextInt()));
    bbgTickAsFudgMsg.add("BID_SIZE", String.valueOf(random.nextInt()));
    bbgTickAsFudgMsg.add("LAST_PRICE", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("LAST_TRADE", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("VOLUME", String.valueOf(random.nextInt()));
    bbgTickAsFudgMsg.add("HIGH", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("LOW", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("OPEN", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("OPEN_TDY", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("VOLUME_TDY", "17925");
    bbgTickAsFudgMsg.add("LAST_TRADE_TDY", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("HIGH_TDY", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("LOW_TDY", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("EXCH_CODE_LAST", "D");
    bbgTickAsFudgMsg.add("LAST_PX_LOCAL_EXCH_SOURCE_RT", "UD");
    bbgTickAsFudgMsg.add("API_MACHINE", "n166");
    bbgTickAsFudgMsg.add("TRADING_DT_REALTIME", "2009-12-08+00:00");
    bbgTickAsFudgMsg.add("EQY_TURNOVER_REALTIME", "211460.515625");
    bbgTickAsFudgMsg.add("RT_API_MACHINE", "n166");
    bbgTickAsFudgMsg.add("RT_PRICING_SOURCE", "US");
    bbgTickAsFudgMsg.add("IS_DELAYED_STREAM", true);
    bbgTickAsFudgMsg.add("MKTDATA_EVENT_TYPE", "SUMMARY");
    bbgTickAsFudgMsg.add("PREV_SES_LAST_PRICE", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("RT_PX_CHG_NET_1D", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("RT_PX_CHG_PCT_1D", String.valueOf(random.nextDouble()));
    bbgTickAsFudgMsg.add("SES_START", "14:30:00.000+00:00");
    bbgTickAsFudgMsg.add("SES_END", "21:30:00.000+00:00");
    result.add(FIELDS_KEY, bbgTickAsFudgMsg);
    return result;
  }

  /**
   * Gets an example equity option ticker directly from Bloomberg reference data.
   *
   * @return the ticker, not null
   */
  public static String getSampleEquityOptionTicker() {
    BloombergReferenceDataProvider rdp = new BloombergReferenceDataProvider(getBloombergConnector());
    rdp.start();
   
    Set<ExternalId> options = BloombergDataUtils.getOptionChain(rdp, "AAPL US Equity");
    assertEquals(false, options.isEmpty());
    ExternalId aaplOptionId = options.iterator().next();
   
    rdp.stop();
   
    return aaplOptionId.getValue();
  }

}
TOP

Related Classes of com.opengamma.bbg.test.BloombergTestUtils

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.