Ejemplo n.º 1
0
        public void TestPSocketArgsFactory()
        {
            PSocketArgsFactory sut = new PSocketArgsFactory(3000, 1000);

            var res1 = sut.GetEmptyArgs();

            Assert.NotNull(res1);
            Assert.Null(res1.Buffer);

            var res2 = sut.AllocateArgs();

            Assert.NotNull(res2);
            Assert.NotNull(res2.Buffer);
            Assert.Equal(0, res2.Offset);
            Assert.Equal(1000, res2.Count);

            var res3 = sut.AllocateArgs();

            Assert.NotNull(res3);
            Assert.NotNull(res3.Buffer);
            Assert.Equal(1000, res3.Offset);
            Assert.Equal(1000, res3.Count);

            var res4 = sut.AllocateArgs();

            Assert.NotNull(res4);
            Assert.NotNull(res4.Buffer);
            Assert.Equal(2000, res4.Offset);
            Assert.Equal(1000, res4.Count);

            Assert.Throws <ArgumentException>(() => sut.AllocateArgs());

            sut.FreeArgs(res3);

            var res5 = sut.AllocateArgs();

            Assert.NotNull(res5);
            Assert.NotNull(res5.Buffer);
            Assert.Equal(1000, res5.Offset);
            Assert.Equal(1000, res5.Count);

            var t1 = new SocketAsyncEventArgs();

            Assert.Throws <ArgumentException>(() => sut.FreeArgs(t1));

            PSocketAsyncEventArgs t2 = new PSocketAsyncEventArgs();

            t2.SetBuffer(new byte[10]);
            Assert.Throws <ArgumentException>(() => sut.FreeArgs(t2 as ISocketAsyncEventArgs));
        }
Ejemplo n.º 2
0
        // Removing this test for now as it access the internet
        public void TestGETRequest()
        {
            int received = 0;
            var factory  = new PSocketArgsFactory(8384, 512);

            using (var cli = new SocketConn(new PSocket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp), factory))
            {
                var connect = cli.Connect(
                    new NetAddress("178.62.88.250", 80),
                    (a) =>
                {
                    if (a.BytesTransferred > 0)
                    {
                        received += a.BytesTransferred;
                    }
                    return(true);
                }
                    );
                connect.ContinueWith((res) =>
                {
                    Assert.True(res.Result);
                    Task.Run(() =>
                    {
                        var sb = new StringBuilder();
                        sb.Append("GET / HTTP/1.1\r\n");
                        sb.Append("Host: ionot.com\r\n");
                        sb.Append("Connection: keep-alive\r\n");
                        sb.Append("Cache-Control: no-cache\r\n");
                        sb.Append("User-Agent: PrimitiveBase\r\n");
                        sb.Append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n");
                        sb.Append("Accept-Encoding: gzip, deflate\r\n");
                        sb.Append("Accept-Language: en-GB,en;q=0.9,en-US;q=0.8\r\n");
                        sb.Append("\r\n");

                        var bytes = ASCIIEncoding.ASCII.GetBytes(sb.ToString());

                        var send = cli.SendBuffer(bytes);
                        send.ContinueWith((res2) =>
                        {
                            Assert.True(res2.Result);
                        });
                    });
                });

                Thread.Sleep(3000);

                Assert.NotEqual(0, received);
            }
        }