[#33] Client: Add extended life tests
All checks were successful
DCO / DCO (pull_request) Successful in 25s
lint-build / dotnet8.0 (pull_request) Successful in 53s

More range variations

Signed-off-by: Pavel Gross <p.gross@yadro.com>
This commit is contained in:
Pavel Gross 2025-02-26 12:10:09 +03:00
parent 389aae975e
commit d579fd8dd4

View file

@ -132,17 +132,28 @@ public class ObjectTests(ITestOutputHelper testOutputHelper) : SmokeTestsBase
} }
} }
private static async Task ValidateRange(IFrostFSClient client, FrostFsContainerId containerId, byte[] bytes, FrostFsObjectId objectId) private async Task ValidateRange(IFrostFSClient client, FrostFsContainerId containerId, byte[] bytes, FrostFsObjectId objectId)
{ {
if (bytes.Length < 200) if (bytes.Length < 200)
return; return;
var rangeParam = new PrmRangeGet(containerId, objectId, new FrostFsRange(50, 100)); await CheckRange(client, containerId, bytes, objectId, new FrostFsRange(0, 50));
await CheckRange(client, containerId, bytes, objectId, new FrostFsRange(50, 100));
await CheckRange(client, containerId, bytes, objectId, new FrostFsRange((ulong)bytes.Length-100, 100));
if (bytes.Length >= 6200)
await CheckRange(client, containerId, bytes, objectId, new FrostFsRange(6000, 100));
}
private async Task CheckRange(IFrostFSClient client, FrostFsContainerId containerId, byte[] bytes, FrostFsObjectId objectId, FrostFsRange range)
{
var rangeParam = new PrmRangeGet(containerId, objectId, range);
var rangeReader = await client.GetRangeAsync(rangeParam, default); var rangeReader = await client.GetRangeAsync(rangeParam, default);
var downloadedBytes = new byte[rangeParam.Range.Length]; var rangeBytes = new byte[rangeParam.Range.Length];
MemoryStream ms = new(downloadedBytes); MemoryStream ms = new(rangeBytes);
ReadOnlyMemory<byte>? chunk; ReadOnlyMemory<byte>? chunk;
while ((chunk = await rangeReader!.ReadChunk()) != null) while ((chunk = await rangeReader!.ReadChunk()) != null)
@ -150,7 +161,9 @@ public class ObjectTests(ITestOutputHelper testOutputHelper) : SmokeTestsBase
ms.Write(chunk.Value.Span); ms.Write(chunk.Value.Span);
} }
Assert.Equal(SHA256.HashData(bytes.AsSpan().Slice(50, 100)), SHA256.HashData(downloadedBytes)); Assert.Equal(SHA256.HashData(bytes.AsSpan().Slice((int)range.Offset, (int)range.Length)), SHA256.HashData(rangeBytes));
_testOutputHelper.WriteLine($"\t\trange {range.Offset};{range.Length} validated");
} }
private static async Task ValidatePatch(IFrostFSClient client, FrostFsContainerId containerId, byte[] bytes, FrostFsObjectId objectId) private static async Task ValidatePatch(IFrostFSClient client, FrostFsContainerId containerId, byte[] bytes, FrostFsObjectId objectId)