public void TestProfilingStep_Stop()
        {
            // mock profiler
            var mockProfiler  = new Mock <IProfiler>();
            var timingSession = new TimingSession(mockProfiler.Object, "test", null);

            mockProfiler.Setup(p => p.Id).Returns(timingSession.Id);
            mockProfiler.Setup(p => p.GetTimingSession()).Returns(timingSession);
            var elapsed = TimeSpan.FromMilliseconds(100);

            mockProfiler.Setup(p => p.Elapsed).Returns(elapsed);

            var target   = new ProfilingStep(mockProfiler.Object, "test", null);
            var elapsed2 = TimeSpan.FromMilliseconds(200);

            mockProfiler.Setup(p => p.Elapsed).Returns(elapsed2);

            target.Stop(true);

            Assert.AreEqual((elapsed2 - elapsed).TotalMilliseconds, target.DurationMilliseconds);
            Assert.AreEqual(1, timingSession.Timings.Count());
            Assert.AreEqual(target, timingSession.Timings.First());

            // assert no duplicated steps
            target.Stop(true);
            Assert.AreEqual(1, timingSession.Timings.Count());
            Assert.AreEqual(target, timingSession.Timings.First());
        }
Beispiel #2
0
        public void TestSerializeSessions()
        {
            ITimingSession timingSession = new TimingSession();
            var            json          = ImportSerializer.SerializeSessions(new[] { timingSession });

            var deserializedSession = ImportSerializer.DeserializeSessions(json).First();
        }
Beispiel #3
0
        public void TestProfilingSessionExtensions_AddTag_InvalidTag()
        {
            // mock profiler
            var profilerId    = Guid.NewGuid();
            var mockProfiler  = new Mock <IProfiler>();
            var timingSession = new TimingSession(mockProfiler.Object, "test", null);

            mockProfiler.Setup(p => p.Id).Returns(profilerId);
            mockProfiler.Setup(p => p.GetTimingSession()).Returns(timingSession);

            var target = new ProfilingSession(mockProfiler.Object);

            target.AddTag("");

            Assert.IsNull(timingSession.Tags);
        }
Beispiel #4
0
        public void TestProfilingSessionExtensions_AddField()
        {
            // mock profiler
            var profilerId    = Guid.NewGuid();
            var mockProfiler  = new Mock <IProfiler>();
            var timingSession = new TimingSession(mockProfiler.Object, "test", null);

            mockProfiler.Setup(p => p.Id).Returns(profilerId);
            mockProfiler.Setup(p => p.GetTimingSession()).Returns(timingSession);

            var target = new ProfilingSession(mockProfiler.Object);

            target.AddField("field1", "value1");

            Assert.AreEqual("value1", timingSession.Data["field1"]);
        }
Beispiel #5
0
        public void TestProfilingSessionExtensions_AddTag()
        {
            // mock profiler
            var profilerId    = Guid.NewGuid();
            var mockProfiler  = new Mock <IProfiler>();
            var timingSession = new TimingSession(mockProfiler.Object, "test", null);

            mockProfiler.Setup(p => p.Id).Returns(profilerId);
            mockProfiler.Setup(p => p.GetTimingSession()).Returns(timingSession);

            var target = new ProfilingSession(mockProfiler.Object);

            target.AddTagImpl("tag1");

            Assert.AreEqual(1, timingSession.Tags.Count);
            Assert.AreEqual("tag1", timingSession.Tags.First());
        }
        /// <summary>
        /// Parses session fields.
        /// </summary>
        /// <param name="sessionJson"></param>
        /// <returns></returns>
        protected ITimingSession ParseSessionFields(JObject sessionJson)
        {
            var session = new TimingSession();

            foreach (var keyValue in sessionJson)
            {
                switch (keyValue.Key)
                {
                case "machine":
                    session.MachineName = keyValue.Value.ToObject <string>();
                    break;

                default:
                    ParseTimingField(session, keyValue.Key, keyValue.Value.ToString());
                    break;
                }
            }

            return(session);
        }
        public void TestProfilingSession_SetCurrentProfilingSession()
        {
            // mock profiler
            var mockProfiler  = new Mock <IProfiler>();
            var timingSession = new TimingSession(mockProfiler.Object, "test", null);

            timingSession.AddTiming(new Timing(mockProfiler.Object, "step", timingSession.Id, "root", null));
            timingSession.AddTiming(new Timing(mockProfiler.Object, "step", timingSession.Timings.First().Id, "step2", null));
            mockProfiler.Setup(p => p.Id).Returns(timingSession.Id);
            mockProfiler.Setup(p => p.GetTimingSession()).Returns(timingSession);

            var session = new ProfilingSession(mockProfiler.Object);
            var success = false;

            // execute in async thread to avoid conflicts
            var thread = new Thread(() =>
            {
                lock (typeof(ProfilingSession))
                {
                    ProfilingSession.SetCurrentProfilingSession(session);

                    Assert.AreEqual(session, ProfilingSession.ProfilingSessionContainer.CurrentSession);
                    Assert.AreEqual(timingSession.Timings.First().Id, ProfilingSession.ProfilingSessionContainer.CurrentSessionStepId);

                    ProfilingSession.SetCurrentProfilingSession(session, timingSession.Timings.Last().Id);
                    Assert.AreEqual(timingSession.Timings.Last().Id, ProfilingSession.ProfilingSessionContainer.CurrentSessionStepId);
                }

                success = true;
            });

            thread.Start();
            thread.Join();

            Assert.IsTrue(success);
        }