Esempio n. 1
0
        public static void Execute()
        {
            Console.WriteLine("Executing WriteStream-pair test");

            _clientData = new byte[DataSize];
            _serverData = new byte[DataSize];
            var r = new Random();

            r.NextBytes(_clientData);
            r.NextBytes(_serverData);

            var clientThread = new Thread(
                () =>
            {
                var req = new PairSocket();
                req.Connect(InprocAddress);

                byte[] streamOutput = new byte[BufferSize];
                while (true)
                {
                    var sw = Stopwatch.StartNew();
                    for (int i = 0; i < Iter; i++)
                    {
                        using (var writeStream = req.CreateSendStream())
                        {
                            writeStream.Write(_clientData, 0, _clientData.Length);
                            var result = req.SendStreamImmediate(writeStream);
                            Trace.Assert(result);
                        }

                        int read = 0;
                        using (var stream = req.ReceiveStream())
                            while (stream.Length != stream.Position)
                            {
                                read += stream.Read(streamOutput, 0, streamOutput.Length);
                            }
                        Trace.Assert(read == _serverData.Length);
                    }
                    sw.Stop();
                    var secondsPerSend = sw.Elapsed.TotalSeconds / (double)Iter;
                    Console.WriteLine("WriteStream-Pair Time {0} us, {1} per second, {2} mb/s ",
                                      (int)(secondsPerSend * 1000d * 1000d),
                                      (int)(1d / secondsPerSend),
                                      (int)(DataSize * 2d / (1024d * 1024d * secondsPerSend)));
                }
            });

            clientThread.Start();

            {
                var rep = new PairSocket();
                rep.Bind(InprocAddress);

                byte[] streamOutput = new byte[BufferSize];

                var sw = Stopwatch.StartNew();
                while (sw.Elapsed.TotalSeconds < 10)
                {
                    int read = 0;
                    using (var stream = rep.ReceiveStream())
                        while (stream.Length != stream.Position)
                        {
                            read += stream.Read(streamOutput, 0, streamOutput.Length);
                        }

                    using (var writeStream = rep.CreateSendStream())
                    {
                        writeStream.Write(_serverData, 0, _serverData.Length);
                        var result = rep.SendStreamImmediate(writeStream);
                        Trace.Assert(result);
                    }
                }

                clientThread.Abort();
            }
        }