示例#1
0
        public void Should_receive_512K_of_data()
        {
            _socksClient.WriteByte(1);
            // wait for approve test mode 1
            var state = _socksClient.ReadByte();

            Assert.AreEqual(1, state, "Test mode 1 should be ready");

            var data = new byte[2048];

            for (int i = 0; i < data.Length; i++)
            {
                data[i] = (byte)(i % 256);
            }

            int totalReported = 0;

            ThreadPool.QueueUserWorkItem(delegate
            {
                // reader
                try
                {
                    while (true)
                    {
                        var buf = new byte[4];
                        _socksClient.Read(buf, 0, 4);
                        var count      = BitConverter.ToInt32(buf, 0);
                        totalReported += count;
                    }
                }
                catch
                {
                }
            });

            for (int i = 0; i < 256; i++)
            {
                _socksClient.Write(data);
            }
            while (1024 * 512 != totalReported)
            {
                Console.WriteLine($"Waiting {1024 * 512} response: " + totalReported);
                Thread.Sleep(1000);
            }
            Assert.AreEqual(1024 * 512, totalReported, "State is good");
        }