Skip to content

Commit 4786134

Browse files
dev: update PoolingSessionTests.cs (#494)
1 parent 3fab09d commit 4786134

File tree

1 file changed

+31
-18
lines changed

1 file changed

+31
-18
lines changed

src/Ydb.Sdk/test/Ydb.Sdk.Ado.Tests/Session/PoolingSessionTests.cs

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ public async Task Open_WhenSuccessOpenThenAttachStreamIsClosed_IsBroken()
150150
tcsSecondMoveAttachStream.TrySetResult(false); // attach stream is closed
151151
await Task.Delay(500);
152152
Assert.True(session.IsBroken);
153+
await CheckIsBrokenAndDeleteSessionOneTime(session);
153154
}
154155

155156
[Fact]
@@ -164,6 +165,7 @@ public async Task Open_WhenSuccessOpenThenAttachStreamSendRpcException_IsBroken(
164165
new YdbException(new RpcException(Grpc.Core.Status.DefaultCancelled))); // attach stream is closed
165166
await Task.Delay(500);
166167
Assert.True(session.IsBroken);
168+
await CheckIsBrokenAndDeleteSessionOneTime(session);
167169
}
168170

169171
[Fact]
@@ -176,7 +178,7 @@ public async Task Open_WhenSuccessOpenThenAttachStreamSendBadSession_IsBroken()
176178
Assert.False(session.IsBroken);
177179
tcsSecondMoveAttachStream.SetResult(true); // attach stream is closed
178180
await Task.Delay(500);
179-
Assert.True(session.IsBroken);
181+
await CheckIsBrokenAndDeleteSessionNeverTimes(session);
180182
}
181183

182184
[Fact]
@@ -186,16 +188,8 @@ public async Task Delete_WhenSuccessOpenSession_IsBroken()
186188
var tcsSecondMoveAttachStream = SetupAttachStream();
187189
var session = _poolingSessionFactory.NewSession(_poolingSessionSource);
188190
await session.Open(CancellationToken.None);
189-
_mockIDriver.Setup(driver => driver.UnaryCall(
190-
QueryService.DeleteSessionMethod,
191-
It.Is<DeleteSessionRequest>(request => request.SessionId.Equals(SessionId)),
192-
It.Is<GrpcRequestSettings>(grpcRequestSettings => grpcRequestSettings.NodeId == NodeId)
193-
)).ReturnsAsync(new DeleteSessionResponse { Status = StatusIds.Types.StatusCode.Success });
194191
Assert.False(session.IsBroken);
195-
await session.DeleteSession();
196-
Assert.True(session.IsBroken);
197-
_mockIDriver.Verify(driver => driver.UnaryCall(QueryService.DeleteSessionMethod,
198-
It.IsAny<DeleteSessionRequest>(), It.IsAny<GrpcRequestSettings>()));
192+
await CheckIsBrokenAndDeleteSessionOneTime(session);
199193
tcsSecondMoveAttachStream.TrySetResult(false);
200194
}
201195

@@ -206,17 +200,10 @@ public async Task Delete_WhenSuccessOpenSessionBadSessionInAttachStream_IsBroken
206200
var tcsSecondMoveAttachStream = SetupAttachStream();
207201
var session = _poolingSessionFactory.NewSession(_poolingSessionSource);
208202
await session.Open(CancellationToken.None);
209-
_mockIDriver.Setup(driver => driver.UnaryCall(
210-
QueryService.DeleteSessionMethod,
211-
It.Is<DeleteSessionRequest>(request => request.SessionId.Equals(SessionId)),
212-
It.Is<GrpcRequestSettings>(grpcRequestSettings => grpcRequestSettings.NodeId == NodeId)
213-
)).ReturnsAsync(new DeleteSessionResponse { Status = StatusIds.Types.StatusCode.Success });
214203
Assert.False(session.IsBroken);
215204
session.OnNotSuccessStatusCode(StatusCode.BadSession);
216-
await session.DeleteSession();
217205
Assert.True(session.IsBroken);
218-
_mockIDriver.Verify(driver => driver.UnaryCall(QueryService.DeleteSessionMethod,
219-
It.IsAny<DeleteSessionRequest>(), It.IsAny<GrpcRequestSettings>()), Times.Never);
206+
await CheckIsBrokenAndDeleteSessionNeverTimes(session);
220207
tcsSecondMoveAttachStream.TrySetResult(false);
221208
}
222209

@@ -262,6 +249,32 @@ public async Task RollbackTransaction_WhenSuccessOpenSession_AssertNodeId_Sessio
262249
tcsSecondMoveAttachStream.TrySetResult(false);
263250
}
264251

252+
private async Task CheckIsBrokenAndDeleteSessionNeverTimes(PoolingSession session)
253+
{
254+
_mockIDriver.Setup(driver => driver.UnaryCall(
255+
QueryService.DeleteSessionMethod,
256+
It.IsAny<DeleteSessionRequest>(),
257+
It.IsAny<GrpcRequestSettings>()
258+
)).ReturnsAsync(new DeleteSessionResponse { Status = StatusIds.Types.StatusCode.Success });
259+
await session.DeleteSession();
260+
_mockIDriver.Verify(driver => driver.UnaryCall(QueryService.DeleteSessionMethod,
261+
It.IsAny<DeleteSessionRequest>(), It.IsAny<GrpcRequestSettings>()), Times.Never());
262+
Assert.True(session.IsBroken);
263+
}
264+
265+
private async Task CheckIsBrokenAndDeleteSessionOneTime(PoolingSession session)
266+
{
267+
_mockIDriver.Setup(driver => driver.UnaryCall(
268+
QueryService.DeleteSessionMethod,
269+
It.Is<DeleteSessionRequest>(request => request.SessionId.Equals(SessionId)),
270+
It.Is<GrpcRequestSettings>(grpcRequestSettings => grpcRequestSettings.NodeId == NodeId)
271+
)).ReturnsAsync(new DeleteSessionResponse { Status = StatusIds.Types.StatusCode.Success });
272+
await session.DeleteSession();
273+
_mockIDriver.Verify(driver => driver.UnaryCall(QueryService.DeleteSessionMethod,
274+
It.IsAny<DeleteSessionRequest>(), It.IsAny<GrpcRequestSettings>()));
275+
Assert.True(session.IsBroken);
276+
}
277+
265278
private TaskCompletionSource<bool> SetupAttachStream()
266279
{
267280
var tcsSecondMoveAttachStream = new TaskCompletionSource<bool>();

0 commit comments

Comments
 (0)