protected override void AttachToViewProcess(RemoteViewClient remoteViewClient) { //Still want to tick on time changed because it may need a recompile //Should probably deal with this ourselves var options = new ExecutionOptions(new InfiniteViewCycleExecutionSequence(), ViewExecutionFlags.TriggersEnabled | ViewExecutionFlags.AwaitMarketData, null, new ViewCycleExecutionOptions(default(DateTimeOffset), new LiveMarketDataSpecification())); remoteViewClient.AttachToViewProcess(_basisViewName, options); }
public void CanRunSingleYesterdayCycleBatchWithVersion() { DateTimeOffset valuationTime = DateTimeOffset.Now - TimeSpan.FromDays(1); var seq = ArbitraryViewCycleExecutionSequence.Create(valuationTime); const ViewExecutionFlags flags = ViewExecutionFlags.RunAsFastAsPossible | ViewExecutionFlags.AwaitMarketData; IViewExecutionOptions req = new ExecutionOptions(seq, flags, defaultExecutionOptions:new ViewCycleExecutionOptions(valuationTime, new LiveMarketDataSpecification()), versionCorrection:new VersionCorrection(valuationTime, valuationTime)); var runToCompletion = RunToCompletion(req); Assert.Equal(1, runToCompletion.Item1.Count()); Assert.Equal(1, runToCompletion.Item2.Count()); AssertApproximatelyEqual(req.ExecutionSequence.Next.ValuationTime, runToCompletion.Item2.Single().FullResult.ValuationTime); }
public void NumberOfResultsIsConsistent(ViewDefinition viewDefinition) { using (var remoteViewClient = Context.ViewProcessor.CreateClient()) { var options = new ExecutionOptions(new InfiniteViewCycleExecutionSequence(), ViewExecutionFlags.TriggersEnabled | ViewExecutionFlags.AwaitMarketData, defaultExecutionOptions:new ViewCycleExecutionOptions(default(DateTimeOffset), new LiveMarketDataSpecification())); var resultsEnum = remoteViewClient.GetResults(viewDefinition.UniqueID, options); var results = resultsEnum.Take(3).ToList(); AssertNumberOfResultsIsConsistentOnRecompile(results); } }
public void CanSpecifyLiveData(string dataSource) { using (var remoteViewClient = Context.ViewProcessor.CreateClient()) { var pSpec = new LiveMarketDataSpecification(dataSource); var spec = pSpec; var options = new ExecutionOptions(new InfiniteViewCycleExecutionSequence(), ViewExecutionFlags.TriggersEnabled, null, new ViewCycleExecutionOptions(default(DateTimeOffset), spec)); //const string viewDefinitionName = "Primitives Only (Combined) 04f3f46f-15d5-48d9-a17e-848505d4246b"; const string viewDefinitionName = "Equity Option Test View 1"; var resultsEnum = remoteViewClient.GetResults(viewDefinitionName, options); var results = resultsEnum.Take(1).ToList(); Assert.True(results.All(r => r != null)); Console.Out.WriteLine("{0}: {1}", dataSource, string.Join(",", results.SelectMany(r => r.AllLiveData.Select(d => d.Specification.TargetSpecification.Uid.ToString())).OrderBy(u => u))); } }
public void CanGetVersionCorrection(string versionAsOf, string correctedTo) { VersionCorrection vc = versionAsOf == null ? VersionCorrection.Latest : new VersionCorrection(DateTimeOffset.Parse(versionAsOf), DateTimeOffset.Parse(correctedTo)); using (var remoteViewClient = Context.ViewProcessor.CreateClient()) { var options = new ExecutionOptions(new InfiniteViewCycleExecutionSequence(), ViewExecutionFlags.CompileOnly, versionCorrection: vc); remoteViewClient.AttachToViewProcess("Equity Option Test View 1", options); for (int i = 0; i < 30; i++) { var viewDefinition = remoteViewClient.GetViewDefinition(); if (viewDefinition != null) { ValueAssertions.AssertSensibleValue(viewDefinition); var roundTripped = remoteViewClient.GetProcessVersionCorrection(); Assert.Equal(vc, roundTripped); return; } Thread.Sleep(TimeSpan.FromSeconds(1)); } Assert.True(false, "Failed to get view definition"); } }
public void NumberOfResultsIsConsistent(ViewDefinition defn) { const int cyclesCount = 5; using (var remoteViewClient = Context.ViewProcessor.CreateClient()) using (var mre = new ManualResetEvent(false)) { var cycles = new BlockingCollection<IEngineResourceReference<IViewCycle>>(); var listener = new EventViewResultListener(); listener.ProcessCompleted += delegate { mre.Set(); }; listener.ViewDefinitionCompilationFailed += delegate { mre.Set(); }; listener.CycleExecutionFailed += delegate { mre.Set(); }; listener.CycleCompleted += (sender, e) => { cycles.Add(remoteViewClient.CreateCycleReference(e.FullResult.ViewCycleId)); remoteViewClient.TriggerCycle(); }; remoteViewClient.SetResultListener(listener); remoteViewClient.SetViewCycleAccessSupported(true); var sequence = ArbitraryViewCycleExecutionSequence.Create(Enumerable.Range(0, cyclesCount).Select(i => DateTimeOffset.Now + TimeSpan.FromHours(i))); var options = new ExecutionOptions(sequence, ViewExecutionFlags.TriggersEnabled | ViewExecutionFlags.AwaitMarketData, null, new ViewCycleExecutionOptions(default(DateTimeOffset), ExecutionOptions.GetDefaultMarketDataSpec())); remoteViewClient.AttachToViewProcess(defn.UniqueID, options); TimeSpan timeout = TimeSpan.FromMinutes(5); if (! mre.WaitOne(timeout)) { throw new TimeoutException(string.Format("Failed to get result in {0}", timeout)); } Assert.Equal(cyclesCount, cycles.Count); var specs = cycles.Select(GetAllSpecs).ToList(); var inconsistent = specs.Zip(specs.Skip(1), Tuple.Create).SelectMany( t => { var diff = new HashSet<Tuple<string, ValueSpecification>>(t.Item1); diff.SymmetricExceptWith(t.Item2); return diff; }).Distinct(); if (inconsistent.Any()) { var counts = string.Join(",", specs.Select(c => c.Count.ToString())); var inconsistentStrings = specs.Select(s => string.Join(",", s.Where(x => inconsistent.Contains(x)).Select(x => x.ToString()))); string inconsistentString = string.Join(Environment.NewLine, inconsistentStrings); throw new Exception(string.Format("Inconsistent number of results for {0} {1}: {2}", defn.Name, counts, inconsistentString)); } } }
private static IViewExecutionOptions GetNoTickOptions(IViewExecutionOptions options) { options = new ExecutionOptions(options.ExecutionSequence, options.Flags & ~ViewExecutionFlags.TriggerCycleOnTimeElapsed, options.MaxSuccessiveDeltaCycles, options.DefaultExecutionOptions); return options; }