Exemple #1
0
        public static async Task TestSendBehavior(string expectedVerb, RetrievalCommand command)
        {
            Assert.AreEqual(expectedVerb, command.Verb);
            var socket = new MockSocket();
            await command.SendRequest(socket);

            using (var stream = socket.GetSentData())
            {
                var line = stream.ReadLine();
                Assert.AreEqual(expectedVerb + " " + command.Key, line);
                Assert.AreEqual(stream.Position, stream.Length);
            }
        }
Exemple #2
0
        public static async Task TestSendBehavior(string expectedVerb, ArithmeticalCommand command)
        {
            var mockSocket = new MockSocket();
            await command.SendRequest(mockSocket);

            using (var stream = mockSocket.GetSentData())
            {
                // validate the command line
                var commandLine = stream.ReadLine();
                Assert.IsNotNull(commandLine);
                var parts = commandLine.Split(' ');
                Assert.AreEqual(3, parts.Length);
                Assert.AreEqual(command.Verb, parts[0]);
                Assert.AreEqual(command.Key, parts[1]);
                Assert.AreEqual(command.Value.ToString(), parts[2]);
                Assert.AreEqual(stream.Length, stream.Position);
            }
        }
Exemple #3
0
        public static async Task TestSendBehavior <T>(string expectedVerb, StorageCommand <T> command)
        {
            var mockSocket = new MockSocket();
            await command.SendRequest(mockSocket);

            using (var stream = mockSocket.GetSentData())
            {
                // validate the command line
                var commandLine = stream.ReadLine();
                Assert.IsNotNull(commandLine);
                var parts = commandLine.Split(' ');
                Assert.AreEqual(5, parts.Length);
                Assert.AreEqual(command.Verb, parts[0]);
                Assert.AreEqual(command.Key, parts[1]);
                if (command.Options == null)
                {
                    Assert.AreEqual("0", parts[2]);
                    Assert.AreEqual("0", parts[3]);
                }
                else
                {
                    Assert.AreEqual(command.Options.Flags.ToString(), parts[2]);
                    var expectedExpires = command.Options.ExpirationTime.HasValue
                        ? ((uint)(command.Options.ExpirationTime.Value.TotalSeconds)).ToString()
                        : "0";
                    Assert.AreEqual(expectedExpires, parts[3]);
                }
                Assert.AreEqual(command.Data.Count.ToString(), parts[4]);

                // validate the data block
                var block = new byte[command.Data.Count];
                var read  = stream.Read(block, 0, block.Length);
                Assert.AreEqual(block.Length, read);
                var expected = new byte[command.Data.Count];
                Buffer.BlockCopy(command.Data.Array, command.Data.Offset, expected, 0, command.Data.Count);
                CollectionAssert.AreEqual(expected, block);

                // read the last endline
                Assert.AreEqual('\r', stream.ReadByte());
                Assert.AreEqual('\n', stream.ReadByte());
                Assert.AreEqual(-1, stream.ReadByte());
            }
        }