예제 #1
0
        //TOD: Test that we haven't included market data globally which should only be in the structured objects

        private static IViewComputationResultModel GetFirstResult(IViewExecutionOptions options, string viewName)
        {
            using (var remoteViewClient2 = Context.ViewProcessor.CreateClient())
            {
                return(remoteViewClient2.GetResults(viewName, options).First());
            }
        }
예제 #2
0
 private static IViewExecutionOptions GetNoTickOptions(IViewExecutionOptions options)
 {
     options = new ExecutionOptions(options.ExecutionSequence,
                                    options.Flags & ~ViewExecutionFlags.TriggerCycleOnTimeElapsed,
                                    options.MaxSuccessiveDeltaCycles,
                                    options.DefaultExecutionOptions);
     return(options);
 }
예제 #3
0
        public void AttachToViewProcess(UniqueId viewDefinitionId, IViewExecutionOptions executionOptions, bool newBatchProcess = false)
        {
            ArgumentChecker.NotNull(viewDefinitionId, "viewDefinitionId");
            ArgumentChecker.NotNull(executionOptions, "executionOptions");
            var request = new AttachToViewProcessRequest(viewDefinitionId, executionOptions, newBatchProcess);

            REST.Resolve("attachSearch").Post(request);
        }
예제 #4
0
        public void CanRunSingleYesterdayCycleBatch()
        {
            IViewExecutionOptions req = ExecutionOptions.GetSingleCycle(DateTimeOffset.Now - TimeSpan.FromDays(1), new LiveMarketDataSpecification());
            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);
        }
예제 #5
0
        public void CanRunSingleCycleBatch()
        {
            IViewExecutionOptions req = ExecutionOptions.SingleCycle;
            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);
        }
예제 #6
0
 public void CanRunSingleCycleBatchParallel()
 {
     //TODO this is not the right place for this test
     Parallel.For(1, 20, new ParallelOptions {
         MaxDegreeOfParallelism = 4
     }, delegate(int i)
     {
         IViewExecutionOptions req = ExecutionOptions.SingleCycle;
         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);
     });
 }
예제 #7
0
        //TODO [Obsolete("Use the view UniqueId")]
        public void AttachToViewProcess(string viewDefinitionName, IViewExecutionOptions executionOptions, bool newBatchProcess = false)
        {
            ArgumentChecker.NotNull(viewDefinitionName, "viewDefinitionName");
            ArgumentChecker.NotNull(executionOptions, "executionOptions");
            var matching = _viewProcessor.ViewDefinitionRepository.GetDefinitionEntries().Where(k => k.Value == viewDefinitionName).ToList();

            switch (matching.Count)
            {
            case 0:
                throw new DataNotFoundException("No such view");

            case 1:
                AttachToViewProcess(matching.Single().Key, executionOptions, newBatchProcess);
                break;

            default:
                throw new DataNotFoundException("Ambiguous view");
            }
        }
        public static Tuple<IEnumerable<ViewDefinitionCompiledArgs>, IEnumerable<CycleCompletedArgs>> RunToCompletion(IViewExecutionOptions options)
        {
            using (var remoteViewClient = Context.ViewProcessor.CreateClient())
            {
                var cycles = new ConcurrentQueue<CycleCompletedArgs>();
                var compiles = new ConcurrentQueue<ViewDefinitionCompiledArgs>();

                using (var manualResetEvent = new ManualResetEvent(false))
                {
                    var listener = new EventViewResultListener();
                    listener.ViewDefinitionCompiled += (sender, e) => compiles.Enqueue(e);
                    listener.CycleCompleted += (sender, e) => cycles.Enqueue(e);
                    listener.ProcessCompleted += (sender, e) => manualResetEvent.Set();
                    remoteViewClient.SetResultListener(listener);
                    remoteViewClient.AttachToViewProcess(ViewName, options);
                    manualResetEvent.WaitOne();
                }

                Assert.InRange(compiles.Count, cycles.Any() ? 1 : 0, cycles.Count + 1);
                Assert.True(remoteViewClient.IsCompleted);
                return new Tuple<IEnumerable<ViewDefinitionCompiledArgs>, IEnumerable<CycleCompletedArgs>>(compiles, cycles);
            }
        }
 public static IEnumerable<IViewComputationResultModel> GetResults(this RemoteViewClient client, UniqueId viewDefinitionId, IViewExecutionOptions executionOptions, bool newBatchProcess = false)
 {
     return GetCycles(client, viewDefinitionId, executionOptions, newBatchProcess).Select(e => e.FullResult);
 }
 public static IEnumerable<CycleCompletedArgs> GetCycles(this RemoteViewClient client, UniqueId viewDefinitionId, IViewExecutionOptions executionOptions, bool newBatchProcess = false)
 {
     return GetCycles(client, rvc => rvc.AttachToViewProcess(viewDefinitionId, executionOptions, newBatchProcess));
 }
 public static IEnumerable <CycleCompletedArgs> GetCycles(this RemoteViewClient client, UniqueId viewDefinitionId, IViewExecutionOptions executionOptions, bool newBatchProcess = false)
 {
     return(GetCycles(client, rvc => rvc.AttachToViewProcess(viewDefinitionId, executionOptions, newBatchProcess)));
 }
 public static IEnumerable <IViewComputationResultModel> GetResults(this RemoteViewClient client, UniqueId viewDefinitionId, IViewExecutionOptions executionOptions, bool newBatchProcess = false)
 {
     return(GetCycles(client, viewDefinitionId, executionOptions, newBatchProcess).Select(e => e.FullResult));
 }
 private static IViewExecutionOptions GetNoTickOptions(IViewExecutionOptions options)
 {
     options = new ExecutionOptions(options.ExecutionSequence,
                                    options.Flags & ~ViewExecutionFlags.TriggerCycleOnTimeElapsed,
                                    options.MaxSuccessiveDeltaCycles,
                                    options.DefaultExecutionOptions);
     return options;
 }
예제 #14
0
        public static Tuple <IEnumerable <ViewDefinitionCompiledArgs>, IEnumerable <CycleCompletedArgs> > RunToCompletion(IViewExecutionOptions options)
        {
            using (var remoteViewClient = Context.ViewProcessor.CreateClient())
            {
                var cycles   = new ConcurrentQueue <CycleCompletedArgs>();
                var compiles = new ConcurrentQueue <ViewDefinitionCompiledArgs>();

                using (var manualResetEvent = new ManualResetEvent(false))
                {
                    var listener = new EventViewResultListener();
                    listener.ViewDefinitionCompiled += (sender, e) => compiles.Enqueue(e);
                    listener.CycleCompleted         += (sender, e) => cycles.Enqueue(e);
                    listener.ProcessCompleted       += (sender, e) => manualResetEvent.Set();
                    remoteViewClient.SetResultListener(listener);
                    remoteViewClient.AttachToViewProcess(ViewName, options);
                    manualResetEvent.WaitOne();
                }

                Assert.InRange(compiles.Count, cycles.Any() ? 1 : 0, cycles.Count + 1);
                Assert.True(remoteViewClient.IsCompleted);
                return(new Tuple <IEnumerable <ViewDefinitionCompiledArgs>, IEnumerable <CycleCompletedArgs> >(compiles, cycles));
            }
        }
예제 #15
0
 public AttachToViewProcessRequest(UniqueId viewDefinitionId, IViewExecutionOptions executionOptions, bool newBatchProcess)
 {
     _viewDefinitionId = viewDefinitionId;
     _executionOptions = executionOptions;
     _newBatchProcess = newBatchProcess;
 }
예제 #16
0
 public AttachToViewProcessRequest(UniqueId viewDefinitionId, IViewExecutionOptions executionOptions, bool newBatchProcess)
 {
     _viewDefinitionId = viewDefinitionId;
     _executionOptions = executionOptions;
     _newBatchProcess  = newBatchProcess;
 }
 //TOD: Test that we haven't included market data globally which should only be in the structured objects
 private static IViewComputationResultModel GetFirstResult(IViewExecutionOptions options, string viewName)
 {
     using (var remoteViewClient2 = Context.ViewProcessor.CreateClient())
     {
         return remoteViewClient2.GetResults(viewName, options).First();
     }
 }