Ejemplo n.º 1
0
        /// <summary>
        /// Tracks activity for coordinating the testing of a single Jasper
        /// application
        /// </summary>
        /// <param name="eventType"></param>
        /// <param name="envelope"></param>
        /// <param name="sessionTime"></param>
        /// <param name="serviceName"></param>
        /// <param name="exception"></param>
        public void RecordLocally(EnvelopeRecord record)
        {
            switch (record.EventType)
            {
            case EventType.Sent:
                // Not tracking anything outgoing
                // when it's testing locally
                if (record.Envelope.Destination.Scheme != TransportConstants.Local || record.Envelope.MessageType == TransportConstants.ScheduledEnvelope)
                {
                    record.IsComplete = true;
                }

                if (record.Envelope.Status == EnvelopeStatus.Scheduled)
                {
                    record.IsComplete = true;
                }

                break;

            case EventType.Received:
                if (record.Envelope.Destination.Scheme == TransportConstants.Local)
                {
                    markLastCompleted(EventType.Sent);
                }

                break;

            case EventType.ExecutionStarted:
                // Nothing special here
                break;



            case EventType.ExecutionFinished:
                markLastCompleted(EventType.ExecutionStarted);
                record.IsComplete = true;
                break;

            case EventType.NoHandlers:
            case EventType.NoRoutes:
            case EventType.MessageFailed:
            case EventType.MessageSucceeded:
            case EventType.MovedToErrorQueue:
                // The message is complete
                foreach (var envelopeRecord in _records)
                {
                    envelopeRecord.IsComplete = true;
                }

                record.IsComplete = true;

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(record.EventType), record.EventType, null);
            }

            _records.Add(record);
        }
Ejemplo n.º 2
0
        public void RecordCrossApplication(EnvelopeRecord record)
        {
            switch (record.EventType)
            {
            case EventType.Sent:
                if (record.Envelope.Status == EnvelopeStatus.Scheduled)
                {
                    record.IsComplete = true;
                }
                break;

            case EventType.ExecutionStarted:
                break;

            case EventType.Received:
                markLastCompleted(EventType.Sent);
                break;


            case EventType.ExecutionFinished:
                markLastCompleted(EventType.ExecutionStarted, record.UniqueNodeId);
                record.IsComplete = true;
                break;

            case EventType.MovedToErrorQueue:
            case EventType.MessageFailed:
            case EventType.MessageSucceeded:
                // The message is complete
                foreach (var envelopeRecord in _records.ToArray().Where(x => x.UniqueNodeId == record.UniqueNodeId))
                {
                    envelopeRecord.IsComplete = true;
                }

                record.IsComplete = true;

                break;

            case EventType.NoHandlers:
            case EventType.NoRoutes:

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(record.EventType), record.EventType, null);
            }

            _records.Add(record);
        }
Ejemplo n.º 3
0
        public void Record(EnvelopeRecord record)
        {
            if (record.EventType != EventType.MessageSucceeded && record.EventType != EventType.MessageFailed)
            {
                return;
            }

            if (record.Envelope.Message is T message)
            {
                if (UniqueNodeId != 0 && UniqueNodeId != record.UniqueNodeId)
                {
                    return;
                }

                _isCompleted = true;
            }
        }