Ejemplo n.º 1
0
 public void Empty()
 {
     var stream = new TestStream (new MemoryStream (), null);
     var rpcStream = new RPCStream (stream);
     Assert.IsFalse (rpcStream.DataAvailable);
     //rpcStream.Read ();
 }
Ejemplo n.º 2
0
 public void ReadGarbage()
 {
     var data = new byte[RPCStream.bufferSize + 1];
     var rand = new Random (42);
     rand.NextBytes (data);
     var rpcStream = new RPCStream (new TestStream (new MemoryStream (data), null));
     Assert.Throws<RequestBufferOverflowException> (() => rpcStream.Read ());
 }
Ejemplo n.º 3
0
 public void Empty()
 {
     var stream = new TestStream (new MemoryStream (), null);
     var rpcStream = new RPCStream (stream);
     Assert.IsFalse (rpcStream.DataAvailable);
     //rpcStream.Read ();
     Assert.AreEqual (0, rpcStream.BytesWritten);
     Assert.AreEqual (0, rpcStream.BytesRead);
 }
Ejemplo n.º 4
0
 public void ReadSingleRequest()
 {
     var stream = new TestStream (new MemoryStream (requestBytes), null);
     var rpcStream = new RPCStream (stream);
     Assert.IsTrue (rpcStream.DataAvailable);
     Request request = rpcStream.Read ();
     Assert.IsFalse (rpcStream.DataAvailable);
     Assert.AreEqual (expectedRequest.Service, request.Service);
     Assert.AreEqual (expectedRequest.Procedure, request.Procedure);
 }
Ejemplo n.º 5
0
 public void ReadMalformedRequest()
 {
     // A request without all of the required fields filled in
     var builder = Request.CreateBuilder ();
     builder.Service = "SomeServiceName";
     expectedRequest = builder.BuildPartial ();
     var stream = new MemoryStream ();
     expectedRequest.WriteDelimitedTo (stream);
     stream.Seek (0, SeekOrigin.Begin);
     var rpcStream = new RPCStream (new TestStream (stream, null));
     Assert.Throws<MalformedRequestException> (() => rpcStream.Read ());
 }
Ejemplo n.º 6
0
        public void ReadSingleRequest()
        {
            var byteStream = new TestStream(requestBytes);
            var rpcStream  = new RPCStream(byteStream);

            Assert.AreEqual(0, rpcStream.BytesWritten);
            Assert.AreEqual(0, rpcStream.BytesRead);
            Assert.IsTrue(rpcStream.DataAvailable);
            Assert.AreEqual(0, rpcStream.BytesWritten);
            Assert.AreEqual(requestBytes.Length, rpcStream.BytesRead);
            Request request = rpcStream.Read();

            Assert.IsFalse(rpcStream.DataAvailable);
            Assert.Throws <KRPC.Server.Message.NoRequestException> (() => rpcStream.Read());
            Assert.AreEqual(expectedRequest.Service, request.Service);
            Assert.AreEqual(expectedRequest.Procedure, request.Procedure);
            Assert.AreEqual(0, rpcStream.BytesWritten);
            Assert.AreEqual(requestBytes.Length, rpcStream.BytesRead);
            Assert.IsFalse(byteStream.Closed);
        }
Ejemplo n.º 7
0
        public void ReadMultipleRequests()
        {
            var repeats = 5;
            var multipleRequestBytes = new byte [requestBytes.Length * repeats];

            for (int i = 0; i < repeats; i++)
            {
                Array.Copy(requestBytes, 0, multipleRequestBytes, i * requestBytes.Length, requestBytes.Length);
            }
            var byteStream = new TestStream(multipleRequestBytes);
            var rpcStream  = new RPCStream(byteStream);

            Assert.AreEqual(0, rpcStream.BytesWritten);
            Assert.AreEqual(0, rpcStream.BytesRead);
            for (int i = 0; i < repeats; i++)
            {
                Assert.IsTrue(rpcStream.DataAvailable);
                Assert.AreEqual(0, rpcStream.BytesWritten);
                Assert.AreEqual(multipleRequestBytes.Length, rpcStream.BytesRead);
                Request request = rpcStream.Read();
                if (i < repeats - 1)
                {
                    Assert.IsTrue(rpcStream.DataAvailable);
                }
                else
                {
                    Assert.IsFalse(rpcStream.DataAvailable);
                    Assert.Throws <KRPC.Server.Message.NoRequestException> (() => rpcStream.Read());
                }
                Assert.AreEqual(expectedRequest.Calls.Count, request.Calls.Count);
                Assert.AreEqual(expectedRequest.Calls [0].Service, request.Calls [0].Service);
                Assert.AreEqual(expectedRequest.Calls [0].Procedure, request.Calls [0].Procedure);
                Assert.AreEqual(0, rpcStream.BytesWritten);
                Assert.AreEqual(multipleRequestBytes.Length, rpcStream.BytesRead);
            }
            Assert.IsFalse(byteStream.Closed);
        }
Ejemplo n.º 8
0
        public void ReadSingleRequestInParts()
        {
            // Split the message bytes into 3 parts
            Assert.IsTrue (requestBytes.Length > 15);
            var part1 = new byte[4];
            var part2 = new byte[6];
            var part3 = new byte[requestBytes.Length - 10];
            Array.Copy (requestBytes, 0, part1, 0, part1.Length);
            Array.Copy (requestBytes, part1.Length, part2, 0, part2.Length);
            Array.Copy (requestBytes, part1.Length + part2.Length, part3, 0, part3.Length);

            // Write part 1
            var stream = new MemoryStream ();
            stream.Write (part1, 0, part1.Length);
            stream.Seek (0, SeekOrigin.Begin);

            // Read part 1
            var rpcStream = new RPCStream (new TestStream (stream, null));
            Assert.IsFalse (rpcStream.DataAvailable);
            Assert.AreEqual (0, rpcStream.BytesWritten);
            Assert.AreEqual (part1.Length, rpcStream.BytesRead);

            // Write part 2
            Assert.AreEqual (part1.Length, stream.Position);
            stream.Write (part2, 0, part2.Length);
            stream.Seek (part1.Length, SeekOrigin.Begin);

            // Read part 2
            Assert.IsFalse (rpcStream.DataAvailable);
            Assert.AreEqual (0, rpcStream.BytesWritten);
            Assert.AreEqual (part1.Length + part2.Length, rpcStream.BytesRead);

            // Write part 3
            Assert.AreEqual (part1.Length + part2.Length, stream.Position);
            stream.Write (part3, 0, part3.Length);
            stream.Seek (-part3.Length, SeekOrigin.Current);

            // Read part 3
            Assert.IsTrue (rpcStream.DataAvailable);
            Assert.AreEqual (0, rpcStream.BytesWritten);
            Assert.AreEqual (part1.Length + part2.Length + part3.Length, rpcStream.BytesRead);
            Request request = rpcStream.Read ();
            Assert.IsFalse (rpcStream.DataAvailable);
            Assert.AreEqual (0, rpcStream.BytesWritten);
            Assert.AreEqual (part1.Length + part2.Length + part3.Length, rpcStream.BytesRead);
            Assert.AreEqual (expectedRequest.Service, request.Service);
            Assert.AreEqual (expectedRequest.Procedure, request.Procedure);
        }
Ejemplo n.º 9
0
 public void WriteSingleResponse()
 {
     var stream = new MemoryStream ();
     var rpcStream = new RPCStream (new TestStream (null, stream));
     rpcStream.Write (expectedResponse);
     byte[] bytes = stream.ToArray ();
     Assert.IsTrue (responseBytes.SequenceEqual (bytes));
     Assert.AreEqual (bytes.Length, rpcStream.BytesWritten);
     Assert.AreEqual (0, rpcStream.BytesRead);
 }