コード例 #1
0
        private void WriteData(long sampleSize, double dataPerSecond, TimeSpan duration, double?maxSamplesToKeepPerSecond, Action <Datum, double, DataRateCalculator.SamplingAction> calculatedDataRateKeepCallback)
        {
            DataRateCalculator dataRateCalculator = new DataRateCalculator(sampleSize, maxSamplesToKeepPerSecond);

            long           numData        = (long)(dataPerSecond * duration.TotalSeconds);
            double         interDataTime  = duration.TotalSeconds / numData;
            DateTimeOffset startTimestamp = DateTimeOffset.UtcNow;

            dataRateCalculator.Start(startTimestamp);
            for (long i = 0; i < numData; ++i)
            {
                DateTimeOffset     simulatedCurrentTime = startTimestamp.AddSeconds((i + 1) * interDataTime);
                AccelerometerDatum datum = new AccelerometerDatum(simulatedCurrentTime, 1, 1, 1);
                DataRateCalculator.SamplingAction samplingAction = dataRateCalculator.Add(datum);

                double?calculatedDataPerSecond = dataRateCalculator.GetDataPerSecond();

                if (i < sampleSize - 1)
                {
                    Assert.IsNull(calculatedDataPerSecond);
                }
                else
                {
                    Assert.NotNull(calculatedDataPerSecond);
                    calculatedDataRateKeepCallback?.Invoke(datum, calculatedDataPerSecond.Value, samplingAction);
                }
            }
        }
コード例 #2
0
        public void ImmediateDataTest()
        {
            InitServiceHelper();

            DataRateCalculator calculator = new DataRateCalculator(10, 1);
            AccelerometerDatum datum      = new AccelerometerDatum(DateTimeOffset.UtcNow, 1, 1, 1);

            calculator.Start(datum.Timestamp);
            for (int i = 0; i < calculator.SampleSize * 2; ++i)
            {
                DataRateCalculator.SamplingAction action = calculator.Add(datum);

                if (i < calculator.SampleSize)
                {
                    Assert.AreEqual(action, DataRateCalculator.SamplingAction.Keep);
                }
                else
                {
                    Assert.AreEqual(action, DataRateCalculator.SamplingAction.Drop);
                }
            }
        }