|
3 | 3 | using System; |
4 | 4 | using System.Collections.Generic; |
5 | 5 | using System.ComponentModel; |
| 6 | + using System.Diagnostics; |
6 | 7 | #if CORE_PCL || NET45 || NET46 |
7 | 8 | using System.Diagnostics.Tracing; |
8 | 9 | #endif |
9 | 10 | using System.Linq; |
| 11 | + using System.Net; |
| 12 | + using System.Net.Http; |
10 | 13 | using System.Reflection; |
| 14 | + using System.Text; |
11 | 15 | using Microsoft.ApplicationInsights.Channel; |
12 | 16 | using Microsoft.ApplicationInsights.DataContracts; |
13 | 17 | using Microsoft.ApplicationInsights.Extensibility; |
| 18 | + using Microsoft.ApplicationInsights.Extensibility.Implementation; |
14 | 19 | using Microsoft.ApplicationInsights.Extensibility.Implementation.Platform; |
15 | 20 | using Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing; |
16 | 21 | using Microsoft.ApplicationInsights.TestFramework; |
@@ -733,14 +738,21 @@ public void TrackWhenChannelIsNullWillThrowInvalidOperationException() |
733 | 738 | [TestMethod] |
734 | 739 | public void TrackAddsSdkVerionByDefault() |
735 | 740 | { |
| 741 | + // split version by 4 numbers manually so we do not do the same as in the product code and actually test it |
| 742 | + string versonStr = Assembly.GetAssembly(typeof(TelemetryConfiguration)).GetCustomAttributes(false) |
| 743 | + .OfType<AssemblyFileVersionAttribute>() |
| 744 | + .First() |
| 745 | + .Version; |
| 746 | + string[] versionParts = new Version(versonStr).ToString().Split('.'); |
| 747 | + |
736 | 748 | var configuration = new TelemetryConfiguration { TelemetryChannel = new StubTelemetryChannel(), InstrumentationKey = Guid.NewGuid().ToString() }; |
737 | 749 | var client = new TelemetryClient(configuration); |
738 | 750 |
|
739 | 751 | client.Context.InstrumentationKey = "Test"; |
740 | 752 | EventTelemetry eventTelemetry = new EventTelemetry("test"); |
741 | 753 | client.Track(eventTelemetry); |
742 | 754 |
|
743 | | - Assert.StartsWith("dotnet: ", eventTelemetry.Context.Internal.SdkVersion); |
| 755 | + Assert.Equal("dotnet:"+ string.Join(".", versionParts[0], versionParts[1], versionParts[2]) + "-" + versionParts[3], eventTelemetry.Context.Internal.SdkVersion); |
744 | 756 | } |
745 | 757 |
|
746 | 758 | [TestMethod] |
@@ -779,7 +791,70 @@ public void AllTelemetryIsSentWithDefaultSamplingRate() |
779 | 791 |
|
780 | 792 | Assert.Equal(ItemsToGenerate, sentTelemetry.Count); |
781 | 793 | } |
782 | | - |
| 794 | + |
| 795 | + #endregion |
| 796 | + |
| 797 | + #region ValidateEndpoint |
| 798 | + |
| 799 | + [TestMethod] |
| 800 | + public void SendEventToValidateEndpoint() |
| 801 | + { |
| 802 | + EventTelemetry telemetry1 = new EventTelemetry(); |
| 803 | + MetricTelemetry telemetry2 = new MetricTelemetry(); |
| 804 | + DependencyTelemetry telemetry3 = new DependencyTelemetry(); |
| 805 | + ExceptionTelemetry telemetry4 = new ExceptionTelemetry(); |
| 806 | + MetricTelemetry telemetry5 = new MetricTelemetry(); |
| 807 | + PageViewTelemetry telemetry6 = new PageViewTelemetry(); |
| 808 | + PerformanceCounterTelemetry telemetry7 = new PerformanceCounterTelemetry(); |
| 809 | + RequestTelemetry telemetry8 = new RequestTelemetry(); |
| 810 | + SessionStateTelemetry telemetry9 = new SessionStateTelemetry(); |
| 811 | + TraceTelemetry telemetry10 = new TraceTelemetry(); |
| 812 | + |
| 813 | + var telemetryItems = new List<ITelemetry> |
| 814 | + { |
| 815 | + telemetry1, |
| 816 | + telemetry2, |
| 817 | + telemetry3, |
| 818 | + telemetry4, |
| 819 | + telemetry5, |
| 820 | + telemetry6, |
| 821 | + telemetry7, |
| 822 | + telemetry8, |
| 823 | + telemetry9, |
| 824 | + telemetry10 |
| 825 | + }; |
| 826 | + |
| 827 | + // ChuckNorrisTeamUnitTests resource in Prototypes5 |
| 828 | + var config = new TelemetryConfiguration { InstrumentationKey = "fafa4b10-03d3-4bb0-98f4-364f0bdf5df8" }; |
| 829 | + var telemetryClient = new TelemetryClient(config); |
| 830 | + |
| 831 | + telemetryClient.Initialize(telemetry1); |
| 832 | + telemetryClient.Initialize(telemetry2); |
| 833 | + telemetryClient.Initialize(telemetry3); |
| 834 | + telemetryClient.Initialize(telemetry4); |
| 835 | + telemetryClient.Initialize(telemetry5); |
| 836 | + telemetryClient.Initialize(telemetry6); |
| 837 | + telemetryClient.Initialize(telemetry7); |
| 838 | + telemetryClient.Initialize(telemetry8); |
| 839 | + telemetryClient.Initialize(telemetry9); |
| 840 | + telemetryClient.Initialize(telemetry10); |
| 841 | + |
| 842 | + string json = JsonSerializer.SerializeAsString(telemetryItems); |
| 843 | + |
| 844 | + HttpClient client = new HttpClient(); |
| 845 | + var result = client.PostAsync( |
| 846 | + "https://dc.services.visualstudio.com/v2/validate", |
| 847 | + new ByteArrayContent(Encoding.UTF8.GetBytes(json))).GetAwaiter().GetResult(); |
| 848 | + |
| 849 | + if (result.StatusCode != HttpStatusCode.OK) |
| 850 | + { |
| 851 | + var response = result.Content.ReadAsStringAsync().GetAwaiter().GetResult(); |
| 852 | + Trace.WriteLine(response); |
| 853 | + } |
| 854 | + |
| 855 | + Assert.Equal(HttpStatusCode.OK, result.StatusCode); |
| 856 | + } |
| 857 | + |
783 | 858 | #endregion |
784 | 859 |
|
785 | 860 | private TelemetryClient InitializeTelemetryClient(ICollection<ITelemetry> sentTelemetry) |
|
0 commit comments