[Test] // bug #411115
		public void Deserialize_Stream_NonSeekable ()
		{
			string s1 = "Hello world";
			NonSeekableStream ns = new NonSeekableStream ();
			LosFormatter lf = new LosFormatter ();
			lf.Serialize (ns, s1);
			ns.Reset ();
			string s2 = lf.Deserialize (ns) as string;
			Assert.AreEqual (s1, s2);
		}
        public async Task Read_WithReadOnlyMemory()
        {
            var expected = TestHelper.GetRandomBuffer(10 * Constants.MB);

            _ = new ReadOnlyMemory <byte>(expected);
            var actual = new byte[expected.Length];

            Assert.AreNotSame(expected, actual);

            using (var expectedStream = new NonSeekableStream(expected))
                using (var reader = new StreamPartitioner(expectedStream))
                {
                    Assert.IsTrue(expectedStream.CanRead);
                    Assert.IsFalse(expectedStream.CanSeek);

                    do
                    {
                        var position = expectedStream.Position;
                        using (var buffer = await reader.ReadAsync())
                        {
                            if (buffer.Length == 0)
                            {
                                Assert.AreEqual(expectedStream.Length, expectedStream.Position);
                                break;
                            }
                            else
                            {
                                Assert.IsTrue(buffer.CanRead);
                                Assert.IsTrue(buffer.CanSeek);

                                buffer.Read(out var memory, (int)buffer.Length);

                                memory.CopyTo(new Memory <byte>(actual, (int)position, (int)buffer.Length));
                            }
                        }
                    }while (true);

                    TestHelper.AssertSequenceEqual(expected, actual);
                }
        }
        public async Task CanCreateBinaryDataFromNonSeekableStream()
        {
            byte[] buffer = Encoding.UTF8.GetBytes("some data");
            using MemoryStream stream = new NonSeekableStream(buffer);
            BinaryData data = BinaryData.FromStream(stream);

            Assert.Equal(buffer, data.ToArray());

            byte[] output       = new byte[buffer.Length];
            var    outputStream = data.ToStream();

            outputStream.Read(output, 0, (int)outputStream.Length);
            Assert.Equal(buffer, output);

            stream.Position = 0;
            data            = await BinaryData.FromStreamAsync(stream);

            Assert.Equal(buffer, data.ToArray());

            outputStream = data.ToStream();
            outputStream.Read(output, 0, (int)outputStream.Length);
            Assert.Equal(buffer, output);
        }
        public async Task GetNextPartitionAsync()
        {
            var expected = TestHelper.GetRandomBuffer(10 * Constants.MB);
            var actual   = new byte[expected.Length];

            Assert.AreNotSame(expected, actual);

            using (var expectedStream = new NonSeekableStream(expected))
                using (var reader = new StreamPartitioner(expectedStream))
                {
                    Assert.IsTrue(expectedStream.CanRead);
                    Assert.IsFalse(expectedStream.CanSeek);

                    do
                    {
                        var position = expectedStream.Position;
                        using (StreamPartition buffer = await reader.GetNextPartitionAsync())
                        {
                            if (buffer.Length == 0)
                            {
                                Assert.AreEqual(expectedStream.Length, expectedStream.Position);
                                break;
                            }
                            else
                            {
                                Assert.IsTrue(buffer.CanRead);
                                Assert.IsTrue(buffer.CanSeek);

                                await buffer.ReadAsync(actual, (int)position, (int)buffer.Length);
                            }
                        }
                    }while (true);

                    TestHelper.AssertSequenceEqual(expected, actual);
                }
        }
        public void TestWithRetransmitFailingPutBlobsWithNonSeekableStream()
        {
            const string bucketName = "TestWithRetransmitFailingPutBlobsWithNonSeekableStream";
            try
            {
                var helpers = new Ds3ClientHelpers(this._client, objectTransferAttempts: 4);
                helpers.EnsureBucketExists(bucketName);

                const string content = "hi im content";
                var contentBytes = System.Text.Encoding.UTF8.GetBytes(content);

                var stream = new NonSeekableStream(new MemoryStream(contentBytes));

                var objects = new List<Ds3Object>
                {
                    new Ds3Object("obj1", contentBytes.Length)
                };

                var job = helpers.StartWriteJob(bucketName, objects);

                try
                {
                    job.Transfer(s => stream);
                    Assert.Fail();
                }
                catch (AggregateException age)
                {
                    Assert.AreEqual(typeof(Ds3NotSupportedStream), age.InnerExceptions[0].GetType());
                }
            }
            finally
            {
                Ds3TestUtils.DeleteBucket(_client, bucketName);
            }
        }
Beispiel #6
0
		public void Deserialize_Stream_NonSeekable ()
		{
			string s1 = "Hello world";
			NonSeekableStream ns = new NonSeekableStream ();
			LosFormatter lf = new LosFormatter ();
			lf.Serialize (ns, s1);
		}
Beispiel #7
0
    public void ByteArrayFromStream()
    {
        var data = new byte[64 * 1024];

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

        using var ms = new MemoryStream();

        var writer = new NbtWriter(ms, "root");

        {
            byte[] buffer = new byte[1024];
            using (var dataStream = new NonSeekableStream(new MemoryStream(data)))
            {
                writer.WriteByteArray("byteArray1", dataStream, data.Length);
            }
            using (var dataStream = new NonSeekableStream(new MemoryStream(data)))
            {
                writer.WriteByteArray("byteArray2", dataStream, data.Length, buffer);
            }
            using (var dataStream = new NonSeekableStream(new MemoryStream(data)))
            {
                writer.WriteByteArray("byteArray3", dataStream, 1);
            }
            using (var dataStream = new NonSeekableStream(new MemoryStream(data)))
            {
                writer.WriteByteArray("byteArray4", dataStream, 1, buffer);
            }

            writer.BeginList("innerLists", NbtTagType.ByteArray, 4);
            using (var dataStream = new NonSeekableStream(new MemoryStream(data)))
            {
                writer.WriteByteArray(dataStream, data.Length);
            }
            using (var dataStream = new NonSeekableStream(new MemoryStream(data)))
            {
                writer.WriteByteArray(dataStream, data.Length, buffer);
            }
            using (var dataStream = new NonSeekableStream(new MemoryStream(data)))
            {
                writer.WriteByteArray(dataStream, 1);
            }
            using (var dataStream = new NonSeekableStream(new MemoryStream(data)))
            {
                writer.WriteByteArray(dataStream, 1, buffer);
            }
            writer.EndList();
        }
        writer.EndCompound();
        writer.Finish();

        ms.Position = 0;
        var file = new NbtFile();

        file.LoadFromStream(ms, NbtCompression.None);
        Assert.Equal(data, file.RootTag["byteArray1"].ByteArrayValue);
        Assert.Equal(data, file.RootTag["byteArray2"].ByteArrayValue);
        Assert.Single(file.RootTag["byteArray3"].ByteArrayValue);
        Assert.Equal(data[0], file.RootTag["byteArray3"].ByteArrayValue[0]);
        Assert.Single(file.RootTag["byteArray4"].ByteArrayValue);
        Assert.Equal(data[0], file.RootTag["byteArray4"].ByteArrayValue[0]);

        Assert.Equal(data, file.RootTag["innerLists"][0].ByteArrayValue);
        Assert.Equal(data, file.RootTag["innerLists"][1].ByteArrayValue);
        Assert.Single(file.RootTag["innerLists"][2].ByteArrayValue);
        Assert.Equal(data[0], file.RootTag["innerLists"][2].ByteArrayValue[0]);
        Assert.Single(file.RootTag["innerLists"][3].ByteArrayValue);
        Assert.Equal(data[0], file.RootTag["innerLists"][3].ByteArrayValue[0]);
    }