Skip to content

Commit bdbd5b1

Browse files
Added test integration on NextResultAsync
1 parent 5b479c1 commit bdbd5b1

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/Ydb.Sdk/tests/Ado/YdbConnectionTests.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,43 @@ public async Task OpenAsync_WhenCancelTokenIsCanceled_ThrowYdbException()
224224
(await Assert.ThrowsAsync<YdbException>(async () => await connection.OpenAsync(cts.Token))).Message);
225225
}
226226

227+
[Fact]
228+
public async Task YdbCommand_WhenCancelTokenIsCanceled_ThrowYdbException()
229+
{
230+
await using var connection = await CreateOpenConnectionAsync();
231+
var command = new YdbCommand(connection) { CommandText = "SELECT 1; SELECT 1; SELECT 1;" };
232+
var ydbDataReader = await command.ExecuteReaderAsync();
233+
using var cts = new CancellationTokenSource();
234+
cts.Cancel();
235+
236+
await ydbDataReader.ReadAsync(cts.Token); // first part in memory
237+
Assert.False(ydbDataReader.IsClosed);
238+
Assert.Equal(1, ydbDataReader.GetValue(0));
239+
240+
Assert.Equal(StatusCode.Cancelled, (await Assert.ThrowsAsync<YdbException>(
241+
async () => await ydbDataReader.NextResultAsync(cts.Token))).Code);
242+
Assert.True(ydbDataReader.IsClosed);
243+
Assert.Equal(StatusCode.Cancelled, (await Assert.ThrowsAsync<YdbException>(
244+
async () => await command.ExecuteReaderAsync(cts.Token))).Code);
245+
Assert.Equal(StatusCode.Cancelled, (await Assert.ThrowsAsync<YdbException>(
246+
async () => await command.ExecuteScalarAsync(cts.Token))).Code);
247+
Assert.Equal(StatusCode.Cancelled, (await Assert.ThrowsAsync<YdbException>(
248+
async () => await command.ExecuteNonQueryAsync(cts.Token))).Code);
249+
250+
// ReSharper disable once MethodSupportsCancellation
251+
ydbDataReader = await command.ExecuteReaderAsync();
252+
// ReSharper disable once MethodSupportsCancellation
253+
await ydbDataReader.NextResultAsync();
254+
await ydbDataReader.ReadAsync(cts.Token);
255+
Assert.False(ydbDataReader.IsClosed);
256+
Assert.Equal(1, ydbDataReader.GetValue(0));
257+
Assert.False(ydbDataReader.IsClosed);
258+
259+
Assert.Equal(StatusCode.Cancelled, (await Assert.ThrowsAsync<YdbException>(
260+
async () => await ydbDataReader.NextResultAsync(cts.Token))).Code);
261+
Assert.True(ydbDataReader.IsClosed);
262+
}
263+
227264
private List<Task> GenerateTasks() => Enumerable.Range(0, 100).Select(async i =>
228265
{
229266
await using var connection = await CreateOpenConnectionAsync();

0 commit comments

Comments
 (0)