コード例 #1
0
ファイル: BlobsTest.cs プロジェクト: heruix/RTVS
        public async Task CreateWriteWithSeekBlob()
        {
            IRBlobInfo blob = null;

            using (RBlobStream blobStream = await RBlobStream.CreateAsync(_session))
                using (BinaryWriter writer = new BinaryWriter(blobStream)) {
                    // write {1, 2, 3}
                    writer.Write((long)1);
                    writer.Write((long)2);
                    writer.Write((long)3);

                    // go back to position 2
                    blobStream.Seek(sizeof(long), SeekOrigin.Begin);

                    // change data to {1, 4, 3}
                    writer.Write((long)4);
                    blob = blobStream.GetBlobInfo();
                }

            using (RBlobStream blobStream = await RBlobStream.OpenAsync(blob, _session))
                using (BinaryReader reader = new BinaryReader(blobStream)) {
                    long[] expectedData = { 1, 4, 3 };

                    for (int i = 0; i < expectedData.Length; ++i)
                    {
                        reader.ReadInt64().Should().Be(expectedData[i]);
                    }
                }
        }
コード例 #2
0
ファイル: BlobsTest.cs プロジェクト: heruix/RTVS
        public async Task CreateCopyToDestroyBlob()
        {
            using (MemoryStream ms = new MemoryStream())
                using (BinaryWriter writer = new BinaryWriter(ms)) {
                    // write ~7MB of data
                    for (int i = 0; i < 1000000; ++i)
                    {
                        writer.Write((long)i);
                    }
                    writer.Flush();
                    await ms.FlushAsync();

                    ms.Position = 0;

                    IRBlobInfo blob = null;
                    using (RBlobStream blobStream = await RBlobStream.CreateAsync(_session)) {
                        await ms.CopyToAsync(blobStream);

                        blob = blobStream.GetBlobInfo();
                    }

                    using (RBlobStream blobStream = await RBlobStream.OpenAsync(blob, _session))
                        using (MemoryStream ms2 = new MemoryStream()) {
                            await blobStream.CopyToAsync(ms2, 1024 * 1024);

                            await ms2.FlushAsync();

                            ms.ToArray().Should().Equal(ms2.ToArray());
                        }
                }
        }
コード例 #3
0
ファイル: RSessionTest.Blobs.cs プロジェクト: skeptycal/RTVS
            public async Task GetBlob_DisconnectedDuringGet()
            {
                var data = new byte[1024 * 1024];

                IRBlobInfo blob = null;

                using (DataTransferSession dts = new DataTransferSession(_session, null)) {
                    blob = await dts.SendBytesAsync(data, false, null, CancellationToken.None);
                }

                using (RBlobStream blobStream = await RBlobStream.OpenAsync(blob, _session)) {
                    Func <Task> f = async() => {
                        using (MemoryStream ms = new MemoryStream()) {
                            await blobStream.CopyToAsync(ms, 1024);
                        }
                    };
                    await Task.Delay(100);

                    await _session.StopHostAsync();

                    await f.ShouldThrowAsync <RHostDisconnectedException>();
                }
            }