public async Task CanPublishCloudEvent() { EventGridPublisherClientOptions options = InstrumentClientOptions(new EventGridPublisherClientOptions()); EventGridPublisherClient client = InstrumentClient( new EventGridPublisherClient( new Uri(TestEnvironment.CloudEventTopicHost), new AzureKeyCredential(TestEnvironment.CloudEventTopicKey), options)); List <CloudEvent> eventsList = new List <CloudEvent>(); for (int i = 0; i < 10; i++) { eventsList.Add( new CloudEvent( "record", new Uri("http://localHost"), Recording.Random.NewGuid().ToString(), Recording.Now.DateTime) { Data = new TestPayload("name", i) } ); } await client.SendCloudEventsAsync(eventsList); }
public async Task SetsTraceParentExtension(bool inclTraceparent, bool inclTracestate) { var mockTransport = new MockTransport(new MockResponse(200)); var options = new EventGridPublisherClientOptions { Transport = mockTransport }; EventGridPublisherClient client = new EventGridPublisherClient( new Uri("http://localHost"), new AzureKeyCredential("fakeKey"), options); var activity = new Activity($"{nameof(EventGridPublisherClient)}.{nameof(EventGridPublisherClient.SendEvents)}"); activity.SetW3CFormat(); activity.Start(); List <CloudEvent> eventsList = new List <CloudEvent>(); for (int i = 0; i < 10; i++) { var cloudEvent = new CloudEvent( "record", new Uri("http://localHost"), Guid.NewGuid().ToString(), DateTime.Now); if (inclTraceparent && inclTracestate && i % 2 == 0) { cloudEvent.GetAttributes().Add("traceparent", "traceparentValue"); } if (inclTracestate && i % 2 == 0) { cloudEvent.GetAttributes().Add("tracestate", "param:value"); } eventsList.Add(cloudEvent); } await client.SendCloudEventsAsync(eventsList); activity.Stop(); List <CloudEvent> cloudEvents = DeserializeRequest(mockTransport.SingleRequest); IEnumerator <CloudEvent> cloudEnum = eventsList.GetEnumerator(); foreach (CloudEvent cloudEvent in cloudEvents) { cloudEnum.MoveNext(); IDictionary <string, object> cloudEventAttr = cloudEnum.Current.GetAttributes(); if (cloudEventAttr.ContainsKey(TraceParentHeaderName) && cloudEventAttr.ContainsKey(TraceStateHeaderName)) { Assert.AreEqual( cloudEventAttr[TraceParentHeaderName], cloudEvent.GetAttributes()[TraceParentHeaderName]); Assert.AreEqual( cloudEventAttr[TraceStateHeaderName], cloudEvent.GetAttributes()[TraceStateHeaderName]); } else if (cloudEventAttr.ContainsKey(TraceParentHeaderName)) { Assert.AreEqual( cloudEventAttr[TraceParentHeaderName], cloudEvent.GetAttributes()[TraceParentHeaderName]); } else if (cloudEventAttr.ContainsKey(TraceStateHeaderName)) { Assert.AreEqual( cloudEventAttr[TraceStateHeaderName], cloudEvent.GetAttributes()[TraceStateHeaderName]); } else { Assert.AreEqual( activity.Id, cloudEvent.GetAttributes()[TraceParentHeaderName]); } } }
public async Task SetsTraceParentExtension(bool inclTraceparent, bool inclTracestate) { var mockTransport = new MockTransport(new MockResponse(200)); var options = new EventGridPublisherClientOptions { Transport = mockTransport }; EventGridPublisherClient client = new EventGridPublisherClient( new Uri("http://localHost"), new AzureKeyCredential("fakeKey"), options); var activity = new Activity($"{nameof(EventGridPublisherClient)}.{nameof(EventGridPublisherClient.SendEvents)}"); activity.SetW3CFormat(); activity.Start(); List<CloudEvent> inputEvents = new List<CloudEvent>(); for (int i = 0; i < 10; i++) { var cloudEvent = new CloudEvent { Subject = "record", Source = new Uri("http://localHost"), Id = Guid.NewGuid().ToString(), Time = DateTime.Now, Type = "test" }; if (inclTraceparent && inclTracestate && i % 2 == 0) { cloudEvent.SetAttributeFromString("traceparent", "traceparentValue"); } if (inclTracestate && i % 2 == 0) { cloudEvent.SetAttributeFromString("tracestate", "param:value"); } inputEvents.Add(cloudEvent); } await client.SendCloudEventsAsync(inputEvents); activity.Stop(); List<CloudEvent> endEvents = DeserializeRequest(mockTransport.SingleRequest); IEnumerator<CloudEvent> inputEnum = inputEvents.GetEnumerator(); foreach (CloudEvent cloudEvent in endEvents) { inputEnum.MoveNext(); var inputAttributes = inputEnum.Current.GetPopulatedAttributes().Select(pair => pair.Key.Name).ToList(); if (inputAttributes.Contains(TraceParentHeaderName) && inputAttributes.Contains(TraceStateHeaderName)) { Assert.AreEqual( inputEnum.Current[TraceParentHeaderName], cloudEvent[TraceParentHeaderName]); Assert.AreEqual( inputEnum.Current[TraceStateHeaderName], cloudEvent[TraceStateHeaderName]); } else if (inputAttributes.Contains(TraceParentHeaderName)) { Assert.AreEqual( inputEnum.Current[TraceParentHeaderName], cloudEvent[TraceParentHeaderName]); } else if (inputAttributes.Contains(TraceStateHeaderName)) { Assert.AreEqual( inputEnum.Current[TraceStateHeaderName], cloudEvent[TraceStateHeaderName]); } else { Assert.AreEqual( activity.Id, cloudEvent[TraceParentHeaderName]); } } }