public void SummaryWriterFlushTest()
        {
            var stream        = new StringStream();
            var summaryWriter = new SummaryWriter(stream.Writer)
            {
                IdleFlushRate = 10, NonIdleFlushRate = 5
            };

            for (var i = 0; i < 3; i++)
            {
                var measurement = new Measurement(new DateTime(2020, 12, 28, 0, 0, i), 2400 + i, 8000 + i);
                var result      = new FlowMeter
                {
                    Amplitude         = i,
                    HighPass          = 0,
                    LowPassFast       = 2400,
                    LowPassSlow       = 2402,
                    Exclude           = false,
                    ExcludeAll        = false,
                    Flow              = false,
                    LowPassOnHighPass = 5 - i,
                    Outlier           = false,
                    Drift             = false
                };
                summaryWriter.AddMeasurement(measurement, result);
                summaryWriter.PrepareWrite();
                summaryWriter.Write();
                Assert.IsTrue(string.IsNullOrEmpty(stream.Content()), "nothing written yet");
            }
            summaryWriter.Flush();
            Assert.AreEqual("S,3,0,0,0,2400,2402,3,0,0,0,8001,50790\r\n", stream.Content(), "flush worked");
        }
        public void SummaryWriterFlushRate1Test()
        {
            var stream        = new StringStream();
            var summaryWriter = new SummaryWriter(stream.Writer)
            {
                IdleFlushRate = 1, NonIdleFlushRate = 1
            };
            var measurement = new Measurement(new DateTime(2020, 12, 28, 0, 0, 1), 2400, 8000);
            var result      = new FlowMeter
            {
                Amplitude         = 0,
                HighPass          = 0,
                LowPassFast       = 2400,
                LowPassSlow       = 2402,
                Exclude           = false,
                ExcludeAll        = false,
                Flow              = false,
                LowPassOnHighPass = 5,
                Outlier           = false,
                Drift             = false
            };

            summaryWriter.AddMeasurement(measurement, result);
            summaryWriter.PrepareWrite();
            summaryWriter.Write();
            Assert.AreEqual("S,2400,0,0,0,2400,2402,5,0,0,0,8000,35625\r\n", stream.Content(), "single measurement written with sample value");
        }
Exemplo n.º 3
0
 public void EstablishContext()
 {
     _writer = new StringWriter();
     _output = new SummaryWriter(_writer);
     var feature = new Feature("feature title");
     var featureResult = new FeatureResult(feature.Title);
     var scenarioResult = new ScenarioResult(feature, "scenario title");
     scenarioResult.AddActionStepResult(new StepResult("a".AsStringStep(""), new Passed()));
     scenarioResult.AddActionStepResult(new StepResult("b".AsStringStep(""), new Passed()));
     scenarioResult.AddActionStepResult(new StepResult("c".AsStringStep(""), new Pending("pending reason")));
     scenarioResult.AddActionStepResult(new StepResult("c".AsStringStep(""), new PendingNotImplemented("not implemented")));
     scenarioResult.AddActionStepResult(new StepResult("d".AsStringStep(""), new Failed(new Exception("why it failed"))));
     scenarioResult.AddActionStepResult(new StepResult("c".AsStringStep(""), new Skipped("previous step failed")));
     featureResult.AddResult(scenarioResult);
     _output.WriteSummaryResults(featureResult);
 }
Exemplo n.º 4
0
        public ActionResult Post(HerokuRequest request)
        {
            if (!Authorize())
            {
                Response.StatusCode = 401;
                return(Content("Unauthorized"));
            }

            Trace(SummaryWriter.GetSummary(request));

            var org = _createOrganisationCommand.Invoke(new CreateOrganisationRequest()
            {
                Email            = request.heroku_id,
                FirstName        = "Root",
                LastName         = "AppHarbor User",
                OrganisationName = request.heroku_id,
                Password         = Membership.GeneratePassword(10, 5),
                SpecialUser      = SpecialUser.AppHarbor,
                CallbackUrl      = request.callback_url,
            });

            if (org.Status != CreateOrganisationStatus.Ok)
            {
                Trace(org.Status.ToString());
                Response.StatusCode = 400;
                return(Content(org.Status.ToString()));
            }

            var setPlanResponse = _setExternallyBilledSubscriptionCommand.Invoke(new SetExternallyBilledSubscriptionRequest()
            {
                ExternalPlanId = request.plan,
                PlanType       = PaymentPlanType.AppHarbor,
                OrganisationId = org.OrganisationId,
            });

            if (setPlanResponse.Status != SetExternallyBilledSubscriptionStatus.Ok)
            {
                Trace(setPlanResponse.Status.ToString());
                Response.StatusCode = 503;
                return(new PlainJsonNetResult(new { message = setPlanResponse.Status.ToString() }));
            }

            //create organisation & application with AppHarbor user
            var application = Core.Session.Raven.Load <Application>(org.ApplicationId);

            return(new PlainJsonNetResult(new{ id = IdHelper.GetFriendlyId(org.OrganisationId), config = new { ERRORDITE_TOKEN = application.Token, ERRORDITE_URL = "https://www.errordite.com/receiveerror" }, message = "Welcome to Errordite!" }));
        }
Exemplo n.º 5
0
        public void EstablishContext()
        {
            _writer = new StringWriter();
            _output = new SummaryWriter(_writer);
            var feature        = new Feature("feature title");
            var featureResult  = new FeatureResult(feature.Title);
            var scenarioResult = new ScenarioResult(feature, "scenario title");

            scenarioResult.AddActionStepResult(new StepResult("a".AsStringStep(""), new Passed()));
            scenarioResult.AddActionStepResult(new StepResult("b".AsStringStep(""), new Passed()));
            scenarioResult.AddActionStepResult(new StepResult("c".AsStringStep(""), new Pending("pending reason")));
            scenarioResult.AddActionStepResult(new StepResult("c".AsStringStep(""), new PendingNotImplemented("not implemented")));
            scenarioResult.AddActionStepResult(new StepResult("d".AsStringStep(""), new Failed(new Exception("why it failed"))));
            scenarioResult.AddActionStepResult(new StepResult("c".AsStringStep(""), new Skipped("previous step failed")));
            featureResult.AddResult(scenarioResult);
            _output.WriteSummaryResults(featureResult);
        }
        public void SummaryWriterIdleOutlierTest()
        {
            // we insert outliers after 8 and 9. It should finish the idle round and then start a non-idle one.
            var stream        = new StringStream();
            var summaryWriter = new SummaryWriter(stream.Writer)
            {
                IdleFlushRate = 10, NonIdleFlushRate = 5
            };

            for (var i = 0; i < 15; i++)
            {
                var measurement = new Measurement(new DateTime(2020, 12, 28, 0, 0, i), 2400 + (i > 7 ? 200 : 0), i == 0 ? 2500 : 7993 + i);
                var result      = new FlowMeter
                {
                    Amplitude         = 5 + (i > 7 ? 200 : 0), HighPass = 0, LowPassFast = 2400 - i, LowPassSlow = 2385 + i,
                    Exclude           = i > 7, ExcludeAll = false, Flow = false,
                    LowPassOnHighPass = i, Outlier = i > 7, Drift = i > 9
                };
                summaryWriter.AddMeasurement(measurement, result);
                summaryWriter.PrepareWrite();
                Assert.AreEqual(i < 8 ? 10u : 5u, summaryWriter.FlushRate,
                                " The first 8 data points FlushRate is 10, then it becomes 5 because of outliers (round {0})", i);
                if (i != 9)
                {
                    // force skipping the write at the time it was supposed to, so it gets done next time.
                    summaryWriter.Write();
                }

                if (i <= 9)
                {
                    Assert.IsTrue(string.IsNullOrEmpty(stream.Content()), "Nothing written the first 9 points");
                }
                else if (i < 14)
                {
                    //"S,Measure,Flows,SumAmplitude,SumLPonHP,LowPassFast,LPonHP,Outliers,Waits,Excludes,AvgDelay,CRC"
                    Assert.AreEqual("S,10,0,0,0,2391,2394,9,2,0,2,7448,49755\r\n", stream.Content(),
                                    "At 10 we get a summary with 2 outliers and 2 excludes");
                }
                else
                {
                    Assert.AreEqual("S,10,0,0,0,2391,2394,9,2,0,2,7448,49755\r\nS,5,0,0,0,2386,2399,14,5,5,5,8005,17350\r\n", stream.Content(),
                                    "At 15 we get the next batch with 5 outliers and excludes");
                }
            }
        }
Exemplo n.º 7
0
        public void EnsureDataIsNotWrittenTwice()
        {
            Simulations sims    = Utilities.GetRunnableSim();
            Simulation  sim     = sims.FindChild <Simulation>();
            Summary     summary = sim.FindChild <Summary>();

            // Write 2 messages to the DB during StartOfSimulation.
            string        message1 = "message 1";
            string        message2 = "A slightly longer message";
            string        message3 = "Written in OnCompleted";
            SummaryWriter writer   = new SummaryWriter();

            writer.AddMessage("[Clock].StartOfSimulation", message1);
            writer.AddMessage("[Clock].StartOfSimulation", message2);
            writer.AddMessage("[Simulation].Completed", message3);

            Structure.Add(writer, sim);

            Runner           runner = new Runner(sims);
            List <Exception> errors = runner.Run();

            if (errors != null && errors.Count > 0)
            {
                throw errors[0];
            }

            IDataStore storage  = sims.FindChild <IDataStore>();
            DataTable  messages = storage.Reader.GetData("_Messages");

            // Clock will write its own "Simulation terminated normally" message.
            Assert.AreEqual(5, messages.Rows.Count);

            // The first row will be a warning caused by the lack of a
            // microclimate model.

            Assert.AreEqual(message1, messages.Rows[1][6]);
            Assert.AreEqual(message2, messages.Rows[2][6]);

            // The fourth row should not be written by SummaryWriter.
            Assert.AreNotEqual(writer.Name, messages.Rows[3]["ComponentName"]);

            // The fifth will be the "Simulation terminated normally" message.
            Assert.AreEqual(message3, messages.Rows[4][6]);
        }
        public void SummaryWriterExcludeAllTest()
        {
            // ExcludeAll becomes true in the third sample. That should put excluded on 3. It should finish the idle round and then start a non-idle one.
            // Then we put WaitSamples on 1 to get WaitCount filled.
            // We do this all before sample 5 so the non idle rate kicks in early.
            var stream        = new StringStream();
            var summaryWriter = new SummaryWriter(stream.Writer)
            {
                IdleFlushRate = 10, NonIdleFlushRate = 5
            };

            for (var i = 0; i < 15; i++)
            {
                var measurement = new Measurement(new DateTime(2020, 12, 28, 0, 0, i), 2400 + (i > 7 ? 200 : 0), i == 0 ? 2500 : 7500 + i * 5);

                var result = new FlowMeter
                {
                    Amplitude  = i == 0 ? 10000 : 2000, HighPass = 0, LowPassFast = 2400 - i, LowPassSlow = 2385 + i, Exclude = i == 2 || i == 3,
                    ExcludeAll = i == 2, Flow = false, LowPassOnHighPass = 10 + i, Outlier = i == 2, Drift = false
                };
                summaryWriter.AddMeasurement(measurement, result);
                summaryWriter.PrepareWrite();
                Assert.AreEqual(i < 2 || i > 4 ? 10u : 5u, summaryWriter.FlushRate,
                                "Flush rate is 10 the first two data points, and after the 5th. In between it is 5");
                summaryWriter.Write();
                if (i < 4)
                {
                    Assert.IsTrue(string.IsNullOrEmpty(stream.Content()), "Nothing written before the 5th data point");
                }
                else if (i < 14)
                {
                    //"S,Measure,Flows,SumAmplitude,SumLPonHP,LowPassFast,LPonHP,Outliers,Waits,Drifts,AvgDelay,CRC"
                    Assert.AreEqual("S,5,0,0,0,2396,2389,14,1,0,4,6510,17220\r\n", stream.Content(), "The right data written after 5 points");
                }
                else
                {
                    Assert.AreEqual("S,5,0,0,0,2396,2389,14,1,0,4,6510,17220\r\nS,10,0,0,0,2386,2399,24,0,0,0,7548,8484\r\n", stream.Content(),
                                    "Without special events, the next flush is after 10 data points");
                }
            }
        }
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("Please enter the path of an input file.");
                Console.WriteLine("Enter ./TestInputs/Sample.txt for a pregenerated file");

                var filePath   = Console.ReadLine();
                var outputText = SummaryWriter.GetSummaryText(filePath);

                Console.WriteLine();
                Console.Write(outputText);
                Console.Write("\n\nPress any key to continue... ");
                Console.ReadKey();
                Console.WriteLine();
            }
            catch (Exception err)
            {
                DebugWriter.WriteException(err);
                Console.Write("+++++Abort+++++\n");
            }
        }
Exemplo n.º 10
0
        public void SummaryWriterFlowTest()
        {
            var stream        = new StringStream();
            var summaryWriter = new SummaryWriter(stream.Writer)
            {
                IdleFlushRate = 10, NonIdleFlushRate = 5
            };

            for (var i = 0; i < 10; i++)
            {
                var measurement = new Measurement(new DateTime(2020, 12, 28, 0, 0, i), 2400 + i, 8000 + i);
                var result      = new FlowMeter
                {
                    Amplitude         = 5 + (i > 7 ? 10 : 0), HighPass = 0, LowPassFast = 2400, LowPassSlow = 2398, Exclude = false, ExcludeAll = false,
                    Flow              = i > 7,
                    LowPassOnHighPass = i, Outlier = false, Drift = false
                };
                summaryWriter.AddMeasurement(measurement, result);
                summaryWriter.PrepareWrite();
                summaryWriter.Write();
                if (i < 9)
                {
                    Assert.IsTrue(string.IsNullOrEmpty(stream.Content()), "Nothing written the first 9 data points");
                }
                else
                {
                    //"S,Measure,Flows,SumAmplitude,SumLPonHP,LowPassFast,LowPassSlow,LPonHP,Outliers,Waits,Excludes,AvgDelay,CRC"
                    Assert.AreEqual("S,10,2,30,17,2400,2398,9,0,0,0,8005,56358\r\n", stream.Content(),
                                    "After 10 points, we get a summary with 2 flows, and SumAmplitude and SumLPonP are populated");
                }
            }
            // Flush should not change anything as we have no more data.
            summaryWriter.Flush();
            Assert.AreEqual("S,10,2,30,17,2400,2398,9,0,0,0,8005,56358\r\n", stream.Content(),
                            "After 10 points, we get a summary with 2 flows, and SumAmplitude and SumLPonP are populated");
        }
Exemplo n.º 11
0
        public void SummaryWriterIdleTest()
        {
            var stream        = new StringStream();
            var summaryWriter = new SummaryWriter(stream.Writer)
            {
                IdleFlushRate = 10, NonIdleFlushRate = 5
            };

            for (var i = 0; i < 10; i++)
            {
                var measurement = new Measurement(new DateTime(2020, 12, 28, 0, 0, i), 2400 + i, 8000 + i);
                var result      = new FlowMeter
                {
                    Amplitude         = i, HighPass = 0, LowPassFast = 2400, LowPassSlow = 2402, Exclude = false, ExcludeAll = false, Flow = false,
                    LowPassOnHighPass = 5 - i,
                    Outlier           = false, Drift = false
                };
                summaryWriter.AddMeasurement(measurement, result);
                if (i == 0)
                {
                    Assert.AreEqual(10u, summaryWriter.FlushRate, "Flush rate stays 10 (idle flush rate) when there is nothing special.");
                }
                summaryWriter.PrepareWrite();
                summaryWriter.Write();
                if (i < 9)
                {
                    Assert.IsTrue(string.IsNullOrEmpty(stream.Content()), "nothing written the fist 9 data points");
                }
                else
                {
                    //"S,Measure,Flows,SumAmplitude,SumLPonHP,LowPassFast,LowPassSlow,LPonHP,Outliers,Waits,Excludes,AvgDelay,CRC"
                    Assert.AreEqual("S,10,0,0,0,2400,2402,-4,0,0,0,8005,1750\r\n", stream.Content(),
                                    "10 idle points written after #10. LowPassFast and LPonHP get reported too.");
                }
            }
        }
Exemplo n.º 12
0
 private void WriteSummary()
 {
     var summaryWriter = new SummaryWriter(writer);
     summaryWriter.WriteCompleteSummary(allResults);
 }
Exemplo n.º 13
0
        private void WriteSummary()
        {
            var summaryWriter = new SummaryWriter(writer.Out);

            summaryWriter.WriteCompleteSummary(allResults);
        }
Exemplo n.º 14
0
        /// <summary>
        /// Uses the SummaryWriter to (efficiently) output an object to the trace.
        /// </summary>
        public void TraceObject <T>(T obj) where T : class
        {
            var type = obj == null ? typeof(T) : obj.GetType();

            Auditor.Trace(type, SummaryWriter.GetSummary(obj));
        }