/// <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); }
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); }
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; } }