Skip to content

Commit 0429df3

Browse files
authored
Fixing Egress Extensibility Tests To Follow Updated StdIn Protocol (#4265)
1 parent be56768 commit 0429df3

File tree

5 files changed

+43
-33
lines changed

5 files changed

+43
-33
lines changed

src/Extensions/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -51,32 +51,7 @@ private static async Task<int> Egress<TProvider, TOptions>(Action<IServiceCollec
5151
EgressArtifactResult result = new();
5252
try
5353
{
54-
StdInStream = Console.OpenStandardInput();
55-
56-
int dotnetMonitorPayloadProtocolVersion;
57-
long payloadLengthBuffer;
58-
byte[] payloadBuffer;
59-
60-
using (BinaryReader reader = new BinaryReader(StdInStream, Encoding.UTF8, leaveOpen: true))
61-
{
62-
dotnetMonitorPayloadProtocolVersion = reader.ReadInt32();
63-
if (dotnetMonitorPayloadProtocolVersion != ExpectedPayloadProtocolVersion)
64-
{
65-
throw new EgressException(string.Format(CultureInfo.CurrentCulture, Strings.ErrorMessage_IncorrectPayloadVersion, dotnetMonitorPayloadProtocolVersion, ExpectedPayloadProtocolVersion));
66-
}
67-
68-
payloadLengthBuffer = reader.ReadInt64();
69-
70-
if (payloadLengthBuffer < 0)
71-
{
72-
throw new ArgumentOutOfRangeException(nameof(payloadLengthBuffer));
73-
}
74-
}
75-
76-
payloadBuffer = new byte[payloadLengthBuffer];
77-
await ReadExactlyAsync(payloadBuffer, token);
78-
79-
ExtensionEgressPayload configPayload = JsonSerializer.Deserialize<ExtensionEgressPayload>(payloadBuffer);
54+
ExtensionEgressPayload configPayload = await GetPayload(token);
8055

8156
ServiceCollection services = CreateServices<TOptions>(configPayload, configureServices);
8257

@@ -115,6 +90,38 @@ private static async Task<int> Egress<TProvider, TOptions>(Action<IServiceCollec
11590
return result.Succeeded ? 0 : 1;
11691
}
11792

93+
internal static async Task<ExtensionEgressPayload> GetPayload(CancellationToken token)
94+
{
95+
StdInStream = Console.OpenStandardInput();
96+
97+
int dotnetMonitorPayloadProtocolVersion;
98+
long payloadLengthBuffer;
99+
byte[] payloadBuffer;
100+
101+
using (BinaryReader reader = new BinaryReader(StdInStream, Encoding.UTF8, leaveOpen: true))
102+
{
103+
dotnetMonitorPayloadProtocolVersion = reader.ReadInt32();
104+
if (dotnetMonitorPayloadProtocolVersion != ExpectedPayloadProtocolVersion)
105+
{
106+
throw new EgressException(string.Format(CultureInfo.CurrentCulture, Strings.ErrorMessage_IncorrectPayloadVersion, dotnetMonitorPayloadProtocolVersion, ExpectedPayloadProtocolVersion));
107+
}
108+
109+
payloadLengthBuffer = reader.ReadInt64();
110+
111+
if (payloadLengthBuffer < 0)
112+
{
113+
throw new ArgumentOutOfRangeException(nameof(payloadLengthBuffer));
114+
}
115+
}
116+
117+
payloadBuffer = new byte[payloadLengthBuffer];
118+
await ReadExactlyAsync(payloadBuffer, token);
119+
120+
ExtensionEgressPayload configPayload = JsonSerializer.Deserialize<ExtensionEgressPayload>(payloadBuffer);
121+
122+
return configPayload;
123+
}
124+
118125
private static ServiceCollection CreateServices<TOptions>(ExtensionEgressPayload payload, Action<IServiceCollection> configureServices)
119126
where TOptions : class, new()
120127
{
@@ -161,7 +168,7 @@ private static async Task GetStream(Stream outputStream, CancellationToken cance
161168
await StdInStream.CopyToAsync(outputStream, DefaultBufferSize, cancellationToken);
162169
}
163170

164-
private static async Task ReadExactlyAsync(Memory<byte> buffer, CancellationToken token)
171+
internal static async Task ReadExactlyAsync(Memory<byte> buffer, CancellationToken token)
165172
{
166173
#if NET7_0_OR_GREATER
167174
await StdInStream.ReadExactlyAsync(buffer, token);

src/Extensions/Microsoft.Diagnostics.Monitoring.Extension.Common/Microsoft.Diagnostics.Monitoring.Extension.Common.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<InternalsVisibleTo Include="dotnet-monitor-egress-s3storage" />
2121
<InternalsVisibleTo Include="Microsoft.Diagnostics.Monitoring.AzureBlobStorageTests.UnitTests" />
2222
<InternalsVisibleTo Include="Microsoft.Diagnostics.Monitoring.S3StorageTests.UnitTests" />
23+
<InternalsVisibleTo Include="Microsoft.Diagnostics.Monitoring.EgressExtensibilityApp" />
2324
</ItemGroup>
2425

2526
<ItemGroup>

src/Tests/Microsoft.Diagnostics.Monitoring.EgressExtensibilityApp/Microsoft.Diagnostics.Monitoring.EgressExtensibilityApp.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
</ItemGroup>
1919

2020
<ItemGroup>
21+
<ProjectReference Include="..\..\Extensions\Microsoft.Diagnostics.Monitoring.Extension.Common\Microsoft.Diagnostics.Monitoring.Extension.Common.csproj" />
2122
<ProjectReference Include="..\Microsoft.Diagnostics.Monitoring.TestCommon\Microsoft.Diagnostics.Monitoring.TestCommon.csproj" />
2223
</ItemGroup>
2324

src/Tests/Microsoft.Diagnostics.Monitoring.EgressExtensibilityApp/Program.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using Microsoft.Diagnostics.Monitoring.Tool.UnitTests;
5-
using Microsoft.Diagnostics.Tools.Monitor.Egress;
5+
using Microsoft.Diagnostics.Monitoring.Extension.Common;
66
using Microsoft.Extensions.Configuration;
77
using System;
88
using System.CommandLine;
99
using System.Text.Json;
10+
using System.Threading.Tasks;
11+
using System.Threading;
1012
using Xunit;
1113

1214
namespace Microsoft.Diagnostics.Monitoring.EgressExtensibilityApp
@@ -19,21 +21,19 @@ static int Main(string[] args)
1921

2022
CliCommand egressCmd = new CliCommand("Egress");
2123

22-
egressCmd.SetAction(Egress);
24+
egressCmd.SetAction((result, token) => Egress(token));
2325

2426
rootCommand.Add(egressCmd);
2527

2628
return rootCommand.Parse(args).Invoke();
2729
}
2830

29-
private static int Egress(ParseResult parseResult)
31+
private static async Task<int> Egress(CancellationToken token)
3032
{
3133
EgressArtifactResult result = new();
3234
try
3335
{
34-
string jsonConfig = Console.ReadLine();
35-
36-
ExtensionEgressPayload configPayload = JsonSerializer.Deserialize<ExtensionEgressPayload>(jsonConfig);
36+
ExtensionEgressPayload configPayload = await EgressHelper.GetPayload(token);
3737
TestEgressProviderOptions options = BuildOptions(configPayload);
3838

3939
Assert.Single(options.Metadata.Keys);

src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/EgressExtensibilityTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
namespace Microsoft.Diagnostics.Monitoring.Tool.UnitTests
2121
{
22+
[TargetFrameworkMonikerTrait(TargetFrameworkMonikerExtensions.CurrentTargetFrameworkMoniker)]
2223
public sealed class EgressExtensibilityTests
2324
{
2425
private ITestOutputHelper _outputHelper;

0 commit comments

Comments
 (0)