You've already forked linux-packaging-mono
Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
This commit is contained in:
@ -101,7 +101,6 @@ namespace MonoTests.System.Net.WebSockets
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Ignore ("See bug #24340")]
|
||||
public void EchoTest ()
|
||||
{
|
||||
const string Payload = "This is a websocket test";
|
||||
@ -126,7 +125,6 @@ namespace MonoTests.System.Net.WebSockets
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Ignore ("See bug #24340")]
|
||||
public void CloseOutputAsyncTest ()
|
||||
{
|
||||
Assert.IsTrue (socket.ConnectAsync (new Uri (EchoServerUrl), CancellationToken.None).Wait (5000));
|
||||
@ -220,6 +218,45 @@ namespace MonoTests.System.Net.WebSockets
|
||||
Assert.Fail ("Should have thrown");
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Category ("NotWorking")] // FIXME: test relies on unimplemented HttpListenerContext.AcceptWebSocketAsync (), reenable it when the method is implemented
|
||||
public void SendAsyncEndOfMessageTest ()
|
||||
{
|
||||
var cancellationToken = new CancellationTokenSource (TimeSpan.FromSeconds (30)).Token;
|
||||
SendAsyncEndOfMessageTest (false, WebSocketMessageType.Text, cancellationToken).Wait (5000);
|
||||
SendAsyncEndOfMessageTest (true, WebSocketMessageType.Text, cancellationToken).Wait (5000);
|
||||
SendAsyncEndOfMessageTest (false, WebSocketMessageType.Binary, cancellationToken).Wait (5000);
|
||||
SendAsyncEndOfMessageTest (true, WebSocketMessageType.Binary, cancellationToken).Wait (5000);
|
||||
}
|
||||
|
||||
public async Task SendAsyncEndOfMessageTest (bool expectedEndOfMessage, WebSocketMessageType webSocketMessageType, CancellationToken cancellationToken)
|
||||
{
|
||||
using (var client = new ClientWebSocket ()) {
|
||||
// Configure the listener.
|
||||
var serverReceive = HandleHttpWebSocketRequestAsync<WebSocketReceiveResult> (async socket => await socket.ReceiveAsync (new ArraySegment<byte> (new byte[32]), cancellationToken), cancellationToken);
|
||||
|
||||
// Connect to the listener and make the request.
|
||||
await client.ConnectAsync (new Uri ("ws://localhost:" + Port + "/"), cancellationToken);
|
||||
await client.SendAsync (new ArraySegment<byte> (Encoding.UTF8.GetBytes ("test")), webSocketMessageType, expectedEndOfMessage, cancellationToken);
|
||||
|
||||
// Wait for the listener to handle the request and return its result.
|
||||
var result = await serverReceive;
|
||||
|
||||
// Cleanup and check results.
|
||||
await client.CloseAsync (WebSocketCloseStatus.NormalClosure, "Finished", cancellationToken);
|
||||
Assert.AreEqual (expectedEndOfMessage, result.EndOfMessage, "EndOfMessage should be " + expectedEndOfMessage);
|
||||
}
|
||||
}
|
||||
|
||||
async Task<T> HandleHttpWebSocketRequestAsync<T> (Func<WebSocket, Task<T>> action, CancellationToken cancellationToken)
|
||||
{
|
||||
var ctx = await this.listener.GetContextAsync ();
|
||||
var wsContext = await ctx.AcceptWebSocketAsync (null);
|
||||
var result = await action (wsContext.WebSocket);
|
||||
await wsContext.WebSocket.CloseOutputAsync (WebSocketCloseStatus.NormalClosure, "Finished", cancellationToken);
|
||||
return result;
|
||||
}
|
||||
|
||||
async Task HandleHttpRequestAsync (Action<HttpListenerRequest, HttpListenerResponse> handler)
|
||||
{
|
||||
var ctx = await listener.GetContextAsync ();
|
||||
|
Reference in New Issue
Block a user