/** * Sets the function initialization identifier. * * @param id the identifier to bind */ public void setFunctionInitId(final long id) { put(FUNCTION_INIT_ID_NAME, id); // TODO: Note that the behaviour below is closely coupled to the implementation of // initialization identifiers in CompiledFunctionService final Instant instant = Instant.ofEpochMilli(id); put(FUNCTION_INIT_TIMESTAMP_NAME, VersionCorrection.of(instant, instant)); }
/** Test {@link MasterExchangeSource}. */ @Test(groups = TestGroup.UNIT) public class MasterExchangeSourceTest { private static final ObjectId OID = ObjectId.of("A", "B"); private static final UniqueId UID = UniqueId.of("A", "B", "V"); private static final ExternalId ID = ExternalId.of("C", "D"); private static final ExternalIdBundle BUNDLE = ExternalIdBundle.of(ID); private static final Instant NOW = Instant.now(); private static final VersionCorrection VC = VersionCorrection.of(NOW.minusSeconds(2), NOW.minusSeconds(1)); @Test(expectedExceptions = IllegalArgumentException.class) public void test_constructor_1arg_nullMaster() throws Exception { new MasterExchangeSource(null); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_constructor_2arg_nullMaster() throws Exception { new MasterExchangeSource(null, null); } // ------------------------------------------------------------------------- public void test_getExchange_UniqueId_noOverride_found() throws Exception { ExchangeMaster mock = mock(ExchangeMaster.class); ExchangeDocument doc = new ExchangeDocument(example()); when(mock.get(UID)).thenReturn(doc); MasterExchangeSource test = new MasterExchangeSource(mock); Exchange testResult = test.get(UID); verify(mock, times(1)).get(UID); assertEquals(example(), testResult); } public void test_getExchange_UniqueId_found() throws Exception { ExchangeMaster mock = mock(ExchangeMaster.class); ExchangeDocument doc = new ExchangeDocument(example()); when(mock.get(OID, VC)).thenReturn(doc); MasterExchangeSource test = new MasterExchangeSource(mock, VC); Exchange testResult = test.get(UID); verify(mock, times(1)).get(OID, VC); assertEquals(example(), testResult); } @Test(expectedExceptions = DataNotFoundException.class) public void test_getExchange_UniqueId_notFound() throws Exception { ExchangeMaster mock = mock(ExchangeMaster.class); when(mock.get(OID, VC)).thenThrow(new DataNotFoundException("")); MasterExchangeSource test = new MasterExchangeSource(mock, VC); try { test.get(UID); } finally { verify(mock, times(1)).get(OID, VC); } } // ------------------------------------------------------------------------- public void test_getExchange_ObjectId_found() throws Exception { ExchangeMaster mock = mock(ExchangeMaster.class); ExchangeDocument doc = new ExchangeDocument(example()); when(mock.get(OID, VC)).thenReturn(doc); MasterExchangeSource test = new MasterExchangeSource(mock, VC); Exchange testResult = test.get(OID, VC); verify(mock, times(1)).get(OID, VC); assertEquals(example(), testResult); } @Test(expectedExceptions = DataNotFoundException.class) public void test_getExchange_ObjectId_notFound() throws Exception { ExchangeMaster mock = mock(ExchangeMaster.class); when(mock.get(OID, VC)).thenThrow(new DataNotFoundException("")); MasterExchangeSource test = new MasterExchangeSource(mock, VC); try { test.get(OID, VC); } finally { verify(mock, times(1)).get(OID, VC); } } // ------------------------------------------------------------------------- public void test_getSingleExchange_ExternalId_found() throws Exception { ExchangeMaster mock = mock(ExchangeMaster.class); ExchangeSearchRequest request = new ExchangeSearchRequest(ID); request.setPagingRequest(PagingRequest.ONE); request.setPagingRequest(PagingRequest.ONE); request.setVersionCorrection(VC); ExchangeSearchResult result = new ExchangeSearchResult(); result.getDocuments().add(new ExchangeDocument(example())); when(mock.search(request)).thenReturn(result); MasterExchangeSource test = new MasterExchangeSource(mock, VC); Exchange testResult = test.getSingle(ID); verify(mock, times(1)).search(request); assertEquals(example(), testResult); } public void test_getSingleExchange_ExternalId_notFound() throws Exception { ExchangeMaster mock = mock(ExchangeMaster.class); ExchangeSearchRequest request = new ExchangeSearchRequest(ID); request.setPagingRequest(PagingRequest.ONE); request.setPagingRequest(PagingRequest.ONE); request.setVersionCorrection(VC); ExchangeSearchResult result = new ExchangeSearchResult(); when(mock.search(request)).thenReturn(result); MasterExchangeSource test = new MasterExchangeSource(mock, VC); Exchange testResult = test.getSingle(ID); verify(mock, times(1)).search(request); assertEquals(null, testResult); } // ------------------------------------------------------------------------- public void test_getSingleExchange_ExternalIdBundle_found() throws Exception { ExchangeMaster mock = mock(ExchangeMaster.class); ExchangeSearchRequest request = new ExchangeSearchRequest(BUNDLE); request.setPagingRequest(PagingRequest.ONE); request.setVersionCorrection(VC); ExchangeSearchResult result = new ExchangeSearchResult(); result.getDocuments().add(new ExchangeDocument(example())); when(mock.search(request)).thenReturn(result); MasterExchangeSource test = new MasterExchangeSource(mock, VC); Exchange testResult = test.getSingle(BUNDLE); verify(mock, times(1)).search(request); assertEquals(example(), testResult); } // ------------------------------------------------------------------------- protected ManageableExchange example() { ManageableExchange exchange = new ManageableExchange(); exchange.setUniqueId(UID); exchange.setName("NYSE"); exchange.setRegionIdBundle(ExternalIdBundle.of(ExternalSchemes.countryRegionId(Country.US))); return exchange; } }
// ------------------------------------------------------------------------- @Override public synchronized void setVersionCorrection(final VersionCorrection versionCorrection) { _sourceVersionCorrection = VersionCorrection.of(versionCorrection); }
private Future<?> executeTestJob(DependencyGraphExecutorFactory<?> factory) { final InMemoryLKVMarketDataProvider marketDataProvider = new InMemoryLKVMarketDataProvider(); final MarketDataProviderResolver marketDataProviderResolver = new SingleMarketDataProviderResolver( new SingletonMarketDataProviderFactory(marketDataProvider)); final InMemoryFunctionRepository functionRepository = new InMemoryFunctionRepository(); _functionCount.set(0); final MockFunction mockFunction = new MockFunction(new ComputationTarget("Foo")) { @Override public Set<ComputedValue> execute( FunctionExecutionContext executionContext, FunctionInputs inputs, ComputationTarget target, Set<ValueRequirement> desiredValues) { try { Thread.sleep(JOB_FINISH_TIME / (JOB_SIZE * 2)); } catch (InterruptedException e) { throw new OpenGammaRuntimeException("Function interrupted", e); } _functionCount.incrementAndGet(); return super.execute(executionContext, inputs, target, desiredValues); } }; functionRepository.addFunction(mockFunction); final FunctionCompilationContext compilationContext = new FunctionCompilationContext(); final CompiledFunctionService compilationService = new CompiledFunctionService( functionRepository, new CachingFunctionRepositoryCompiler(), compilationContext); compilationService.initialize(); final FunctionResolver functionResolver = new DefaultFunctionResolver(compilationService); final MockSecuritySource securitySource = new MockSecuritySource(); final MockPositionSource positionSource = new MockPositionSource(); final ViewComputationCacheSource computationCacheSource = new InMemoryViewComputationCacheSource(FudgeContext.GLOBAL_DEFAULT); final FunctionInvocationStatisticsGatherer functionInvocationStatistics = new DiscardingInvocationStatisticsGatherer(); final ViewProcessorQueryReceiver viewProcessorQueryReceiver = new ViewProcessorQueryReceiver(); final ViewProcessorQuerySender viewProcessorQuerySender = new ViewProcessorQuerySender(InMemoryRequestConduit.create(viewProcessorQueryReceiver)); final FunctionExecutionContext executionContext = new FunctionExecutionContext(); final ComputationTargetResolver targetResolver = new DefaultComputationTargetResolver(securitySource, positionSource); final JobDispatcher jobDispatcher = new JobDispatcher( new LocalNodeJobInvoker( new LocalCalculationNode( computationCacheSource, compilationService, executionContext, targetResolver, viewProcessorQuerySender, Executors.newCachedThreadPool(), functionInvocationStatistics))); final ViewPermissionProvider viewPermissionProvider = new DefaultViewPermissionProvider(); final GraphExecutorStatisticsGathererProvider graphExecutorStatisticsProvider = new DiscardingGraphStatisticsGathererProvider(); ViewDefinition viewDefinition = new ViewDefinition("TestView", UserPrincipal.getTestUser()); viewDefinition.addViewCalculationConfiguration( new ViewCalculationConfiguration(viewDefinition, "default")); MockViewDefinitionRepository viewDefinitionRepository = new MockViewDefinitionRepository(); viewDefinitionRepository.addDefinition(viewDefinition); final ViewProcessContext vpc = new ViewProcessContext( viewDefinitionRepository, viewPermissionProvider, marketDataProviderResolver, compilationService, functionResolver, positionSource, securitySource, new DefaultCachingComputationTargetResolver( new DefaultComputationTargetResolver(securitySource, positionSource), EHCacheUtils.createCacheManager()), computationCacheSource, jobDispatcher, viewProcessorQueryReceiver, factory, graphExecutorStatisticsProvider); final DependencyGraph graph = new DependencyGraph("Default"); DependencyNode previous = null; for (int i = 0; i < JOB_SIZE; i++) { DependencyNode node = new DependencyNode(new ComputationTarget("Foo")); node.setFunction(mockFunction); if (previous != null) { node.addInputNode(previous); } graph.addDependencyNode(node); previous = node; } final Map<String, DependencyGraph> graphs = new HashMap<String, DependencyGraph>(); graphs.put(graph.getCalculationConfigurationName(), graph); CompiledViewDefinitionWithGraphsImpl viewEvaluationModel = new CompiledViewDefinitionWithGraphsImpl( viewDefinition, graphs, new SimplePortfolio("Test Portfolio"), 0); ViewCycleExecutionOptions cycleOptions = new ViewCycleExecutionOptions(); cycleOptions.setValuationTime(Instant.ofEpochMillis(1)); cycleOptions.setMarketDataSpecification(new MarketDataSpecification()); final SingleComputationCycle cycle = new SingleComputationCycle( UniqueId.of("Test", "Cycle1"), UniqueId.of("Test", "ViewProcess1"), vpc, viewEvaluationModel, cycleOptions, VersionCorrection.of(Instant.ofEpochMillis(1), Instant.ofEpochMillis(1))); return cycle.getDependencyGraphExecutor().execute(graph, cycle.getStatisticsGatherer()); }