Skip to content

Commit 0176699

Browse files
committed
Made test project compatible with .Net Framework 4.7.2
1 parent b8aefa4 commit 0176699

File tree

8 files changed

+83
-21
lines changed

8 files changed

+83
-21
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.IO;
3+
using System.Runtime.InteropServices;
4+
using System.Threading.Tasks;
5+
6+
namespace System
7+
{
8+
internal static class StreamExtensions
9+
{
10+
public static Task<int> ReadAsync(this Stream stream, Memory<byte> memory)
11+
{
12+
if (!MemoryMarshal.TryGetArray(memory, out ArraySegment<byte> buffer))
13+
{
14+
new NotSupportedException("This Memory does not support exposing the underlying array.");
15+
}
16+
return stream.ReadAsync(buffer.Array, buffer.Offset, buffer.Count);
17+
}
18+
}
19+
}

StandardSocketsHttpHandler.FunctionalTests/HttpClientHandlerTest.Cancellation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ protected override async Task SerializeToStreamAsync(Stream stream, TransportCon
412412
var buffer = new byte[1] { 42 };
413413
for (int i = 0; i < _length; i++)
414414
{
415-
await stream.WriteAsync(buffer);
415+
await stream.WriteAsync(buffer, 0, buffer.Length);
416416
await stream.FlushAsync();
417417
await Task.Delay(1);
418418
}

StandardSocketsHttpHandler.FunctionalTests/HttpClientHandlerTest.cs

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1894,8 +1894,10 @@ await LoopbackServer.CreateClientAndServerAsync(async uri =>
18941894
Assert.Throws<NotSupportedException>(() => responseStream.Seek(0, SeekOrigin.Begin));
18951895
Assert.Throws<NotSupportedException>(() => responseStream.SetLength(0));
18961896
Assert.Throws<NotSupportedException>(() => responseStream.Write(new byte[1], 0, 1));
1897+
#if !NET472
18971898
Assert.Throws<NotSupportedException>(() => responseStream.Write(new Span<byte>(new byte[1])));
18981899
Assert.Throws<NotSupportedException>(() => { responseStream.WriteAsync(new Memory<byte>(new byte[1])); });
1900+
#endif
18991901
Assert.Throws<NotSupportedException>(() => { responseStream.WriteAsync(new byte[1], 0, 1); });
19001902
Assert.Throws<NotSupportedException>(() => responseStream.WriteByte(1));
19011903

@@ -1936,27 +1938,36 @@ await LoopbackServer.CreateClientAndServerAsync(async uri =>
19361938
Assert.Equal(1, await Task.Factory.FromAsync(responseStream.BeginRead, responseStream.EndRead, buffer, 0, 1, null));
19371939
Assert.Equal((byte)'e', buffer[0]);
19381940

1941+
#if NET472
1942+
Assert.Equal(1, await responseStream.ReadAsync(buffer, 0, 1));
1943+
#else
19391944
Assert.Equal(1, await responseStream.ReadAsync(new Memory<byte>(buffer)));
1945+
#endif
19401946
Assert.Equal((byte)'l', buffer[0]);
19411947

19421948
Assert.Equal(1, await responseStream.ReadAsync(buffer, 0, 1));
19431949
Assert.Equal((byte)'l', buffer[0]);
19441950

1951+
#if NET472
1952+
Assert.Equal(1, responseStream.Read(buffer, 0, 1));
1953+
#else
19451954
Assert.Equal(1, responseStream.Read(new Span<byte>(buffer)));
1955+
#endif
19461956
Assert.Equal((byte)'o', buffer[0]);
19471957

19481958
Assert.Equal(1, responseStream.Read(buffer, 0, 1));
19491959
Assert.Equal((byte)' ', buffer[0]);
19501960

1951-
if (!IsNetfxHandler)
1952-
{
1953-
// Doing any of these 0-byte reads causes the connection to fail.
1954-
Assert.Equal(0, await Task.Factory.FromAsync(responseStream.BeginRead, responseStream.EndRead, Array.Empty<byte>(), 0, 0, null));
1955-
Assert.Equal(0, await responseStream.ReadAsync(Memory<byte>.Empty));
1956-
Assert.Equal(0, await responseStream.ReadAsync(Array.Empty<byte>(), 0, 0));
1957-
Assert.Equal(0, responseStream.Read(Span<byte>.Empty));
1958-
Assert.Equal(0, responseStream.Read(Array.Empty<byte>(), 0, 0));
1959-
}
1961+
// Doing any of these 0-byte reads causes the connection to fail.
1962+
Assert.Equal(0, await Task.Factory.FromAsync(responseStream.BeginRead, responseStream.EndRead, Array.Empty<byte>(), 0, 0, null));
1963+
#if !NET472
1964+
Assert.Equal(0, await responseStream.ReadAsync(Memory<byte>.Empty));
1965+
#endif
1966+
Assert.Equal(0, await responseStream.ReadAsync(Array.Empty<byte>(), 0, 0));
1967+
#if !NET472
1968+
Assert.Equal(0, responseStream.Read(Span<byte>.Empty));
1969+
#endif
1970+
Assert.Equal(0, responseStream.Read(Array.Empty<byte>(), 0, 0));
19601971

19611972
// And copying
19621973
var ms = new MemoryStream();
@@ -1970,9 +1981,13 @@ await LoopbackServer.CreateClientAndServerAsync(async uri =>
19701981
Assert.Equal(0, ms.Length);
19711982
Assert.Equal(-1, responseStream.ReadByte());
19721983
Assert.Equal(0, responseStream.Read(buffer, 0, 1));
1984+
#if !NET472
19731985
Assert.Equal(0, responseStream.Read(new Span<byte>(buffer)));
1986+
#endif
19741987
Assert.Equal(0, await responseStream.ReadAsync(buffer, 0, 1));
1988+
#if !NET472
19751989
Assert.Equal(0, await responseStream.ReadAsync(new Memory<byte>(buffer)));
1990+
#endif
19761991
Assert.Equal(0, await Task.Factory.FromAsync(responseStream.BeginRead, responseStream.EndRead, buffer, 0, 1, null));
19771992
}
19781993
}
@@ -2025,8 +2040,12 @@ await LoopbackServer.CreateClientAndServerAsync(async uri =>
20252040
Assert.Throws<NotSupportedException>(() => responseStream.Seek(0, SeekOrigin.Begin));
20262041
Assert.Throws<NotSupportedException>(() => responseStream.SetLength(0));
20272042
Assert.Throws<NotSupportedException>(() => responseStream.Write(new byte[1], 0, 1));
2043+
#if !NET472
20282044
Assert.Throws<NotSupportedException>(() => responseStream.Write(new Span<byte>(new byte[1])));
2045+
#endif
2046+
#if !NET472
20292047
await Assert.ThrowsAsync<NotSupportedException>(async () => await responseStream.WriteAsync(new Memory<byte>(new byte[1])));
2048+
#endif
20302049
await Assert.ThrowsAsync<NotSupportedException>(async () => await responseStream.WriteAsync(new byte[1], 0, 1));
20312050
Assert.Throws<NotSupportedException>(() => responseStream.WriteByte(1));
20322051

@@ -2065,9 +2084,13 @@ await LoopbackServer.CreateClientAndServerAsync(async uri =>
20652084
var buffer = new byte[1];
20662085
Assert.Equal(-1, responseStream.ReadByte());
20672086
Assert.Equal(0, await Task.Factory.FromAsync(responseStream.BeginRead, responseStream.EndRead, buffer, 0, 1, null));
2087+
#if !NET472
20682088
Assert.Equal(0, await responseStream.ReadAsync(new Memory<byte>(buffer)));
2089+
#endif
20692090
Assert.Equal(0, await responseStream.ReadAsync(buffer, 0, 1));
2091+
#if !NET472
20702092
Assert.Equal(0, responseStream.Read(new Span<byte>(buffer)));
2093+
#endif
20712094
Assert.Equal(0, responseStream.Read(buffer, 0, 1));
20722095

20732096
// Empty copies
@@ -2733,6 +2756,7 @@ await LoopbackServer.CreateServerAsync(async (server, uri) =>
27332756
lengthFunc: () => 12345678,
27342757
positionGetFunc: () => 0,
27352758
canReadFunc: () => true,
2759+
readFunc: (buffer, offset, count) => throw error,
27362760
readAsyncFunc: (buffer, offset, count, cancellationToken) => syncFailure ? throw error : Task.Delay(1).ContinueWith<int>(_ => throw error)));
27372761

27382762
if (PlatformDetection.IsUap)

StandardSocketsHttpHandler.FunctionalTests/HttpClientTest.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,11 @@ public async Task GetContentAsync_NullResponseContent_ReturnsDefaultValue()
211211
using (var client = new HttpClient(new CustomResponseHandler((r,c) => Task.FromResult(new HttpResponseMessage() { Content = null }))))
212212
{
213213
Assert.Same(string.Empty, await client.GetStringAsync(CreateFakeUri()));
214+
#if NET472
215+
Assert.Equal(Array.Empty<byte>(), await client.GetByteArrayAsync(CreateFakeUri()));
216+
#else
214217
Assert.Same(Array.Empty<byte>(), await client.GetByteArrayAsync(CreateFakeUri()));
218+
#endif
215219
Assert.Same(Stream.Null, await client.GetStreamAsync(CreateFakeUri()));
216220
}
217221
}

StandardSocketsHttpHandler.FunctionalTests/HttpRetryProtocolTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ protected override async Task SerializeToStreamAsync(Stream stream, TransportCon
126126
{
127127
_sendingContent.SetResult(true);
128128
await _connectionClosed;
129-
await stream.WriteAsync(Encoding.UTF8.GetBytes(s_simpleContent));
129+
byte[] data = Encoding.UTF8.GetBytes(s_simpleContent);
130+
await stream.WriteAsync(data, 0, data.Length);
130131
}
131132

132133
protected override bool TryComputeLength(out long length)

StandardSocketsHttpHandler.FunctionalTests/ResponseStreamTest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public async Task GetStreamAsync_ReadToEnd_Success(int readMode)
8080

8181
case 4:
8282
// Individual calls to Read(Span)
83-
while ((bytesRead = stream.Read(new Span<byte>(buffer))) != 0)
83+
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)
8484
{
8585
ms.Write(buffer, 0, bytesRead);
8686
}
@@ -157,7 +157,9 @@ public async Task GetStreamAsync_ReadZeroBytes_Success()
157157
using (Stream stream = await client.GetStreamAsync(Configuration.Http.RemoteEchoServer))
158158
{
159159
Assert.Equal(0, stream.Read(new byte[1], 0, 0));
160+
#if !NET472
160161
Assert.Equal(0, stream.Read(new Span<byte>(new byte[1], 0, 0)));
162+
#endif
161163
Assert.Equal(0, await stream.ReadAsync(new byte[1], 0, 0));
162164
}
163165
}

StandardSocketsHttpHandler.FunctionalTests/SocketsHttpHandlerTest.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ await LoopbackServer.CreateClientAndServerAsync(async uri =>
508508
await server.AcceptConnectionAsync(async connection =>
509509
{
510510
await connection.ReadRequestHeaderAsync();
511-
await connection.Reader.ReadAsync(new char[1]);
511+
await connection.Reader.ReadAsync(new char[1], 0, 1);
512512
await connection.SendResponseAsync();
513513
});
514514
});
@@ -635,13 +635,13 @@ await server.AcceptConnectionAsync(async connection =>
635635
clientStream.Write(new byte[] { (byte)'\r', (byte)'\n' }, 0, 2);
636636
Assert.Equal("!", await connection.Reader.ReadLineAsync());
637637

638-
clientStream.Write(new Span<byte>(new byte[] { (byte)'h', (byte)'e', (byte)'l', (byte)'l', (byte)'o', (byte)'\r', (byte)'\n' }));
638+
clientStream.Write(new byte[] { (byte)'h', (byte)'e', (byte)'l', (byte)'l', (byte)'o', (byte)'\r', (byte)'\n' }, 0, 7);
639639
Assert.Equal("hello", await connection.Reader.ReadLineAsync());
640640

641641
await clientStream.WriteAsync(new byte[] { (byte)'w', (byte)'o', (byte)'r', (byte)'l', (byte)'d', (byte)'\r', (byte)'\n' }, 0, 7);
642642
Assert.Equal("world", await connection.Reader.ReadLineAsync());
643643

644-
await clientStream.WriteAsync(new Memory<byte>(new byte[] { (byte)'a', (byte)'n', (byte)'d', (byte)'\r', (byte)'\n' }, 0, 5));
644+
await clientStream.WriteAsync(new byte[] { (byte)'a', (byte)'n', (byte)'d', (byte)'\r', (byte)'\n' }, 0, 5);
645645
Assert.Equal("and", await connection.Reader.ReadLineAsync());
646646

647647
await Task.Factory.FromAsync(clientStream.BeginWrite, clientStream.EndWrite, new byte[] { (byte)'b', (byte)'e', (byte)'y', (byte)'o', (byte)'n', (byte)'d', (byte)'\r', (byte)'\n' }, 0, 8, null);
@@ -651,15 +651,15 @@ await server.AcceptConnectionAsync(async connection =>
651651
await clientStream.FlushAsync();
652652

653653
// Validate reading APIs on clientStream
654-
await connection.Stream.WriteAsync(Encoding.ASCII.GetBytes("abcdefghijklmnopqrstuvwxyz"));
654+
await connection.Stream.WriteAsync(Encoding.ASCII.GetBytes("abcdefghijklmnopqrstuvwxyz"), 0, 26);
655655
var buffer = new byte[1];
656656

657657
Assert.Equal('a', clientStream.ReadByte());
658658

659659
Assert.Equal(1, clientStream.Read(buffer, 0, 1));
660660
Assert.Equal((byte)'b', buffer[0]);
661661

662-
Assert.Equal(1, clientStream.Read(new Span<byte>(buffer, 0, 1)));
662+
Assert.Equal(1, clientStream.Read(buffer, 0, 1));
663663
Assert.Equal((byte)'c', buffer[0]);
664664

665665
Assert.Equal(1, await clientStream.ReadAsync(buffer, 0, 1));
@@ -675,7 +675,7 @@ await server.AcceptConnectionAsync(async connection =>
675675
Task copyTask = clientStream.CopyToAsync(ms);
676676

677677
string bigString = string.Concat(Enumerable.Repeat("abcdefghijklmnopqrstuvwxyz", 1000));
678-
Task lotsOfDataSent = connection.Socket.SendAsync(Encoding.ASCII.GetBytes(bigString), SocketFlags.None);
678+
Task lotsOfDataSent = connection.Socket.SendAsync(new ArraySegment<byte>(Encoding.ASCII.GetBytes(bigString)), SocketFlags.None);
679679
connection.Socket.Shutdown(SocketShutdown.Send);
680680
await copyTask;
681681
await lotsOfDataSent;

StandardSocketsHttpHandler.FunctionalTests/StandardSocketsHttpHandler.FunctionalTests.csproj

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp3.1</TargetFramework>
4+
<TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
55
<IsPackable>false</IsPackable>
66
<DefineConstants>TargetsWindows</DefineConstants>
77
</PropertyGroup>
88

9-
<ItemGroup>
9+
<PropertyGroup Condition=" '$(TargetFramework)' == 'net472' ">
10+
<DefineConstants>TargetsWindows;NET472</DefineConstants>
11+
</PropertyGroup>
12+
13+
<ItemGroup Condition=" '$(TargetFramework)' == 'net472' ">
14+
<Compile Remove="TestUtilities\PlatformDetection.NetFx.cs" />
15+
</ItemGroup>
16+
17+
<ItemGroup Condition=" '$(TargetFramework)' != 'net472' ">
1018
<Compile Remove="TestUtilities\PlatformDetection.NonNetFx.cs" />
1119
</ItemGroup>
1220

@@ -20,8 +28,12 @@
2028
<PackageReference Include="xunit" Version="2.4.0" />
2129
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
2230
</ItemGroup>
31+
32+
<ItemGroup Condition=" '$(TargetFramework)' == 'net472' ">
33+
<Reference Include="System.Net.Http" />
34+
</ItemGroup>
2335

24-
<ItemGroup>
36+
<ItemGroup Condition=" '$(TargetFramework)' != 'net472' ">
2537
<PackageReference Include="Microsoft.Win32.Registry" Version="4.7.0" />
2638
</ItemGroup>
2739

0 commit comments

Comments
 (0)