[#28] Client: Use external GRPC Channnel
Signed-off-by: Pavel Gross <p.gross@yadro.com>
This commit is contained in:
parent
9bb7b5eff8
commit
c9418a1894
27 changed files with 520 additions and 438 deletions
|
@ -16,10 +16,9 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
|
||||
private InitParameters GetDefaultParams()
|
||||
{
|
||||
return new InitParameters
|
||||
return new InitParameters((url) => Grpc.Net.Client.GrpcChannel.ForAddress(new Uri(url)))
|
||||
{
|
||||
Key = keyString.LoadWif(),
|
||||
|
||||
NodeParams = [new(1, url, 100.0f)],
|
||||
ClientBuilder = null,
|
||||
GracefulCloseOnSwitchTimeout = 30_000_000,
|
||||
|
@ -32,7 +31,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero));
|
||||
|
||||
|
@ -57,7 +56,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero));
|
||||
|
||||
|
@ -78,7 +77,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var callbackText = string.Empty;
|
||||
|
||||
var options = new InitParameters
|
||||
var options = new InitParameters((url) => Grpc.Net.Client.GrpcChannel.ForAddress(new Uri(url)))
|
||||
{
|
||||
Key = keyString.LoadWif(),
|
||||
NodeParams = [
|
||||
|
@ -91,7 +90,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
Callback = (cs) => callbackText = $"{cs.MethodName} took {cs.ElapsedMicroSeconds} microseconds"
|
||||
};
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var ctx = new CallContext(TimeSpan.Zero);
|
||||
|
||||
|
@ -99,9 +98,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
|
||||
Assert.Null(error);
|
||||
|
||||
using var client = FrostFSClient.GetInstance(GetSingleOwnerOptions(keyString, url));
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
var result = await pool.GetNodeInfoAsync(default);
|
||||
|
||||
var statistics = pool.Statistic();
|
||||
|
||||
|
@ -117,7 +114,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
var callbackText = string.Empty;
|
||||
options.Callback = (cs) => callbackText = $"{cs.MethodName} took {cs.ElapsedMicroSeconds} microseconds";
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var ctx = new CallContext(TimeSpan.Zero);
|
||||
|
||||
|
@ -125,9 +122,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
|
||||
Assert.Null(error);
|
||||
|
||||
using var client = FrostFSClient.GetInstance(GetSingleOwnerOptions(keyString, url));
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
var result = await pool.GetNodeInfoAsync(default);
|
||||
|
||||
Assert.False(string.IsNullOrEmpty(callbackText));
|
||||
Assert.Contains(" took ", callbackText, StringComparison.Ordinal);
|
||||
|
@ -138,7 +133,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -160,7 +155,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -184,19 +179,19 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
bufferMaxSize: 1024,
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false,
|
||||
sessionToken: token);
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
var stream = await pool.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var @object = await pool.GetObjectAsync(new PrmObjectGet(containerId, objectId), default);
|
||||
|
||||
var downloadedBytes = new byte[@object.Header.PayloadLength];
|
||||
MemoryStream ms = new(downloadedBytes);
|
||||
|
||||
ReadOnlyMemory<byte>? chunk = null;
|
||||
ReadOnlyMemory<byte>? chunk;
|
||||
while ((chunk = await @object.ObjectReader!.ReadChunk()) != null)
|
||||
{
|
||||
ms.Write(chunk.Value.Span);
|
||||
|
@ -212,7 +207,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -240,11 +235,12 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")],
|
||||
new FrostFsSplit()),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
new FrostFsSplit()));
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, default);
|
||||
var stream = await pool.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var head = await pool.GetObjectHeadAsync(new PrmObjectHeadGet(containerId, objectId, false), default);
|
||||
|
||||
|
@ -306,7 +302,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
Assert.True(cs.ElapsedMicroSeconds > 0);
|
||||
});
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -331,11 +327,12 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
new FrostFsObjectHeader(
|
||||
containerId: createdContainer,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
[new FrostFsAttributePair("fileName", "test")]));
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, default);
|
||||
var stream = await pool.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -385,7 +382,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
options.Callback = new((cs) => Assert.True(cs.ElapsedMicroSeconds > 0));
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
@ -414,11 +411,12 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
containerId: container,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false,
|
||||
sessionToken: token);
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, default);
|
||||
var stream = await pool.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -472,7 +470,7 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -496,15 +494,14 @@ public class MultithreadPoolSmokeTests : SmokeTestsBase
|
|||
|
||||
byte[] bytes = GetRandomBytes(objectSize);
|
||||
|
||||
var param = new PrmObjectPut(
|
||||
var param = new PrmObjectClientCutPut(
|
||||
new FrostFsObjectHeader(
|
||||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: true);
|
||||
payload: new MemoryStream(bytes));
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, default);
|
||||
var objectId = await pool.PutClientCutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void AccountTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
var result = await client.GetBalanceAsync(default);
|
||||
|
||||
|
@ -30,7 +30,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void NetworkMapTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
var result = await client.GetNetmapSnapshotAsync(default);
|
||||
|
||||
|
@ -50,7 +50,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void NodeInfoTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
|
||||
|
@ -65,12 +65,12 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void NodeInfoStatisticsTest()
|
||||
{
|
||||
var options = GetClientOptions(keyString, url);
|
||||
var options = ClientOptions;
|
||||
|
||||
var callbackContent = string.Empty;
|
||||
options.Value.Callback = (cs) => callbackContent = $"{cs.MethodName} took {cs.ElapsedMicroSeconds} microseconds";
|
||||
|
||||
using var client = FrostFSClient.GetInstance(options);
|
||||
var client = FrostFSClient.GetInstance(options, GrpcChannel);
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
|
||||
|
@ -80,12 +80,10 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void GetSessionTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
var token = await client.CreateSessionAsync(new(100), default);
|
||||
|
||||
var ownerHash = Base58.Decode(OwnerId!.Value);
|
||||
|
||||
Assert.NotNull(token);
|
||||
Assert.NotEqual(Guid.Empty, token.Id);
|
||||
Assert.Equal(33, token.SessionKey.Length);
|
||||
|
@ -94,7 +92,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void CreateObjectWithSessionToken()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -114,11 +112,12 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false,
|
||||
sessionToken: token);
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var @object = await client.GetObjectAsync(new PrmObjectGet(containerId, objectId), default)
|
||||
.ConfigureAwait(true);
|
||||
|
@ -140,7 +139,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void FilterTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -164,11 +163,12 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")],
|
||||
new FrostFsSplit()),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
new FrostFsSplit()));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var head = await client.GetObjectHeadAsync(new PrmObjectHeadGet(containerId, objectId), default);
|
||||
|
||||
|
@ -222,7 +222,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
{
|
||||
bool callbackInvoked = false;
|
||||
|
||||
var options = GetClientOptions(keyString, url);
|
||||
var options = ClientOptions;
|
||||
|
||||
options.Value.Callback = new((cs) =>
|
||||
{
|
||||
|
@ -230,7 +230,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
Assert.True(cs.ElapsedMicroSeconds > 0);
|
||||
});
|
||||
|
||||
using var client = FrostFSClient.GetInstance(options);
|
||||
var client = FrostFSClient.GetInstance(options, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -253,11 +253,12 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
new FrostFsObjectHeader(
|
||||
containerId: createdContainer,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
[new FrostFsAttributePair("fileName", "test")]));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -302,7 +303,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void PatchTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -326,11 +327,12 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
new FrostFsObjectHeader(
|
||||
containerId: createdContainer,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
[new FrostFsAttributePair("fileName", "test")]));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var patch = new byte[16];
|
||||
for (int i = 0; i < 16; i++)
|
||||
|
@ -381,7 +383,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void RangeTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -402,11 +404,12 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
}
|
||||
|
||||
var param = new PrmObjectPut(
|
||||
new FrostFsObjectHeader(containerId: createdContainer, type: FrostFsObjectType.Regular),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
new FrostFsObjectHeader(containerId: createdContainer, type: FrostFsObjectType.Regular));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var rangeParam = new PrmRangeGet(createdContainer, objectId, new FrostFsRange(100, 64));
|
||||
|
||||
|
@ -434,7 +437,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void RangeHashTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -457,11 +460,12 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
var param = new PrmObjectPut(
|
||||
new FrostFsObjectHeader(
|
||||
containerId: createdContainer,
|
||||
type: FrostFsObjectType.Regular),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
type: FrostFsObjectType.Regular));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var rangeParam = new PrmRangeHashGet(createdContainer, objectId, [new FrostFsRange(100, 64)], bytes);
|
||||
|
||||
|
@ -486,7 +490,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[InlineData(6 * 1024 * 1024 + 100)]
|
||||
public async void SimpleScenarioWithSessionTest(int objectSize)
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
//Callback = new((CallStatistics cs) => Assert.True(cs.ElapsedMicroSeconds > 0))
|
||||
var token = await client.CreateSessionAsync(new PrmSessionCreate(int.MaxValue), default);
|
||||
|
||||
|
@ -510,11 +514,12 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
containerId: container,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false,
|
||||
sessionToken: token);
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -567,11 +572,10 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
[InlineData(200)]
|
||||
public async void ClientCutScenarioTest(int objectSize)
|
||||
{
|
||||
|
||||
var options = GetClientOptions(keyString, url);
|
||||
var options = ClientOptions;
|
||||
options.Value.Interceptors.Add(new CallbackInterceptor());
|
||||
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(options, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -589,15 +593,14 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
|
||||
byte[] bytes = GetRandomBytes(objectSize);
|
||||
|
||||
var param = new PrmObjectPut(
|
||||
var param = new PrmObjectClientCutPut(
|
||||
new FrostFsObjectHeader(
|
||||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: true);
|
||||
payload: new MemoryStream(bytes));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var objectId = await client.PutClientCutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -659,7 +662,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
bool callbackInvoked = false;
|
||||
bool intercepterInvoked = false;
|
||||
|
||||
var options = GetClientOptions(keyString, url);
|
||||
var options = ClientOptions;
|
||||
options.Value.Callback = (cs) =>
|
||||
{
|
||||
callbackInvoked = true;
|
||||
|
@ -668,7 +671,7 @@ public class MultithreadSmokeClientTests : SmokeTestsBase
|
|||
|
||||
options.Value.Interceptors.Add(new CallbackInterceptor(s => intercepterInvoked = true));
|
||||
|
||||
using var client = FrostFSClient.GetInstance(options);
|
||||
var client = FrostFSClient.GetInstance(options, GrpcChannel);
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
|
||||
|
|
|
@ -4,8 +4,6 @@ using System.Security.Cryptography;
|
|||
using FrostFS.SDK.Client;
|
||||
using FrostFS.SDK.Cryptography;
|
||||
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace FrostFS.SDK.Tests.Smoke;
|
||||
|
||||
[SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "Default Value is correct for tests")]
|
||||
|
@ -16,10 +14,9 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
|
||||
private InitParameters GetDefaultParams()
|
||||
{
|
||||
return new InitParameters
|
||||
return new InitParameters((url) => Grpc.Net.Client.GrpcChannel.ForAddress(new Uri(url)))
|
||||
{
|
||||
Key = keyString.LoadWif(),
|
||||
|
||||
NodeParams = [new(1, url, 100.0f)],
|
||||
ClientBuilder = null,
|
||||
GracefulCloseOnSwitchTimeout = 30_000_000,
|
||||
|
@ -32,7 +29,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero));
|
||||
|
||||
|
@ -57,7 +54,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero));
|
||||
|
||||
|
@ -78,7 +75,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var callbackText = string.Empty;
|
||||
|
||||
var options = new InitParameters
|
||||
var options = new InitParameters((url) => Grpc.Net.Client.GrpcChannel.ForAddress(new Uri(url)))
|
||||
{
|
||||
Key = keyString.LoadWif(),
|
||||
NodeParams = [
|
||||
|
@ -91,7 +88,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
Callback = (cs) => callbackText = $"{cs.MethodName} took {cs.ElapsedMicroSeconds} microseconds"
|
||||
};
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var ctx = new CallContext(TimeSpan.Zero);
|
||||
|
||||
|
@ -99,9 +96,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
|
||||
Assert.Null(error);
|
||||
|
||||
using var client = FrostFSClient.GetInstance(GetSingleOwnerOptions(keyString, url));
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
var result = await pool.GetNodeInfoAsync(default);
|
||||
|
||||
var statistics = pool.Statistic();
|
||||
|
||||
|
@ -117,7 +112,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
var callbackText = string.Empty;
|
||||
options.Callback = (cs) => callbackText = $"{cs.MethodName} took {cs.ElapsedMicroSeconds} microseconds";
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var ctx = new CallContext(TimeSpan.Zero);
|
||||
|
||||
|
@ -125,9 +120,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
|
||||
Assert.Null(error);
|
||||
|
||||
using var client = FrostFSClient.GetInstance(GetSingleOwnerOptions(keyString, url));
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
var result = await pool.GetNodeInfoAsync(default);
|
||||
|
||||
Assert.False(string.IsNullOrEmpty(callbackText));
|
||||
Assert.Contains(" took ", callbackText, StringComparison.Ordinal);
|
||||
|
@ -138,7 +131,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -160,7 +153,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -184,11 +177,12 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false,
|
||||
sessionToken: token);
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
var stream = await pool.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var @object = await pool.GetObjectAsync(new PrmObjectGet(containerId, objectId), default);
|
||||
|
||||
|
@ -211,7 +205,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -239,11 +233,12 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")],
|
||||
new FrostFsSplit()),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
new FrostFsSplit()));
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, default);
|
||||
var stream = await pool.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var head = await pool.GetObjectHeadAsync(new PrmObjectHeadGet(containerId, objectId), default);
|
||||
|
||||
|
@ -305,7 +300,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
Assert.True(cs.ElapsedMicroSeconds > 0);
|
||||
});
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -332,11 +327,12 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
new FrostFsObjectHeader(
|
||||
containerId: createdContainer,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
[new FrostFsAttributePair("fileName", "test")]));
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, default);
|
||||
var stream = await pool.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -386,7 +382,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
options.Callback = new((cs) => Assert.True(cs.ElapsedMicroSeconds > 0));
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
@ -415,11 +411,12 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
containerId: container,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false,
|
||||
sessionToken: token);
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, new CallContext(TimeSpan.Zero));
|
||||
var stream = await pool.PutObjectAsync(param, new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -474,7 +471,7 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
{
|
||||
var options = GetDefaultParams();
|
||||
|
||||
using var pool = new Pool(options);
|
||||
var pool = new Pool(options);
|
||||
|
||||
var error = await pool.Dial(new CallContext(TimeSpan.Zero)).ConfigureAwait(true);
|
||||
|
||||
|
@ -498,15 +495,14 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
|
||||
byte[] bytes = GetRandomBytes(objectSize);
|
||||
|
||||
var param = new PrmObjectPut(
|
||||
var param = new PrmObjectClientCutPut(
|
||||
new FrostFsObjectHeader(
|
||||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: true);
|
||||
payload: new MemoryStream(bytes));
|
||||
|
||||
var objectId = await pool.PutObjectAsync(param, default);
|
||||
var objectId = await pool.PutClientCutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -558,23 +554,6 @@ public class PoolSmokeTests : SmokeTestsBase
|
|||
return bytes;
|
||||
}
|
||||
|
||||
private static IOptions<ClientSettings> GetSingleOwnerOptions(string key, string url)
|
||||
{
|
||||
return Options.Create(new ClientSettings
|
||||
{
|
||||
Key = key,
|
||||
Host = url
|
||||
});
|
||||
}
|
||||
|
||||
private static IOptions<ClientSettings> GetOptions(string url)
|
||||
{
|
||||
return Options.Create(new ClientSettings
|
||||
{
|
||||
Host = url
|
||||
});
|
||||
}
|
||||
|
||||
static async Task Cleanup(Pool pool)
|
||||
{
|
||||
await foreach (var cid in pool.ListContainersAsync(default, default))
|
||||
|
|
|
@ -19,7 +19,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void AccountTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
var result = await client.GetBalanceAsync(default);
|
||||
|
||||
|
@ -30,7 +30,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void NodeInfoTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
|
||||
|
@ -45,12 +45,12 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void NodeInfoStatisticsTest()
|
||||
{
|
||||
var options = GetClientOptions(keyString, url);
|
||||
var options = ClientOptions;
|
||||
|
||||
var callbackContent = string.Empty;
|
||||
options.Value.Callback = (cs) => callbackContent = $"{cs.MethodName} took {cs.ElapsedMicroSeconds} microseconds";
|
||||
|
||||
using var client = FrostFSClient.GetInstance(options);
|
||||
var client = FrostFSClient.GetInstance(options, GrpcChannel);
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
|
||||
|
@ -60,7 +60,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void GetSessionTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
var token = await client.CreateSessionAsync(new(100), default);
|
||||
|
||||
|
@ -74,7 +74,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void CreateObjectWithSessionToken()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -94,11 +94,12 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false,
|
||||
sessionToken: token);
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var @object = await client.GetObjectAsync(new PrmObjectGet(containerId, objectId), default)
|
||||
.ConfigureAwait(true);
|
||||
|
@ -120,7 +121,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void FilterTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -144,11 +145,12 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")],
|
||||
new FrostFsSplit()),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
new FrostFsSplit()));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var head = await client.GetObjectHeadAsync(new PrmObjectHeadGet(containerId, objectId), default);
|
||||
|
||||
|
@ -202,7 +204,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
{
|
||||
bool callbackInvoked = false;
|
||||
|
||||
var options = GetClientOptions(keyString, url);
|
||||
var options = ClientOptions;
|
||||
|
||||
options.Value.Callback = new((cs) =>
|
||||
{
|
||||
|
@ -210,7 +212,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
Assert.True(cs.ElapsedMicroSeconds > 0);
|
||||
});
|
||||
|
||||
using var client = FrostFSClient.GetInstance(options);
|
||||
var client = FrostFSClient.GetInstance(options, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -233,11 +235,12 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
new FrostFsObjectHeader(
|
||||
containerId: createdContainer,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
[new FrostFsAttributePair("fileName", "test")]));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var filter1 = new FilterByOwnerId(FrostFsMatchType.Equals, OwnerId!);
|
||||
await foreach (var objId in client.SearchObjectsAsync(new PrmObjectSearch(createdContainer, null, [], filter1), default))
|
||||
|
@ -292,7 +295,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void PatchTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -316,24 +319,25 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
new FrostFsObjectHeader(
|
||||
containerId: createdContainer,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
[new FrostFsAttributePair("fileName", "test")]));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
var patch = new byte[16];
|
||||
for (int i = 0; i < 16; i++)
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var patch = new byte[256];
|
||||
for (int i = 0; i < patch.Length; i++)
|
||||
{
|
||||
patch[i] = 32;
|
||||
}
|
||||
|
||||
var range = new FrostFsRange(8, (ulong)patch.Length);
|
||||
var range = new FrostFsRange(64, (ulong)patch.Length);
|
||||
|
||||
var patchParams = new PrmObjectPatch(
|
||||
new FrostFsAddress(createdContainer, objectId),
|
||||
payload: new MemoryStream(patch),
|
||||
maxChunkLength: 32,
|
||||
maxChunkLength: 256,
|
||||
range: range);
|
||||
|
||||
var newIbjId = await client.PatchObjectAsync(patchParams, default);
|
||||
|
@ -371,7 +375,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void RangeTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -394,26 +398,27 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
var param = new PrmObjectPut(
|
||||
new FrostFsObjectHeader(
|
||||
containerId: createdContainer,
|
||||
type: FrostFsObjectType.Regular),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
type: FrostFsObjectType.Regular));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
var rangeParam = new PrmRangeGet(createdContainer, objectId, new FrostFsRange(100, 64));
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var rangeParam = new PrmRangeGet(createdContainer, objectId, new FrostFsRange(50, 100));
|
||||
|
||||
var rangeReader = await client.GetRangeAsync(rangeParam, default);
|
||||
|
||||
var downloadedBytes = new byte[rangeParam.Range.Length];
|
||||
MemoryStream ms = new(downloadedBytes);
|
||||
|
||||
ReadOnlyMemory<byte>? chunk = null;
|
||||
ReadOnlyMemory<byte>? chunk;
|
||||
while ((chunk = await rangeReader!.ReadChunk()) != null)
|
||||
{
|
||||
ms.Write(chunk.Value.Span);
|
||||
}
|
||||
|
||||
Assert.Equal(SHA256.HashData(bytes.AsSpan().Slice(100, 64)), SHA256.HashData(downloadedBytes));
|
||||
Assert.Equal(SHA256.HashData(bytes.AsSpan().Slice(50, 100)), SHA256.HashData(downloadedBytes));
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -426,7 +431,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[Fact]
|
||||
public async void RangeHashTest()
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -449,11 +454,12 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
var param = new PrmObjectPut(
|
||||
new FrostFsObjectHeader(
|
||||
containerId: createdContainer,
|
||||
type: FrostFsObjectType.Regular),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
type: FrostFsObjectType.Regular));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var rangeParam = new PrmRangeHashGet(createdContainer, objectId, [new FrostFsRange(100, 64)], bytes);
|
||||
|
||||
|
@ -478,7 +484,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[InlineData(6 * 1024 * 1024 + 100)]
|
||||
public async void SimpleScenarioWithSessionTest(int objectSize)
|
||||
{
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(ClientOptions, GrpcChannel);
|
||||
//Callback = new((CallStatistics cs) => Assert.True(cs.ElapsedMicroSeconds > 0))
|
||||
var token = await client.CreateSessionAsync(new PrmSessionCreate(int.MaxValue), default);
|
||||
|
||||
|
@ -502,11 +508,12 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
containerId: container,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false,
|
||||
sessionToken: token);
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var stream = await client.PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var objectId = await stream.CompleteAsync();
|
||||
|
||||
var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -558,11 +565,10 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
[InlineData(200)]
|
||||
public async void ClientCutScenarioTest(int objectSize)
|
||||
{
|
||||
|
||||
var options = GetClientOptions(keyString, url);
|
||||
var options = ClientOptions;
|
||||
options.Value.Interceptors.Add(new CallbackInterceptor());
|
||||
|
||||
using var client = FrostFSClient.GetInstance(GetClientOptions(keyString, url));
|
||||
var client = FrostFSClient.GetInstance(options, GrpcChannel);
|
||||
|
||||
await Cleanup(client);
|
||||
|
||||
|
@ -580,15 +586,14 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
|
||||
byte[] bytes = GetRandomBytes(objectSize);
|
||||
|
||||
var param = new PrmObjectPut(
|
||||
var param = new PrmObjectClientCutPut(
|
||||
new FrostFsObjectHeader(
|
||||
containerId: containerId,
|
||||
type: FrostFsObjectType.Regular,
|
||||
[new FrostFsAttributePair("fileName", "test")]),
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: true);
|
||||
payload: new MemoryStream(bytes));
|
||||
|
||||
var objectId = await client.PutObjectAsync(param, default);
|
||||
var objectId = await client.PutClientCutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
// var filter = new FilterByAttributePair(FrostFsMatchType.Equals, "fileName", "test");
|
||||
|
||||
|
@ -607,14 +612,12 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
|
||||
//Assert.True(hasObject);
|
||||
|
||||
|
||||
var filter1 = new FilterByOwnerId(FrostFsMatchType.Equals, OwnerId!);
|
||||
await foreach (var objId in client.SearchObjectsAsync(new PrmObjectSearch(containerId, null, [], filter1), default))
|
||||
{
|
||||
var objHeader = await client.GetObjectHeadAsync(new PrmObjectHeadGet(containerId, objectId, false), default);
|
||||
|
||||
var objHeader1 = await client.GetObjectHeadAsync(new PrmObjectHeadGet(containerId, objectId, true), default);
|
||||
|
||||
}
|
||||
|
||||
var @object = await client.GetObjectAsync(new PrmObjectGet(containerId, objectId), default);
|
||||
|
@ -657,7 +660,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
bool callbackInvoked = false;
|
||||
bool intercepterInvoked = false;
|
||||
|
||||
var options = GetClientOptions(keyString, url);
|
||||
var options = ClientOptions;
|
||||
options.Value.Callback = (cs) =>
|
||||
{
|
||||
callbackInvoked = true;
|
||||
|
@ -666,7 +669,7 @@ public class SmokeClientTests : SmokeTestsBase
|
|||
|
||||
options.Value.Interceptors.Add(new CallbackInterceptor(s => intercepterInvoked = true));
|
||||
|
||||
using var client = FrostFSClient.GetInstance(options);
|
||||
var client = FrostFSClient.GetInstance(options, GrpcChannel);
|
||||
|
||||
var result = await client.GetNodeInfoAsync(default);
|
||||
|
||||
|
|
|
@ -3,6 +3,10 @@
|
|||
using FrostFS.SDK.Client;
|
||||
using FrostFS.SDK.Cryptography;
|
||||
|
||||
using Grpc.Core;
|
||||
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace FrostFS.SDK.Tests.Smoke;
|
||||
|
||||
public abstract class SmokeTestsBase
|
||||
|
@ -25,4 +29,8 @@ public abstract class SmokeTestsBase
|
|||
OwnerId = FrostFsOwner.FromKey(Key);
|
||||
Version = new FrostFsVersion(2, 13);
|
||||
}
|
||||
|
||||
protected static Func<string, ChannelBase> GrpcChannel => (url) => Grpc.Net.Client.GrpcChannel.ForAddress(new Uri(url));
|
||||
|
||||
protected IOptions<ClientSettings> ClientOptions => Options.Create(new ClientSettings { Key = keyString, Host = url });
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ public abstract class ContainerTestsBase
|
|||
{
|
||||
return Client.FrostFSClient.GetTestInstance(
|
||||
Settings,
|
||||
null,
|
||||
(url) => Grpc.Net.Client.GrpcChannel.ForAddress(new Uri(url)),
|
||||
new NetworkMocker(key).GetMock().Object,
|
||||
new SessionMocker(key).GetMock().Object,
|
||||
Mocker.GetMock().Object,
|
||||
|
|
|
@ -32,7 +32,7 @@ public abstract class NetworkTestsBase
|
|||
{
|
||||
return Client.FrostFSClient.GetTestInstance(
|
||||
Options.Create(settings),
|
||||
null,
|
||||
(url) => Grpc.Net.Client.GrpcChannel.ForAddress(new Uri(url)),
|
||||
Mocker.GetMock().Object,
|
||||
new SessionMocker(key).GetMock().Object,
|
||||
new ContainerMocker(key).GetMock().Object,
|
||||
|
|
|
@ -24,12 +24,12 @@ public class ObjectTest : ObjectTestsBase
|
|||
var bytes = new byte[1024];
|
||||
rnd.NextBytes(bytes);
|
||||
|
||||
var param = new PrmObjectPut(
|
||||
Mocker.ObjectHeader,
|
||||
payload: new MemoryStream(bytes),
|
||||
clientCut: false);
|
||||
var param = new PrmObjectPut(Mocker.ObjectHeader);
|
||||
|
||||
var result = await GetClient().PutObjectAsync(param, default);
|
||||
var stream = await GetClient().PutObjectAsync(param, default).ConfigureAwait(true);
|
||||
|
||||
await stream.WriteAsync(bytes.AsMemory());
|
||||
var result = await stream.CompleteAsync();
|
||||
|
||||
var sentMessages = Mocker.ClientStreamWriter!.Messages;
|
||||
|
||||
|
@ -57,11 +57,10 @@ public class ObjectTest : ObjectTestsBase
|
|||
byte[] bytes = File.ReadAllBytes(@".\..\..\..\cat.jpg");
|
||||
var fileLength = bytes.Length;
|
||||
|
||||
var param = new PrmObjectPut(
|
||||
var param = new PrmObjectClientCutPut(
|
||||
Mocker.ObjectHeader,
|
||||
payload: new MemoryStream(bytes),
|
||||
bufferMaxSize: 1024,
|
||||
clientCut: true);
|
||||
bufferMaxSize: 1024);
|
||||
|
||||
Random rnd = new();
|
||||
|
||||
|
@ -73,7 +72,7 @@ public class ObjectTest : ObjectTestsBase
|
|||
foreach (var objId in objIds)
|
||||
Mocker.ResultObjectIds!.Add(objId);
|
||||
|
||||
var result = await GetClient().PutObjectAsync(param, default);
|
||||
var result = await GetClient().PutClientCutObjectAsync(param, default);
|
||||
|
||||
var singleObjects = Mocker.PutSingleRequests.ToArray();
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ public abstract class ObjectTestsBase
|
|||
{
|
||||
return FrostFSClient.GetTestInstance(
|
||||
Settings,
|
||||
null,
|
||||
(url) => Grpc.Net.Client.GrpcChannel.ForAddress(new Uri(url)),
|
||||
NetworkMocker.GetMock().Object,
|
||||
SessionMocker.GetMock().Object,
|
||||
ContainerMocker.GetMock().Object,
|
||||
|
|
|
@ -39,7 +39,7 @@ public abstract class SessionTestsBase
|
|||
{
|
||||
return Client.FrostFSClient.GetTestInstance(
|
||||
Settings,
|
||||
null,
|
||||
(url) => Grpc.Net.Client.GrpcChannel.ForAddress(new Uri(url)),
|
||||
new NetworkMocker(key).GetMock().Object,
|
||||
Mocker.GetMock().Object,
|
||||
new ContainerMocker(key).GetMock().Object,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue