/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.integration.viewer.status; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertTrue; import java.io.File; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; import org.testng.annotations.Test; import com.google.common.collect.Lists; import com.opengamma.OpenGammaRuntimeException; import com.opengamma.core.marketdatasnapshot.impl.ManageableMarketDataSnapshot; import com.opengamma.engine.marketdata.spec.FixedHistoricalMarketDataSpecification; import com.opengamma.engine.marketdata.spec.LiveMarketDataSpecification; import com.opengamma.engine.marketdata.spec.MarketData; import com.opengamma.engine.marketdata.spec.UserMarketDataSpecification; import com.opengamma.financial.tool.ToolContext; import com.opengamma.id.UniqueId; import com.opengamma.integration.viewer.status.ViewStatusOption.ResultFormat; import com.opengamma.livedata.UserPrincipal; import com.opengamma.master.marketdatasnapshot.MarketDataSnapshotDocument; import com.opengamma.master.marketdatasnapshot.MarketDataSnapshotMaster; import com.opengamma.master.marketdatasnapshot.MarketDataSnapshotSearchRequest; import com.opengamma.master.marketdatasnapshot.MarketDataSnapshotSearchResult; import com.opengamma.util.test.TestGroup; /** * Tests {@link ViewStatusOption} */ @Test(groups = TestGroup.UNIT) public class ViewStatusOptionTest { private static final String PORTFOLIO_NAME = "PORTFOLIO_NAME"; private static final Options s_options = ViewStatusOption.createOptions(); private static final CommandLineParser s_parser = new PosixParser(); private static final ToolContext s_toolContext = new ToolContext(); private static final UniqueId s_mockUniqueId = UniqueId.parse("Mock~12345~0"); private static final MarketDataSnapshotSearchRequest s_snapshotRequest = makeRequest(); private static final MarketDataSnapshotSearchResult s_snapshotSearchResult = makeSearchResult(); static { MarketDataSnapshotMaster snapshotMaster = mock(MarketDataSnapshotMaster.class); when(snapshotMaster.search(s_snapshotRequest)).thenReturn(s_snapshotSearchResult); s_toolContext.setMarketDataSnapshotMaster(snapshotMaster); } public void defaultOptions() throws Exception { String[] args = {"-n", PORTFOLIO_NAME}; ViewStatusOption statusOption = ViewStatusOption.getViewStatusReporterOption(s_parser.parse(s_options, args), s_toolContext); assertNotNull(statusOption); assertEquals(PORTFOLIO_NAME, statusOption.getPortfolioName()); assertEquals(UserPrincipal.getLocalUser(), statusOption.getUser()); assertEquals(ResultFormat.HTML, statusOption.getFormat()); assertEquals(MarketData.live(), statusOption.getMarketDataSpecification()); assertEquals(AggregateType.NO_AGGREGATION, statusOption.getAggregateType()); assertEquals(new File(ViewStatusOption.DEFAULT_OUTPUT_NAME + "." + ResultFormat.HTML.getExtension()), statusOption.getOutputFile()); } public void userOption() throws Exception { ViewStatusOption statusOption = ViewStatusOption.getViewStatusReporterOption( s_parser.parse(s_options, new String[] {"-n", PORTFOLIO_NAME, "-u", "test/127.0.0.1"}), s_toolContext); assertNotNull(statusOption); assertNotNull(statusOption.getUser()); assertEquals("test", statusOption.getUser().getUserName()); assertEquals("127.0.0.1", statusOption.getUser().getIpAddress()); statusOption = ViewStatusOption.getViewStatusReporterOption( s_parser.parse(s_options, new String[] {"-n", PORTFOLIO_NAME, "-u", "A/B"}), s_toolContext); assertNotNull(statusOption); assertNotNull(statusOption.getUser()); assertEquals("A", statusOption.getUser().getUserName()); assertEquals("B", statusOption.getUser().getIpAddress()); } @Test(expectedExceptions = OpenGammaRuntimeException.class) public void invalidSeparatorForUserOption() throws Exception { String[] args = {"-n", PORTFOLIO_NAME, "-u", "test~127.0.0.1"}; ViewStatusOption.getViewStatusReporterOption(s_parser.parse(s_options, args), s_toolContext); } @Test(expectedExceptions = OpenGammaRuntimeException.class) public void blankUsernamePasswordForUserOption() throws Exception { String[] args = {"-n", PORTFOLIO_NAME, "-u", "/"}; ViewStatusOption.getViewStatusReporterOption(s_parser.parse(s_options, args), s_toolContext); } public void liveMarketDataOption() throws Exception { String[] args = {"-n", PORTFOLIO_NAME, "--live", "liveMarketData"}; ViewStatusOption statusOption = ViewStatusOption.getViewStatusReporterOption(s_parser.parse(s_options, args), s_toolContext); assertNotNull(statusOption); assertNotNull(statusOption.getMarketDataSpecification()); assertTrue(statusOption.getMarketDataSpecification() instanceof LiveMarketDataSpecification); LiveMarketDataSpecification marketDataSpecification = (LiveMarketDataSpecification) statusOption.getMarketDataSpecification(); assertEquals("liveMarketData", marketDataSpecification.getDataSource()); } public void historicalMarketDataOption() throws Exception { String[] args = {"-n", PORTFOLIO_NAME, "--historical", "2013-06-20/timeSeriesResolverKey"}; ViewStatusOption statusOption = ViewStatusOption.getViewStatusReporterOption(s_parser.parse(s_options, args), s_toolContext); assertNotNull(statusOption); assertTrue(statusOption.getMarketDataSpecification() instanceof FixedHistoricalMarketDataSpecification); FixedHistoricalMarketDataSpecification marketDataSpecification = (FixedHistoricalMarketDataSpecification) statusOption.getMarketDataSpecification(); assertNotNull(marketDataSpecification.getSnapshotDate()); assertEquals("2013-06-20", marketDataSpecification.getSnapshotDate().toString()); assertEquals("timeSeriesResolverKey", marketDataSpecification.getTimeSeriesResolverKey()); } @Test(expectedExceptions = OpenGammaRuntimeException.class) public void invalidHistoricalMarketDataOption() throws Exception { String[] args = {"-n", PORTFOLIO_NAME, "--historical", "2013-06-20~timeSeriesResolverKey"}; ViewStatusOption.getViewStatusReporterOption(s_parser.parse(s_options, args), s_toolContext); } @Test(expectedExceptions = OpenGammaRuntimeException.class) public void invalidDateHistoricalMarketDataOption() throws Exception { String[] args = {"-n", PORTFOLIO_NAME, "--historical", "xxxx/timeSeriesResolverKey"}; ViewStatusOption.getViewStatusReporterOption(s_parser.parse(s_options, args), s_toolContext); } public void userMarketDataOption() throws Exception { String[] args = {"-n", PORTFOLIO_NAME, "--snapshot", "snaphshotName"}; ViewStatusOption statusOption = ViewStatusOption.getViewStatusReporterOption(s_parser.parse(s_options, args), s_toolContext); assertNotNull(statusOption); assertTrue(statusOption.getMarketDataSpecification() instanceof UserMarketDataSpecification); UserMarketDataSpecification marketDataSpecification = (UserMarketDataSpecification) statusOption.getMarketDataSpecification(); assertEquals(s_mockUniqueId, marketDataSpecification.getUserSnapshotId()); } private static MarketDataSnapshotSearchResult makeSearchResult() { MarketDataSnapshotSearchResult result = new MarketDataSnapshotSearchResult(); result.setDocuments(Lists.newArrayList(new MarketDataSnapshotDocument(s_mockUniqueId, new ManageableMarketDataSnapshot()))); return result; } private static MarketDataSnapshotSearchRequest makeRequest() { MarketDataSnapshotSearchRequest request = new MarketDataSnapshotSearchRequest(); request.setName("snaphshotName"); return request; } }