Package com.opengamma.masterdb.portfolio

Source Code of com.opengamma.masterdb.portfolio.AbstractDbPortfolioMasterWorkerTest

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

import static com.opengamma.util.db.DbDateUtils.MAX_SQL_TIMESTAMP;
import static com.opengamma.util.db.DbDateUtils.toSqlTimestamp;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcOperations;
import org.testng.annotations.Test;
import org.threeten.bp.Clock;
import org.threeten.bp.Instant;
import org.threeten.bp.OffsetDateTime;
import org.threeten.bp.ZoneOffset;

import com.opengamma.id.ObjectId;
import com.opengamma.id.UniqueId;
import com.opengamma.master.portfolio.ManageablePortfolio;
import com.opengamma.master.portfolio.ManageablePortfolioNode;
import com.opengamma.master.portfolio.PortfolioDocument;
import com.opengamma.util.test.AbstractDbTest;
import com.opengamma.util.test.TestGroup;

/**
* Base tests for DbPortfolioMasterWorker via DbPortfolioMaster.
*/
@Test(groups = TestGroup.UNIT_DB)
public abstract class AbstractDbPortfolioMasterWorkerTest extends AbstractDbTest {

  private static final Logger s_logger = LoggerFactory.getLogger(AbstractDbPortfolioMasterWorkerTest.class);

  protected DbPortfolioMaster _prtMaster;
  protected Instant _version1Instant;
  protected Instant _version2Instant;
  protected int _totalPortfolios;
  protected int _visiblePortfolios;
  protected int _totalPositions;
  protected OffsetDateTime _now;
  private boolean _includePositions = true;

  public AbstractDbPortfolioMasterWorkerTest(String databaseType, String databaseVersion, boolean readOnly) {
    super(databaseType, databaseVersion);
    s_logger.info("running testcases for {}", databaseType);
  }

  //-------------------------------------------------------------------------
  @Override
  protected void doSetUp() {
    _includePositions = true;
    init();
  }

  @Override
  protected void doTearDown() {
    _prtMaster = null;
  }

  @Override
  protected void doTearDownClass() {
    _prtMaster = null;
  }

  //-------------------------------------------------------------------------
  private void init() {
    _prtMaster = new DbPortfolioMaster(getDbConnector());
   
    _now = OffsetDateTime.now();
    _prtMaster.setClock(Clock.fixed(_now.toInstant(), ZoneOffset.UTC));
    _version1Instant = _now.toInstant().minusSeconds(100);
    _version2Instant = _now.toInstant().minusSeconds(50);
    s_logger.debug("test data now:   {}", _version1Instant);
    s_logger.debug("test data later: {}", _version2Instant);
    final JdbcOperations template = _prtMaster.getDbConnector().getJdbcOperations();
    template.update("INSERT INTO prt_portfolio VALUES (?,?,?,?,?, ?,?,?)",
        101, 101, toSqlTimestamp(_version1Instant), MAX_SQL_TIMESTAMP, toSqlTimestamp(_version1Instant), MAX_SQL_TIMESTAMP, "TestPortfolio101", 25);
    template.update("INSERT INTO prt_portfolio VALUES (?,?,?,?,?, ?,?,?)",
        102, 102, toSqlTimestamp(_version1Instant), MAX_SQL_TIMESTAMP, toSqlTimestamp(_version1Instant), MAX_SQL_TIMESTAMP, "TestPortfolio102", 25);
    template.update("INSERT INTO prt_portfolio VALUES (?,?,?,?,?, ?,?,?)",
        201, 201, toSqlTimestamp(_version1Instant), toSqlTimestamp(_version2Instant), toSqlTimestamp(_version1Instant), MAX_SQL_TIMESTAMP, "TestPortfolio201", 25);
    template.update("INSERT INTO prt_portfolio VALUES (?,?,?,?,?, ?,?,?)",
        202, 201, toSqlTimestamp(_version2Instant), MAX_SQL_TIMESTAMP, toSqlTimestamp(_version2Instant), MAX_SQL_TIMESTAMP, "TestPortfolio202", 25);
    template.update("INSERT INTO prt_portfolio VALUES (?,?,?,?,?, ?,?,?)",
        301, 301, toSqlTimestamp(_version1Instant), MAX_SQL_TIMESTAMP, toSqlTimestamp(_version1Instant), MAX_SQL_TIMESTAMP, "TestPortfolio301", 75);
    _visiblePortfolios = 3;
    _totalPortfolios = 4;
   
    template.update("INSERT INTO prt_node VALUES (?,?,?,?,?, ?,?,?,?,?)",
        111, 111, 101, 101, null, null, 0, 1, 6, "TestNode111");
    template.update("INSERT INTO prt_node VALUES (?,?,?,?,?, ?,?,?,?,?)",
        112, 112, 101, 101, 111, 111, 1, 2, 5, "TestNode112");
    template.update("INSERT INTO prt_node VALUES (?,?,?,?,?, ?,?,?,?,?)",
        113, 113, 101, 101, 112, 112, 2, 3, 4, "TestNode113");
    template.update("INSERT INTO prt_node VALUES (?,?,?,?,?, ?,?,?,?,?)",
        121, 121, 102, 102, null, null, 0, 1, 2, "TestNode121");
    template.update("INSERT INTO prt_node VALUES (?,?,?,?,?, ?,?,?,?,?)",
        211, 211, 201, 201, null, null, 0, 1, 2, "TestNode211");
    template.update("INSERT INTO prt_node VALUES (?,?,?,?,?, ?,?,?,?,?)",
        212, 211, 202, 201, null, null, 0, 1, 2, "TestNode212");
    template.update("INSERT INTO prt_node VALUES (?,?,?,?,?, ?,?,?,?,?)",
        311, 311, 301, 301, null, null, 0, 1, 2, "TestNode311");
   
    template.update("INSERT INTO prt_position VALUES (?,?,?)",
        112, "DbPos", "500");
    template.update("INSERT INTO prt_position VALUES (?,?,?)",
        113, "DbPos", "501");
    template.update("INSERT INTO prt_position VALUES (?,?,?)",
        113, "DbPos", "502");
    template.update("INSERT INTO prt_position VALUES (?,?,?)",
        211, "DbPos", "500");
    template.update("INSERT INTO prt_position VALUES (?,?,?)",
        212, "DbPos", "500");
    template.update("INSERT INTO prt_position VALUES (?,?,?)",
        311, "DbPos", "500");
   
    template.update("INSERT INTO prt_portfolio_attribute VALUES (?,?,?,?,?)",
        10, 101, 101, "K101a", "V101a");
    template.update("INSERT INTO prt_portfolio_attribute VALUES (?,?,?,?,?)",
        11, 101, 101, "K101b", "V101b");
    template.update("INSERT INTO prt_portfolio_attribute VALUES (?,?,?,?,?)",
        12, 102, 102"K102a", "V102a");
    template.update("INSERT INTO prt_portfolio_attribute VALUES (?,?,?,?,?)",
        13, 102, 102, "K102b", "V102b");
   
    _totalPositions = 6;
  }

  //-------------------------------------------------------------------------
  protected void assert101(final PortfolioDocument test, final int depth) {
    UniqueId uniqueId = UniqueId.of("DbPrt", "101", "0");
    assertNotNull(test);
    assertEquals(uniqueId, test.getUniqueId());
    assertEquals(_version1Instant, test.getVersionFromInstant());
    assertEquals(null, test.getVersionToInstant());
    assertEquals(_version1Instant, test.getCorrectionFromInstant());
    assertEquals(null, test.getCorrectionToInstant());
    ManageablePortfolio portfolio = test.getPortfolio();
    assertEquals(uniqueId, portfolio.getUniqueId());
    assertEquals("TestPortfolio101", portfolio.getName());
    ManageablePortfolioNode rootNode = portfolio.getRootNode();
    assertNode111(rootNode, depth, uniqueId);
   
    assertNotNull(portfolio.getAttributes());
    assertEquals(2, portfolio.getAttributes().size());
    assertEquals("V101a", portfolio.getAttributes().get("K101a"));
    assertEquals("V101b", portfolio.getAttributes().get("K101b"));
  }

  protected void assertNode111(final ManageablePortfolioNode node, final int depth, final UniqueId portfolioId) {
    assertEquals(UniqueId.of("DbPrt", "111", "0"), node.getUniqueId());
    assertEquals("TestNode111", node.getName());
    assertEquals(null, node.getParentNodeId());
    assertEquals(portfolioId, node.getPortfolioId());
    assertEquals(0, node.getPositionIds().size());
    if (depth == 0) {
      assertEquals(0, node.getChildNodes().size());
      return;
    }
    assertEquals(1, node.getChildNodes().size());
    ManageablePortfolioNode child112 = node.getChildNodes().get(0);
    assertNode112(child112, depth, portfolioId);
  }

  protected void assertNode112(final ManageablePortfolioNode node, final int depth, final UniqueId portfolioId) {
    assertEquals(UniqueId.of("DbPrt", "112", "0"), node.getUniqueId());
    assertEquals("TestNode112", node.getName());
    assertEquals(UniqueId.of("DbPrt", "111", "0"), node.getParentNodeId());
    assertEquals(portfolioId, node.getPortfolioId());
    if (_includePositions) {
      assertEquals(node.getPositionIds().toString(), 1, node.getPositionIds().size());
      assertEquals(ObjectId.of("DbPos", "500"), node.getPositionIds().get(0));
    } else {
      assertEquals(0, node.getPositionIds().size());
    }
    if (depth == 1) {
      assertEquals(0, node.getChildNodes().size());
      return;
    }
    assertEquals(1, node.getChildNodes().size());
    ManageablePortfolioNode child113 = node.getChildNodes().get(0);
    assertNode113(child113, portfolioId);
  }

  protected void assertNode113(final ManageablePortfolioNode node, final UniqueId portfolioId) {
    assertEquals(UniqueId.of("DbPrt", "113", "0"), node.getUniqueId());
    assertEquals("TestNode113", node.getName());
    assertEquals(UniqueId.of("DbPrt", "112", "0"), node.getParentNodeId());
    assertEquals(portfolioId, node.getPortfolioId());
    assertEquals(0, node.getChildNodes().size());
    if (_includePositions) {
      assertEquals(2, node.getPositionIds().size());
      assertEquals(true, node.getPositionIds().contains(ObjectId.of("DbPos", "501")));
      assertEquals(true, node.getPositionIds().contains(ObjectId.of("DbPos", "502")));
    } else {
      assertEquals(0, node.getPositionIds().size());
    }
  }

  protected void assert102(final PortfolioDocument test) {
    UniqueId uniqueId = UniqueId.of("DbPrt", "102", "0");
    assertNotNull(test);
    assertEquals(uniqueId, test.getUniqueId());
    assertEquals(_version1Instant, test.getVersionFromInstant());
    assertEquals(null, test.getVersionToInstant());
    assertEquals(_version1Instant, test.getCorrectionFromInstant());
    assertEquals(null, test.getCorrectionToInstant());
    ManageablePortfolio portfolio = test.getPortfolio();
    assertEquals(uniqueId, portfolio.getUniqueId());
    assertEquals("TestPortfolio102", portfolio.getName());
   
    assertNotNull(portfolio.getAttributes());
    assertEquals(2, portfolio.getAttributes().size());
    assertEquals("V102a", portfolio.getAttributes().get("K102a"));
    assertEquals("V102b", portfolio.getAttributes().get("K102b"));
  }

  protected void assert201(final PortfolioDocument test) {
    UniqueId uniqueId = UniqueId.of("DbPrt", "201", "0");
    assertNotNull(test);
    assertEquals(uniqueId, test.getUniqueId());
    assertEquals(_version1Instant, test.getVersionFromInstant());
    assertEquals(_version2Instant, test.getVersionToInstant());
    assertEquals(_version1Instant, test.getCorrectionFromInstant());
    assertEquals(null, test.getCorrectionToInstant());
    ManageablePortfolio portfolio = test.getPortfolio();
    assertEquals(uniqueId, portfolio.getUniqueId());
    assertEquals("TestPortfolio201", portfolio.getName());
    ManageablePortfolioNode rootNode = portfolio.getRootNode();
    assertNode211(rootNode, uniqueId);
   
    assertNotNull(portfolio.getAttributes());
    assertTrue(portfolio.getAttributes().isEmpty());
  }

  protected void assertNode211(final ManageablePortfolioNode node, final UniqueId portfolioId) {
    assertEquals(UniqueId.of("DbPrt", "211", "0"), node.getUniqueId());
    assertEquals("TestNode211", node.getName());
    assertEquals(null, node.getParentNodeId());
    assertEquals(portfolioId, node.getPortfolioId());
    assertEquals(0, node.getChildNodes().size());
    if (_includePositions) {
      assertEquals(1, node.getPositionIds().size());
      assertEquals(ObjectId.of("DbPos", "500"), node.getPositionIds().get(0));
    } else {
      assertEquals(0, node.getPositionIds().size());
    }
  }

  protected void assert202(final PortfolioDocument test) {
    UniqueId uniqueId = UniqueId.of("DbPrt", "201", "1");
    assertNotNull(test);
    assertEquals(uniqueId, test.getUniqueId());
    assertEquals(_version2Instant, test.getVersionFromInstant());
    assertEquals(null, test.getVersionToInstant());
    assertEquals(_version2Instant, test.getCorrectionFromInstant());
    assertEquals(null, test.getCorrectionToInstant());
    ManageablePortfolio portfolio = test.getPortfolio();
    assertEquals(uniqueId, portfolio.getUniqueId());
    assertEquals("TestPortfolio202", portfolio.getName());
    ManageablePortfolioNode rootNode = portfolio.getRootNode();
    assertNode212(rootNode, uniqueId);
   
    assertNotNull(portfolio.getAttributes());
    assertTrue(portfolio.getAttributes().isEmpty());
  }

  protected void assertNode212(final ManageablePortfolioNode node, final UniqueId portfolioId) {
    assertEquals(UniqueId.of("DbPrt", "211", "1"), node.getUniqueId());
    assertEquals("TestNode212", node.getName());
    assertEquals(null, node.getParentNodeId());
    assertEquals(portfolioId, node.getPortfolioId());
    assertEquals(0, node.getChildNodes().size());
    if (_includePositions) {
      assertEquals(1, node.getPositionIds().size());
      assertEquals(ObjectId.of("DbPos", "500"), node.getPositionIds().get(0));
    } else {
      assertEquals(0, node.getPositionIds().size());
    }
  }
 
  protected void assert301(final PortfolioDocument test) {
    UniqueId uniqueId = UniqueId.of("DbPrt", "301", "0");
    assertNotNull(test);
    assertEquals(uniqueId, test.getUniqueId());
    assertEquals(_version1Instant, test.getVersionFromInstant());
    assertEquals(null, test.getVersionToInstant());
    assertEquals(_version1Instant, test.getCorrectionFromInstant());
    assertEquals(null, test.getCorrectionToInstant());
    ManageablePortfolio portfolio = test.getPortfolio();
    assertEquals(uniqueId, portfolio.getUniqueId());
    assertEquals("TestPortfolio301", portfolio.getName());
    ManageablePortfolioNode rootNode = portfolio.getRootNode();
    assertNode311(rootNode, uniqueId);
   
    assertNotNull(portfolio.getAttributes());
    assertTrue(portfolio.getAttributes().isEmpty());
  }
 
  protected void assertNode311(final ManageablePortfolioNode node, final UniqueId portfolioId) {
    assertEquals(UniqueId.of("DbPrt", "311", "0"), node.getUniqueId());
    assertEquals("TestNode311", node.getName());
    assertEquals(null, node.getParentNodeId());
    assertEquals(portfolioId, node.getPortfolioId());
    assertEquals(0, node.getChildNodes().size());
    if (_includePositions) {
      assertEquals(1, node.getPositionIds().size());
      assertEquals(ObjectId.of("DbPos", "500"), node.getPositionIds().get(0));
    } else {
      assertEquals(0, node.getPositionIds().size());
    }
  }

  protected void assertNoPositions() {
    _includePositions = false;
  }

}
TOP

Related Classes of com.opengamma.masterdb.portfolio.AbstractDbPortfolioMasterWorkerTest

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.