コード例 #1
0
        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);
        }
コード例 #2
0
        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 }");
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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 }");
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }