private static IDEStateEvent CreateShutdownEventAfter(IDEEvent previousEvent, int milliseconds = 60000)
        {
            var shutdownEvent = new IDEStateEvent
            {
                IDELifecyclePhase = IDELifecyclePhase.Shutdown
            };

            SetTriggeredAtToAfter(shutdownEvent, previousEvent, milliseconds);
            return(shutdownEvent);
        }
コード例 #2
0
        private static IDEStateEvent CreateArbitraryEvent()
        {
            var @event = new IDEStateEvent
            {
                OpenDocuments = { Names.Document("some doc") },
                OpenWindows   = { Names.Window("some window") }
            };

            return(@event);
        }
コード例 #3
0
        public void CollectsOpenWindowsFromIDEStateEvent()
        {
            var ideEvent = new IDEStateEvent {
                OpenWindows = { Names.Window("window 1"), Names.Window("window 2") }
            };

            Process(ideEvent);

            AssertNameCollected(ideEvent.OpenWindows.ToArray());
        }
コード例 #4
0
        public void CollectsOpenDocumentsFromIDEStateEvent()
        {
            var ideEvent = new IDEStateEvent {
                OpenDocuments = { Names.Document("doc 1"), Names.Document("doc 2") }
            };

            Process(ideEvent);

            AssertNameCollected(ideEvent.OpenDocuments.ToArray());
        }
コード例 #5
0
        // RS9 TODO: this tests regularly fails during the build... what's going on here?
        public void ShouldFlushOnShutdown()
        {
            var anEvent       = TestEventFactory.SomeEvent();
            var shutdownEvent = new IDEStateEvent {
                IDELifecyclePhase = IDELifecyclePhase.Shutdown
            };

            WhenLoggerReceives(anEvent);
            _uut.Shutdown(shutdownEvent);

            CollectionAssert.AreEqual(new IDEEvent[] { anEvent, shutdownEvent }, _loggedEvents);
        }
コード例 #6
0
 private void ProcessIDEStateEvent(IDEStateEvent @event)
 {
     if (IsIntermediateRuntimeEvent(@event))
     {
         DropCurrentEvent();
     }
     else
     {
         var activity = IsStartup(@event) ? Activity.EnterIDE : Activity.LeaveIDE;
         InsertActivity(@event, activity);
     }
 }
        private void ProcessIDEStateEvent(IDEStateEvent @event)
        {
            switch (@event.IDELifecyclePhase)
            {
            case IDELifecyclePhase.Startup:
                Log("  START at {0} - {1}", @event.GetTriggeredAt(), @event.IDESessionUUID);
                break;

            case IDELifecyclePhase.Shutdown:
                Log("  STOP  at {0} - {1}", @event.GetTriggeredAt(), @event.IDESessionUUID);
                break;
            }
        }
コード例 #8
0
        public void ShouldSerializeToString()
        {
            var e = new IDEStateEvent
            {
                IDELifecyclePhase = IDELifecyclePhase.Runtime,
                OpenDocuments     = new[] { Names.Document("d SomeOpenDocument") },
                OpenWindows       = new[] { Names.Window("w SomeOpenWindow") }
            };
            const string expected =
                "{\"$type\":\"KaVE.Commons.Model.Events.VisualStudio.IDEStateEvent, KaVE.Commons\",\"IDELifecyclePhase\":2,\"OpenWindows\":[\"0Win:w SomeOpenWindow\"],\"OpenDocuments\":[\"0Doc:d SomeOpenDocument\"],\"TriggeredBy\":0}";

            JsonAssert.SerializesTo(e, expected);
            JsonAssert.DeserializesTo(expected, e);
        }
コード例 #9
0
        private void ProcessIDEStateEvent(IDEStateEvent @event)
        {
            switch (@event.IDELifecyclePhase)
            {
            case IDELifecyclePhase.Startup:
                if (_ideIsRunning)
                {
                    Insert(CreateMissingShutdownEvent(_lastEventTriggerTime));
                }
                _ideIsRunning = true;
                break;

            case IDELifecyclePhase.Shutdown:
                _ideIsRunning = false;
                break;
            }
        }
        public void SetsSessionIdOfIDEStateEventToSessionIdOfSubsequentEventIfNotSetAndNoPreviousEventExists()
        {
            GivenInputArchive("0.zip")
            .With("0.json", _brokenShutdownEvent)
            .With("1.json", _completeEvent);

            WhenImportIsRun();

            var expected = new IDEStateEvent
            {
                IDESessionUUID    = _completeEvent.IDESessionUUID,
                TriggeredAt       = _brokenShutdownEvent.TriggeredAt,
                IDELifecyclePhase = _brokenShutdownEvent.IDELifecyclePhase
            };

            CollectionAssert.Contains(TestFeedbackDatabase.GetEventsCollection().FindAll(), expected);
        }
        public void CorrectsStateEventIfAllPreviousAreDuplicates()
        {
            GivenInputArchive("0.zip").With("0.json", _completeEvent);
            GivenInputArchive("1.zip")
            .With("0.json", _completeEvent)
            .With("1.json", _brokenShutdownEvent);

            WhenImportIsRun();

            var expected = new IDEStateEvent
            {
                IDESessionUUID    = _completeEvent.IDESessionUUID,
                TriggeredAt       = _brokenShutdownEvent.TriggeredAt,
                IDELifecyclePhase = _brokenShutdownEvent.IDELifecyclePhase
            };

            CollectionAssert.Contains(TestFeedbackDatabase.GetEventsCollection().FindAll(), expected);
        }
        public void TreatsIDEStateEventAsAnonymousEventIfWholeArchiveIsAnonymous()
        {
            var anonymousEvent = new TestIDEEvent {
                IDESessionUUID = null
            };

            GivenInputArchive("0.zip")
            .With("0.json", anonymousEvent)
            .With("1.json", _brokenShutdownEvent);

            WhenImportIsRun();

            var onlyDeveloper = TestFeedbackDatabase.GetDeveloperCollection().FindAll().First();
            var expected      = new IDEStateEvent
            {
                IDESessionUUID    = onlyDeveloper.Id.ToString(),
                TriggeredAt       = _brokenShutdownEvent.TriggeredAt,
                IDELifecyclePhase = _brokenShutdownEvent.IDELifecyclePhase
            };

            CollectionAssert.Contains(TestFeedbackDatabase.GetEventsCollection().FindAll(), expected);
        }
コード例 #13
0
        public void ShouldSetIDESessionUUIDToShutdownEvent()
        {
            IDEStateEvent shutdownEvent = null;
            var           mockLogger    = new Mock <IEventLogger>();

            mockLogger.Setup(logger => logger.Shutdown(It.IsAny <IDEStateEvent>()))
            .Callback <IDEStateEvent>(ideEvent => shutdownEvent = ideEvent);

            Lifetimes.Using(
                lt =>
                new IDEStateEventGenerator(
                    TestRSEnv,
                    TestMessageBus,
                    lt,
                    TestDateUtils,
                    mockLogger.Object,
                    TestThreading));

            Assert.AreEqual(TestIDESession.UUID, shutdownEvent.IDESessionUUID);
            Assert.AreEqual(IDELifecyclePhase.Shutdown, shutdownEvent.IDELifecyclePhase);
            Assert.AreEqual(TestDateUtils.Now, shutdownEvent.TriggeredAt);
        }
コード例 #14
0
 public void Shutdown(IDEStateEvent shutdownEvent)
 {
     LogEvent(_lastEvent);
     LogEvent(shutdownEvent);
 }
コード例 #15
0
 private static bool IsStartup(IDEStateEvent @event)
 {
     return(@event.IDELifecyclePhase == IDELifecyclePhase.Startup);
 }
コード例 #16
0
 private static bool IsIntermediateRuntimeEvent(IDEStateEvent @event)
 {
     return(@event.IDELifecyclePhase == IDELifecyclePhase.Runtime);
 }