/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.masterdb.position; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import java.math.BigDecimal; import java.util.ArrayList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.Factory; import org.testng.annotations.Test; import org.threeten.bp.LocalDate; import org.threeten.bp.OffsetTime; import com.opengamma.id.ExternalId; import com.opengamma.id.ExternalIdSearch; import com.opengamma.id.ExternalIdSearchType; import com.opengamma.id.ObjectId; import com.opengamma.id.VersionCorrection; import com.opengamma.master.position.ManageablePosition; import com.opengamma.master.position.ManageableTrade; import com.opengamma.master.position.PositionDocument; import com.opengamma.master.position.PositionSearchRequest; import com.opengamma.master.position.PositionSearchResult; import com.opengamma.util.money.Currency; import com.opengamma.util.paging.PagingRequest; import com.opengamma.util.test.DbTest; import com.opengamma.util.test.TestGroup; /** * Tests QueryPositionDbPositionMasterWorker. */ @Test(groups = TestGroup.UNIT_DB) public class QueryPositionDbPositionMasterWorkerSearchTest extends AbstractDbPositionMasterWorkerTest { // superclass sets up dummy database private static final Logger s_logger = LoggerFactory.getLogger(QueryPositionDbPositionMasterWorkerSearchTest.class); @Factory(dataProvider = "databases", dataProviderClass = DbTest.class) public QueryPositionDbPositionMasterWorkerSearchTest(String databaseType, String databaseVersion) { super(databaseType, databaseVersion, true); s_logger.info("running testcases for {}", databaseType); } //------------------------------------------------------------------------- @Test public void test_search_documents() { PositionSearchRequest request = new PositionSearchRequest(); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getPaging().getFirstItemOneBased()); assertEquals(Integer.MAX_VALUE, test.getPaging().getPagingSize()); assertEquals(_totalPositions, test.getPaging().getTotalItems()); assertEquals(_totalPositions, test.getDocuments().size()); assert100(test.getDocuments().get(0)); } //------------------------------------------------------------------------- @Test public void test_search_pageOne() { PositionSearchRequest request = new PositionSearchRequest(); request.setPagingRequest(PagingRequest.ofPage(1, 2)); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getPaging().getFirstItemOneBased()); assertEquals(2, test.getPaging().getPagingSize()); assertEquals(_totalPositions, test.getPaging().getTotalItems()); assertEquals(2, test.getDocuments().size()); assert100(test.getDocuments().get(0)); assert120(test.getDocuments().get(1)); } @Test public void test_search_pageTwo() { PositionSearchRequest request = new PositionSearchRequest(); request.setPagingRequest(PagingRequest.ofPage(2, 2)); PositionSearchResult test = _posMaster.search(request); assertEquals(3, test.getPaging().getFirstItemOneBased()); assertEquals(2, test.getPaging().getPagingSize()); assertEquals(_totalPositions, test.getPaging().getTotalItems()); assertEquals(2, test.getDocuments().size()); assert121(test.getDocuments().get(0)); assert122(test.getDocuments().get(1)); } @Test public void test_search_pageThree() { PositionSearchRequest request = new PositionSearchRequest(); request.setPagingRequest(PagingRequest.ofPage(3, 2)); PositionSearchResult test = _posMaster.search(request); assertEquals(5, test.getPaging().getFirstItemOneBased()); assertEquals(2, test.getPaging().getPagingSize()); assertEquals(_totalPositions, test.getPaging().getTotalItems()); assertEquals(2, test.getDocuments().size()); assert123(test.getDocuments().get(0)); assert222(test.getDocuments().get(1)); } //------------------------------------------------------------------------- @Test public void test_search_positionIds_none() { PositionSearchRequest request = new PositionSearchRequest(); request.setPositionObjectIds(new ArrayList<ObjectId>()); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_positionIds() { PositionSearchRequest request = new PositionSearchRequest(); request.addPositionObjectId(ObjectId.of("DbPos", "120")); request.addPositionObjectId(ObjectId.of("DbPos", "221")); request.addPositionObjectId(ObjectId.of("DbPos", "9999")); PositionSearchResult test = _posMaster.search(request); assertEquals(2, test.getDocuments().size()); assert120(test.getDocuments().get(0)); assert222(test.getDocuments().get(1)); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_search_positionIds_badSchemeValidOid() { PositionSearchRequest request = new PositionSearchRequest(); request.addPositionObjectId(ObjectId.of("Rubbish", "120")); _posMaster.search(request); } @Test public void test_search_tradeIds_none() { PositionSearchRequest request = new PositionSearchRequest(); request.setTradeObjectIds(new ArrayList<ObjectId>()); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_tradeIds() { PositionSearchRequest request = new PositionSearchRequest(); request.addTradeObjectId(ObjectId.of("DbPos", "402")); request.addTradeObjectId(ObjectId.of("DbPos", "403")); request.addTradeObjectId(ObjectId.of("DbPos", "407")); request.addTradeObjectId(ObjectId.of("DbPos", "9999")); PositionSearchResult test = _posMaster.search(request); assertEquals(2, test.getDocuments().size()); assert122(test.getDocuments().get(0)); assert222(test.getDocuments().get(1)); } @Test public void test_search_trades_withPremium() { ManageablePosition position = new ManageablePosition(BigDecimal.TEN, ExternalId.of("A", "B")); LocalDate tradeDate = _now.toLocalDate(); OffsetTime tradeTime = _now.toOffsetTime().minusSeconds(500); ManageableTrade trade1 = new ManageableTrade(BigDecimal.TEN, ExternalId.of("A", "B"), tradeDate, tradeTime, ExternalId.of("CPS", "CPV")); trade1.setPremium(1000000.00); trade1.setPremiumCurrency(Currency.USD); trade1.setPremiumDate(tradeDate.plusDays(1)); trade1.setPremiumTime(tradeTime); position.getTrades().add(trade1); ManageableTrade trade2 = new ManageableTrade(BigDecimal.TEN, ExternalId.of("C", "D"), tradeDate, tradeTime, ExternalId.of("CPS2", "CPV2")); trade2.setPremium(100.00); trade2.setPremiumCurrency(Currency.GBP); trade2.setPremiumDate(tradeDate.plusDays(10)); trade2.setPremiumTime(tradeTime.plusHours(1)); position.getTrades().add(trade2); PositionDocument doc = new PositionDocument(); doc.setPosition(position); _posMaster.add(doc); assertNotNull(trade1.getUniqueId()); assertNotNull(trade2.getUniqueId()); PositionSearchRequest requestByTrade = new PositionSearchRequest(); requestByTrade.addTradeObjectId(trade1.getUniqueId().getObjectId()); PositionSearchResult test = _posMaster.search(requestByTrade); assertEquals(1, test.getDocuments().size()); assertEquals(doc, test.getDocuments().get(0)); PositionSearchRequest requestByPosition = new PositionSearchRequest(); requestByPosition.addPositionObjectId(position.getUniqueId().getObjectId()); test = _posMaster.search(requestByTrade); assertEquals(1, test.getDocuments().size()); assertEquals(doc, test.getDocuments().get(0)); } @Test public void test_search_trades_withAttributes() { ManageablePosition position = new ManageablePosition(BigDecimal.TEN, ExternalId.of("A", "B")); LocalDate tradeDate = _now.toLocalDate(); OffsetTime tradeTime = _now.toOffsetTime().minusSeconds(500); ManageableTrade trade1 = new ManageableTrade(BigDecimal.TEN, ExternalId.of("A", "B"), tradeDate, tradeTime, ExternalId.of("CPS", "CPV")); trade1.addAttribute("key11", "value11"); trade1.addAttribute("key12", "value12"); position.addTrade(trade1); ManageableTrade trade2 = new ManageableTrade(BigDecimal.TEN, ExternalId.of("C", "D"), tradeDate, tradeTime, ExternalId.of("CPS2", "CPV2")); trade2.addAttribute("key21", "value21"); trade2.addAttribute("key22", "value22"); position.addTrade(trade2); PositionDocument doc = new PositionDocument(); doc.setPosition(position); _posMaster.add(doc); assertNotNull(trade1.getUniqueId()); assertNotNull(trade2.getUniqueId()); PositionSearchRequest requestByTrade = new PositionSearchRequest(); requestByTrade.addTradeObjectId(trade1.getUniqueId().getObjectId()); PositionSearchResult test = _posMaster.search(requestByTrade); assertEquals(1, test.getDocuments().size()); assertEquals(doc, test.getDocuments().get(0)); PositionSearchRequest requestByPosition = new PositionSearchRequest(); requestByPosition.addPositionObjectId(position.getUniqueId().getObjectId()); test = _posMaster.search(requestByTrade); assertEquals(1, test.getDocuments().size()); assertEquals(doc, test.getDocuments().get(0)); } @Test public void test_search_position_withAttributes() { ManageablePosition position = new ManageablePosition(BigDecimal.TEN, ExternalId.of("A", "B")); position.addAttribute("PA1", "A"); position.addAttribute("PA2", "B"); position.addAttribute("PA3", "C"); LocalDate tradeDate = _now.toLocalDate(); OffsetTime tradeTime = _now.toOffsetTime().minusSeconds(500); ManageableTrade trade1 = new ManageableTrade(BigDecimal.TEN, ExternalId.of("A", "B"), tradeDate, tradeTime, ExternalId.of("CPS", "CPV")); trade1.addAttribute("key11", "value11"); trade1.addAttribute("key12", "value12"); position.addTrade(trade1); ManageableTrade trade2 = new ManageableTrade(BigDecimal.TEN, ExternalId.of("C", "D"), tradeDate, tradeTime, ExternalId.of("CPS2", "CPV2")); trade2.addAttribute("key21", "value21"); trade2.addAttribute("key22", "value22"); position.addTrade(trade2); PositionDocument doc = new PositionDocument(); doc.setPosition(position); _posMaster.add(doc); assertNotNull(trade1.getUniqueId()); assertNotNull(trade2.getUniqueId()); PositionSearchRequest requestByTrade = new PositionSearchRequest(); requestByTrade.addTradeObjectId(trade1.getUniqueId().getObjectId()); PositionSearchResult test = _posMaster.search(requestByTrade); assertEquals(1, test.getDocuments().size()); assertEquals(doc, test.getDocuments().get(0)); PositionSearchRequest requestByPosition = new PositionSearchRequest(); requestByPosition.addPositionObjectId(position.getUniqueId().getObjectId()); test = _posMaster.search(requestByTrade); assertEquals(1, test.getDocuments().size()); assertEquals(doc, test.getDocuments().get(0)); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_search_tradeIds_badSchemeValidOid() { PositionSearchRequest request = new PositionSearchRequest(); request.addTradeObjectId(ObjectId.of("Rubbish", "402")); _posMaster.search(request); } @Test public void test_search_positionAndTradeIds_matchSome() { PositionSearchRequest request = new PositionSearchRequest(); request.addPositionObjectId(ObjectId.of("DbPos", "120")); request.addPositionObjectId(ObjectId.of("DbPos", "122")); request.addTradeObjectId(ObjectId.of("DbPos", "402")); request.addTradeObjectId(ObjectId.of("DbPos", "403")); request.addTradeObjectId(ObjectId.of("DbPos", "407")); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert122(test.getDocuments().get(0)); } @Test public void test_search_positionAndTradeIds_matchNone() { PositionSearchRequest request = new PositionSearchRequest(); request.addPositionObjectId(ObjectId.of("DbPos", "120")); request.addPositionObjectId(ObjectId.of("DbPos", "121")); request.addTradeObjectId(ObjectId.of("DbPos", "402")); request.addTradeObjectId(ObjectId.of("DbPos", "403")); request.addTradeObjectId(ObjectId.of("DbPos", "407")); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } //------------------------------------------------------------------------- @Test public void test_search_noKeys_Exact_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.setSecurityIdSearch(ExternalIdSearch.of(ExternalIdSearchType.EXACT)); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_noKeys_All_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.setSecurityIdSearch(ExternalIdSearch.of(ExternalIdSearchType.ALL)); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_noKeys_Any_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.setSecurityIdSearch(ExternalIdSearch.of(ExternalIdSearchType.ANY)); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_noKeys_None_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.setSecurityIdSearch(ExternalIdSearch.of(ExternalIdSearchType.NONE)); PositionSearchResult test = _posMaster.search(request); assertEquals(_totalPositions, test.getDocuments().size()); } //------------------------------------------------------------------------- @Test public void test_search_oneKey_Any_1() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalId(ExternalId.of("TICKER", "S100")); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert100(test.getDocuments().get(0)); } @Test public void test_search_oneKey_Any_1_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalId(ExternalId.of("A", "Z")); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } //------------------------------------------------------------------------- @Test public void test_search_twoKeys_Any_2() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalIds(ExternalId.of("TICKER", "MSFT"), ExternalId.of("TICKER", "S100")); PositionSearchResult test = _posMaster.search(request); assertEquals(2, test.getDocuments().size()); assert100(test.getDocuments().get(0)); assert121(test.getDocuments().get(1)); } @Test public void test_search_twoKeys_Any_2_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalIds(ExternalId.of("E", "H"), ExternalId.of("A", "D")); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_identifier() { PositionSearchRequest request = new PositionSearchRequest(); request.setSecurityIdValue("S100"); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert100(test.getDocuments().get(0)); } @Test public void test_search_identifier_case() { PositionSearchRequest request = new PositionSearchRequest(); request.setSecurityIdValue("s100"); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert100(test.getDocuments().get(0)); } @Test public void test_search_identifier_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.setSecurityIdValue("FooBar"); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_identifier_wildcard() { PositionSearchRequest request = new PositionSearchRequest(); request.setSecurityIdValue("OR*"); PositionSearchResult test = _posMaster.search(request); assertEquals(2, test.getDocuments().size()); assert122(test.getDocuments().get(0)); assert123(test.getDocuments().get(1)); } @Test public void test_search_identifier_wildcardCase() { PositionSearchRequest request = new PositionSearchRequest(); request.setSecurityIdValue("or*"); PositionSearchResult test = _posMaster.search(request); assertEquals(2, test.getDocuments().size()); assert122(test.getDocuments().get(0)); assert123(test.getDocuments().get(1)); } //------------------------------------------------------------------------- @Test public void test_search_oneKey_All_1() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalId(ExternalId.of("TICKER", "S100")); request.setSecurityExternalIdSearchType(ExternalIdSearchType.ALL); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert100(test.getDocuments().get(0)); } @Test public void test_search_oneKey_All_1_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalId(ExternalId.of("A", "Z")); request.setSecurityExternalIdSearchType(ExternalIdSearchType.ALL); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } //------------------------------------------------------------------------- @Test public void test_search_twoKeys_All_2() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalIds(ExternalId.of("TICKER", "MSFT"), ExternalId.of("NASDAQ", "Micro")); request.setSecurityExternalIdSearchType(ExternalIdSearchType.ALL); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert121(test.getDocuments().get(0)); } @Test public void test_search_twoKeys_All_2_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalIds(ExternalId.of("TICKER", "MSFT"), ExternalId.of("A", "D")); request.setSecurityExternalIdSearchType(ExternalIdSearchType.ALL); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } //------------------------------------------------------------------------- @Test public void test_search_oneKey_None() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalId(ExternalId.of("TICKER", "MSFT")); request.setSecurityExternalIdSearchType(ExternalIdSearchType.NONE); PositionSearchResult test = _posMaster.search(request); assertEquals(5, test.getDocuments().size()); assert100(test.getDocuments().get(0)); assert120(test.getDocuments().get(1)); assert122(test.getDocuments().get(2)); assert123(test.getDocuments().get(3)); assert222(test.getDocuments().get(4)); } @Test public void test_search_oneKey_None_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalId(ExternalId.of("TICKER", "S100")); request.addSecurityExternalId(ExternalId.of("TICKER", "T130")); request.addSecurityExternalId(ExternalId.of("TICKER", "MSFT")); request.addSecurityExternalId(ExternalId.of("NASDAQ", "Micro")); request.addSecurityExternalId(ExternalId.of("TICKER", "ORCL")); request.addSecurityExternalId(ExternalId.of("TICKER", "ORCL134")); request.addSecurityExternalId(ExternalId.of("NASDAQ", "ORCL135")); request.addSecurityExternalId(ExternalId.of("TICKER", "IBMC")); request.setSecurityExternalIdSearchType(ExternalIdSearchType.NONE); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } //------------------------------------------------------------------------- @Test public void test_search_threeKeys_Exact() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalIds(ExternalId.of("TICKER", "MSFT"), ExternalId.of("NASDAQ", "Micro")); request.setSecurityExternalIdSearchType(ExternalIdSearchType.EXACT); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert121(test.getDocuments().get(0)); } @Test public void test_search_threeKeys_Exact_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.addSecurityExternalId(ExternalId.of("TICKER", "MSFT")); request.setSecurityExternalIdSearchType(ExternalIdSearchType.EXACT); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } //------------------------------------------------------------------------- @Test public void test_search_positionProviderKey_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.setPositionProviderId(ExternalId.of("A", "999")); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_positionProviderKey_found() { PositionSearchRequest request = new PositionSearchRequest(); request.setPositionProviderId(ExternalId.of("A", "121")); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert121(test.getDocuments().get(0)); } //------------------------------------------------------------------------- @Test public void test_search_tradeProviderKey_noMatch() { PositionSearchRequest request = new PositionSearchRequest(); request.setTradeProviderId(ExternalId.of("B", "999")); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_tradeProviderKey_found() { PositionSearchRequest request = new PositionSearchRequest(); request.setTradeProviderId(ExternalId.of("B", "401")); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert121(test.getDocuments().get(0)); } //------------------------------------------------------------------------- @Test public void test_search_minQuantity_below() { PositionSearchRequest request = new PositionSearchRequest(); request.setMinQuantity(BigDecimal.valueOf(50)); PositionSearchResult test = _posMaster.search(request); assertEquals(6, test.getDocuments().size()); assert100(test.getDocuments().get(0)); assert120(test.getDocuments().get(1)); assert121(test.getDocuments().get(2)); assert122(test.getDocuments().get(3)); assert123(test.getDocuments().get(4)); assert222(test.getDocuments().get(5)); } @Test public void test_search_minQuantity_mid() { PositionSearchRequest request = new PositionSearchRequest(); request.setMinQuantity(BigDecimal.valueOf(150)); PositionSearchResult test = _posMaster.search(request); assertEquals(1, test.getDocuments().size()); assert222(test.getDocuments().get(0)); } @Test public void test_search_minQuantity_above() { PositionSearchRequest request = new PositionSearchRequest(); request.setMinQuantity(BigDecimal.valueOf(450)); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } //------------------------------------------------------------------------- @Test public void test_search_maxQuantity_below() { PositionSearchRequest request = new PositionSearchRequest(); request.setMaxQuantity(BigDecimal.valueOf(50)); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_maxQuantity_mid() { PositionSearchRequest request = new PositionSearchRequest(); request.setMaxQuantity(BigDecimal.valueOf(150)); PositionSearchResult test = _posMaster.search(request); assertEquals(5, test.getDocuments().size()); assert100(test.getDocuments().get(0)); assert120(test.getDocuments().get(1)); assert121(test.getDocuments().get(2)); assert122(test.getDocuments().get(3)); assert123(test.getDocuments().get(4)); } @Test public void test_search_maxQuantity_above() { PositionSearchRequest request = new PositionSearchRequest(); request.setMaxQuantity(BigDecimal.valueOf(450)); PositionSearchResult test = _posMaster.search(request); assertEquals(6, test.getDocuments().size()); assert100(test.getDocuments().get(0)); assert120(test.getDocuments().get(1)); assert121(test.getDocuments().get(2)); assert122(test.getDocuments().get(3)); assert123(test.getDocuments().get(4)); assert222(test.getDocuments().get(5)); } //------------------------------------------------------------------------- @Test public void test_search_versionAsOf_below() { PositionSearchRequest request = new PositionSearchRequest(); request.setVersionCorrection(VersionCorrection.ofVersionAsOf(_version1Instant.minusSeconds(5))); PositionSearchResult test = _posMaster.search(request); assertEquals(0, test.getDocuments().size()); } @Test public void test_search_versionAsOf_mid() { PositionSearchRequest request = new PositionSearchRequest(); request.setVersionCorrection(VersionCorrection.ofVersionAsOf(_version1Instant.plusSeconds(5))); PositionSearchResult test = _posMaster.search(request); assertEquals(6, test.getDocuments().size()); assert100(test.getDocuments().get(0)); assert120(test.getDocuments().get(1)); assert121(test.getDocuments().get(2)); assert122(test.getDocuments().get(3)); assert123(test.getDocuments().get(4)); assert221(test.getDocuments().get(5)); // old version } @Test public void test_search_versionAsOf_above() { PositionSearchRequest request = new PositionSearchRequest(); request.setVersionCorrection(VersionCorrection.ofVersionAsOf(_version2Instant.plusSeconds(5))); PositionSearchResult test = _posMaster.search(request); assertEquals(6, test.getDocuments().size()); assert100(test.getDocuments().get(0)); assert120(test.getDocuments().get(1)); assert121(test.getDocuments().get(2)); assert122(test.getDocuments().get(3)); assert123(test.getDocuments().get(4)); assert222(test.getDocuments().get(5)); // new version } }