public void IgnoreAProcessEndedEventForAUnkownProcess()
        {
            Guid           guid        = Guid.NewGuid();
            Guid           guid2       = Guid.NewGuid();
            Guid           processType = ProcessGuids.ProcessA;
            ProcessStarted worEvent    = new ProcessStarted(guid, processType);
            ProcessEnded   worcEvent   = new ProcessEnded(guid2, DateTime.UtcNow, false);

            IRepository <DailyActivity> repo = GetRepositoryForTest();

            DailyActivityEventProcessor processor = new DailyActivityEventProcessor(
                repo
                );

            processor.Handle(worEvent);
            processor.Handle(worcEvent);

            DailyActivity activity = repo.Get(GetIdForFirstActivityPersisted(repo));

            Assert.IsNotNull(activity);
            Assert.AreEqual(1, activity.ActiveProcesses);
            Assert.AreEqual(1, activity.TotalProcessCount);
            Assert.AreEqual(0, activity.CompletionCount);
            Assert.AreEqual(0, activity.CompletedWithErrorCount);
        }
예제 #2
0
 public void EndProcess(string name)
 {
     if (_workers.ContainsKey(name))
     {
         _workers[name].CancelAsync();
         ProcessEnded?.Invoke(this, _workers[name]);
     }
 }
        public void Handle(ProcessEnded @event)
        {
            string        id       = DailyActivity.GetIdFrom(@event.CreatedAt);
            DailyActivity activity = repository.Get(id);   //should exist for this event

            if (activity != null)
            {
                //execute change / update
                activity.EndProcess(@event.ProcessId, @event.EndTime, @event.WithError);

                //save - persist?
                repository.Save(activity);
            }
        }
        public void CanCreateInstanceOfProcessEndedEvent()
        {
            Guid     processId = Guid.NewGuid();
            DateTime time      = DateTime.UtcNow;
            bool     withError = true;

            ProcessEnded @event = new ProcessEnded(processId, time, withError);

            Assert.IsNotNull(@event);
            Assert.IsInstanceOf <Event>(@event);

            Assert.AreEqual(processId, @event.ProcessId);
            Assert.AreEqual(time, @event.EndTime);
            Assert.AreEqual(withError, @event.WithError);
        }
예제 #5
0
 private void WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 {
     ProcessEnded?.Invoke(this, sender as BackgroundWorker);
 }
예제 #6
0
 private void PipeClosed(object sender, EventArgs e)
 {
     ProcessEnded?.Invoke(this, null);
 }
예제 #7
0
 private void Proc_Exited(object sender, EventArgs e)
 {
     ProcessEnded?.Invoke(this, new EventArgs());
 }