コード例 #1
0
        public void TestFlow()
        {
            svc.CurrentTime = 1000;
            Assert.IsNull(svc.NearestTime);

            svc.Add(2000, execs[0]);
            Assert.AreEqual(3000, svc.NearestTime.Value);

            svc.Add(2100, execs[1]);
            Assert.AreEqual(3000, svc.NearestTime.Value);

            svc.Add(2000, execs[2]);
            Assert.AreEqual(3000, svc.NearestTime.Value);

            svc.CurrentTime = 1100;
            svc.Add(100, execs[3]);
            Assert.AreEqual(1200, svc.NearestTime.Value);

            svc.CurrentTime = 1199;
            svc.Evaluate(executions);
            Assert.IsTrue(executions.IsEmpty());

            svc.CurrentTime = 1200;
            svc.Evaluate(executions);
            EPAssertionUtil.AssertEqualsExactOrder(new object[] { execs[3] }, executions.GetEnumerator());
            Assert.AreEqual(3000, svc.NearestTime.Value);

            executions.Clear();
            svc.CurrentTime = 2999;
            svc.Evaluate(executions);
            Assert.IsTrue(executions.IsEmpty());

            svc.CurrentTime = 3000;
            svc.Evaluate(executions);
            EPAssertionUtil.AssertEqualsExactOrder(new object[] { execs[0], execs[2] }, executions.GetEnumerator());
            Assert.AreEqual(3100, svc.NearestTime.Value);

            svc.Clear();
            Assert.IsNull(svc.NearestTime);

            executions.Clear();
            svc.CurrentTime = Int64.MaxValue - 1;
            svc.Evaluate(executions);
            Assert.IsTrue(executions.IsEmpty());
            Assert.IsNull(svc.NearestTime);
        }
コード例 #2
0
ファイル: MetricExecEngine.cs プロジェクト: lanicon/nesper
 public void Execute(MetricExecutionContext context)
 {
     long inputCount = context.FilterService.NumEventsEvaluated;
     long schedDepth = context.SchedulingService.ScheduleHandleCount;
     var deltaInputCount = lastMetric == null ? inputCount : inputCount - lastMetric.InputCount;
     var metric = new RuntimeMetric(
         runtimeURI,
         metricScheduleService.CurrentTime,
         inputCount,
         deltaInputCount,
         schedDepth);
     lastMetric = metric;
     metricEventRouter.Route(metric);
     metricScheduleService.Add(Interval, this);
 }