public void IsEventDataEquivalentDetectsDifferentBodies() { var trackOneEvent = new TrackOne.EventData(new byte[] { 0x22, 0x44 }); var trackTwoEvent = new EventData(new byte[] { 0x11, 0x33 }); Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.False); }
public async Task SendAsyncTransformsSimpleEvents() { var sourceEvents = new[] { new EventData(Encoding.UTF8.GetBytes("FirstValue")), new EventData(Encoding.UTF8.GetBytes("Second")), new EventData(new byte[] { 0x11, 0x22, 0x33 }) }; var options = new SendOptions(); var mock = new ObservableSenderMock(new ClientMock(), null); var producer = new TrackOneEventHubProducer(_ => mock, Mock.Of <EventHubRetryPolicy>()); await producer.SendAsync(sourceEvents, options, CancellationToken.None); Assert.That(mock.SendCalledWithParameters, Is.Not.Null, "The Send request should have been delegated."); var sentEvents = mock.SendCalledWithParameters.Events.ToArray(); Assert.That(sentEvents.Length, Is.EqualTo(sourceEvents.Length), "The number of events sent should match the number of source events."); // The events should not only be structurally equivalent, the ordering of them should be preserved. Compare the // sequence in order and validate that the events in each position are equivalent. for (var index = 0; index < sentEvents.Length; ++index) { // If the system properties for the sent events was null, then normalize it to an empty // instance because the source event does not allow null. sentEvents[index].SystemProperties = sentEvents[index].SystemProperties ?? new TrackOne.EventData.SystemPropertiesCollection(); Assert.That(TrackOneComparer.IsEventDataEquivalent(sentEvents[index], sourceEvents[index]), Is.True, $"The sequence of events sent should match; they differ at index: { index }"); } }
public void IsEventDataEquivalentDetectsEqualEvents() { var body = new byte[] { 0x22, 0x44, 0x88 }; var offset = 27; var trackTwoSystemProperties = new Dictionary <string, object>(); var trackTwoEvent = new EventData( eventBody: (byte[])body.Clone(), offset: offset, systemProperties: trackTwoSystemProperties, lastPartitionSequenceNumber: 9765551212, lastPartitionOffset: 54321, lastPartitionEnqueuedTime: DateTimeOffset.Parse("2015-10-27T00:00:00Z")); trackTwoEvent.Properties["test"] = "same"; var trackOneEvent = new TrackOne.EventData((byte[])body.Clone()); trackOneEvent.Properties["test"] = trackTwoEvent.Properties["test"]; trackOneEvent.SystemProperties = new TrackOne.EventData.SystemPropertiesCollection(); trackOneEvent.SystemProperties[TrackOne.ClientConstants.OffsetName] = offset.ToString(); trackOneEvent.LastEnqueuedOffset = trackTwoEvent.LastPartitionOffset.ToString(); trackOneEvent.LastSequenceNumber = trackTwoEvent.LastPartitionSequenceNumber.Value; trackOneEvent.LastEnqueuedTime = trackTwoEvent.LastPartitionEnqueuedTime.Value.UtcDateTime; Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.True); }
public async Task SendAsyncTransformsSimpleEvents() { var sourceEvents = new[] { new EventData(Encoding.UTF8.GetBytes("FirstValue")), new EventData(Encoding.UTF8.GetBytes("Second")), new EventData(new byte[] { 0x11, 0x22, 0x33 }) }; var options = new EventBatchingOptions(); var mock = new ObservableSenderMock(new ClientMock(), null); var sender = new TrackOneEventSender(() => mock); await sender.SendAsync(sourceEvents, options, CancellationToken.None); Assert.That(mock.SendCalledWithParameters, Is.Not.Null, "The Send request should have been delegated."); var sentEvents = mock.SendCalledWithParameters.Events.ToArray(); Assert.That(sentEvents.Length, Is.EqualTo(sourceEvents.Length), "The number of events sent should match the number of source events."); // The events should not only be structurally equivilent, the ordering of them should be preserved. Compare the // sequence in order and validate that the events in each position are equivilent. for (var index = 0; index < sentEvents.Length; ++index) { Assert.That(TrackOneComparer.IsEventDataEquivalent(sentEvents[index], sourceEvents[index]), Is.True, $"The sequence of events sent should match; they differ at index: { index }"); } }
public void IsEventDataEquivalentDetectsWhenOnePropertySetIsNull() { var body = new byte[] { 0x22, 0x44, 0x88 }; var trackOneEvent = new TrackOne.EventData((byte[])body.Clone()); var trackTwoEvent = new EventData((byte[])body.Clone()); trackOneEvent.Properties = null; trackTwoEvent.Properties["test"] = "trackTwo"; Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.False); }
public void IsEventDataEquivalentDetectsWhenOneSystemPropertySetIsNull() { var body = new byte[] { 0x22, 0x44, 0x88 }; var trackOneEvent = new TrackOne.EventData((byte[])body.Clone()); var trackTwoEvent = new EventData((byte[])body.Clone()); trackOneEvent.SystemProperties = new TrackOne.EventData.SystemPropertiesCollection(); trackOneEvent.SystemProperties["something"] = "trackOne"; trackTwoEvent.SystemProperties = null; Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.False); }
public void IsEventDataEquivalentDetectsDifferentSystemProperties() { var body = new byte[] { 0x22, 0x44, 0x88 }; var trackOneEvent = new TrackOne.EventData((byte[])body.Clone()); var trackTwoEvent = new EventData((byte[])body.Clone()); trackOneEvent.SystemProperties = new TrackOne.EventData.SystemPropertiesCollection(); trackOneEvent.SystemProperties[TrackOne.ClientConstants.OffsetName] = "4"; trackTwoEvent.SystemProperties = new EventData.SystemEventProperties(); trackTwoEvent.SystemProperties.Offset = 27; Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.False); }
public void IsEventDataEquivalentDetectsDifferentSystemPropertiesWithMissingTypedMember() { var body = new byte[] { 0x22, 0x44, 0x88 }; var trackTwoSystemProperties = new Dictionary <string, object>(); var trackTwoEvent = new EventData( eventBody: (byte[])body.Clone(), systemProperties: trackTwoSystemProperties); var trackOneEvent = new TrackOne.EventData((byte[])body.Clone()); trackOneEvent.SystemProperties = new TrackOne.EventData.SystemPropertiesCollection(); trackOneEvent.SystemProperties[TrackOne.ClientConstants.OffsetName] = "4"; Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.False); }
public void IsEventDataEquivalentDetectsEqualEvents() { var body = new byte[] { 0x22, 0x44, 0x88 }; var trackOneEvent = new TrackOne.EventData((byte[])body.Clone()); var trackTwoEvent = new EventData((byte[])body.Clone()); trackOneEvent.Properties["test"] = "same"; trackTwoEvent.Properties["test"] = "same"; trackOneEvent.SystemProperties = new TrackOne.EventData.SystemPropertiesCollection(); trackOneEvent.SystemProperties["something"] = "otherSame"; trackTwoEvent.SystemProperties = new EventData.SystemEventProperties(); trackTwoEvent.SystemProperties["something"] = "otherSame"; Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.True); }
public void IsEventDataEquivalentDetectsDifferentSystemPropertiesMismatchedMembers() { var body = new byte[] { 0x22, 0x44, 0x88 }; var propertyValue = "one"; var trackTwoSystemProperties = new Dictionary <string, object>(); var trackTwoEvent = new EventData( eventBody: (byte[])body.Clone(), systemProperties: trackTwoSystemProperties); trackTwoSystemProperties["two"] = propertyValue; var trackOneEvent = new TrackOne.EventData((byte[])body.Clone()); trackOneEvent.SystemProperties = new TrackOne.EventData.SystemPropertiesCollection(); trackOneEvent.SystemProperties["one"] = propertyValue; Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.False); }
public void IsEventDataEquivalentDetectsDifferentSystemPropertiesWithMapMember() { var body = new byte[] { 0x22, 0x44, 0x88 }; var propertyName = "Something"; var trackTwoSystemProperties = new Dictionary <string, object>(); var trackTwoEvent = new EventData( eventBody: (byte[])body.Clone(), systemProperties: trackTwoSystemProperties); trackTwoSystemProperties[propertyName] = nameof(trackTwoSystemProperties); var trackOneEvent = new TrackOne.EventData((byte[])body.Clone()); trackOneEvent.SystemProperties = new TrackOne.EventData.SystemPropertiesCollection(); trackOneEvent.SystemProperties[propertyName] = nameof(trackOneEvent); Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.False); }
public void IsEventDataEquivalentDetectsEqualEvents() { var body = new byte[] { 0x22, 0x44, 0x88 }; var offset = 27; var trackTwoSystemProperties = new Dictionary <string, object>(); var trackTwoEvent = new EventData( eventBody: (byte[])body.Clone(), offset: offset, systemProperties: trackTwoSystemProperties); var trackOneEvent = new TrackOne.EventData((byte[])body.Clone()); trackOneEvent.Properties["test"] = "same"; trackTwoEvent.Properties["test"] = "same"; trackOneEvent.SystemProperties = new TrackOne.EventData.SystemPropertiesCollection(); trackOneEvent.SystemProperties[TrackOne.ClientConstants.OffsetName] = offset.ToString(); Assert.That(TrackOneComparer.IsEventDataEquivalent(trackOneEvent, trackTwoEvent), Is.True); }