forked from kerryjiang/SuperSocket
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainTest.cs
More file actions
89 lines (71 loc) · 2.98 KB
/
MainTest.cs
File metadata and controls
89 lines (71 loc) · 2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using SuperSocket.ProtoBase;
using Xunit;
using Xunit.Abstractions;
using Microsoft.Extensions.Hosting;
using SuperSocket;
namespace Tests
{
[Collection("Basic")]
public class MainTest : TestBase
{
public MainTest(ITestOutputHelper outputHelper)
: base(outputHelper)
{
}
[Fact]
public async Task TestSessionCount()
{
var server = CreateSocketServerBuilder<TextPackageInfo, LinePipelineFilter>()
.ConfigurePackageHandler(async (s, p) =>
{
await s.SendAsync(Utf8Encoding.GetBytes("Hello World\r\n"));
}).BuildAsServer();
Assert.Equal("TestServer", server.Name);
Assert.True(await server.StartAsync());
OutputHelper.WriteLine("Started.");
Assert.Equal(0, server.SessionCount);
OutputHelper.WriteLine("SessionCount:" + server.SessionCount);
var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
await client.ConnectAsync(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4040));
OutputHelper.WriteLine("Connected.");
await Task.Delay(3000);
Assert.Equal(1, server.SessionCount);
OutputHelper.WriteLine("SessionCount:" + server.SessionCount);
client.Shutdown(SocketShutdown.Both);
client.Close();
await Task.Delay(1000);
Assert.Equal(0, server.SessionCount);
OutputHelper.WriteLine("SessionCount:" + server.SessionCount);
await server.StopAsync();
}
[Fact]
public async Task TestConsoleProtocol()
{
var server = CreateSocketServerBuilder<TextPackageInfo, LinePipelineFilter>()
.ConfigurePackageHandler(async (IAppSession s, TextPackageInfo p) =>
{
await s.SendAsync(Utf8Encoding.GetBytes("Hello World\r\n"));
}).BuildAsServer() as IServer;
Assert.True(await server.StartAsync());
Assert.Equal(0, server.SessionCount);
var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
await client.ConnectAsync(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4040));
using (var stream = new NetworkStream(client))
using (var streamReader = new StreamReader(stream, Utf8Encoding, true))
using (var streamWriter = new StreamWriter(stream, Utf8Encoding, 1024 * 1024 * 4))
{
await streamWriter.WriteAsync("Hello World\r\n");
await streamWriter.FlushAsync();
var line = await streamReader.ReadLineAsync();
Assert.Equal("Hello World", line);
}
await server.StopAsync();
}
}
}