From f43f067d4bd10f44d10d612712ff84a0450db924 Mon Sep 17 00:00:00 2001 From: RyuJongJin <266630912+RyuJongJin@users.noreply.github.com> Date: Tue, 20 Oct 2026 18:24:35 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8B=9C=ED=97=98=20=ED=9D=94=EB=93=A4?= =?UTF-8?q?=EB=A6=BC:=20remote=5Fidle=5Ftest=20-=20"=EC=A1=B0=EA=B0=81?= =?UTF-8?q?=EC=9D=B4=20=EA=B3=84=EC=86=8D=20=EC=98=A4=EB=A9=B4=20=EC=8B=A4?= =?UTF-8?q?=ED=8C=A8=ED=95=98=EC=A7=80=20=EC=95=8A=EC=9D=8C"=20=EC=9D=80?= =?UTF-8?q?=200.1=EC=B4=88=20=EA=B0=84=EA=B2=A9=20=C2=B7=203=EC=B4=88=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C,=20SFTP=20=EC=9D=98=20=EC=A4=80=EB=B9=84=20(?= =?UTF-8?q?=EC=97=B0=EA=B2=B0=20=C2=B7=20=EB=AA=A9=EB=A1=9D=20=C2=B7=20?= =?UTF-8?q?=EC=97=B4=EA=B8=B0)=20=EB=8A=94=2010=EC=B4=88=20(=EA=B2=80?= =?UTF-8?q?=ED=86=A0=20=EB=8C=80=EA=B8=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 0b 지적 (10/20): next10 전체 시험 (10분 넘음) 의 부하에서 0.4초 간격 대 1초 제한이 한 번 넘어 "서버가 답하지 않습니다 (1초)" 로 실패 (혼자서는 통과) - 여유를 30배로. 15 검증 (wt_verify_d3): 시험 다섯 파일을 함께 돌릴 때 SFTP 멈춤 시험의 준비 단계 (아직 멈추지 않은 list) 가 paramiko 의 답이 늦어 1초에 걸림 - 준비는 10초로 두고 멈추게 하기 바로 전에 1초로. 끊기는 쪽 확인은 그대로 1초. 코드 변경 없음. Co-Authored-By: Claude Opus 5.5 --- test/remote_idle_test.dart | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/test/remote_idle_test.dart b/test/remote_idle_test.dart index 2413193..b82a876 100644 --- a/test/remote_idle_test.dart +++ b/test/remote_idle_test.dart @@ -154,15 +154,15 @@ void main() { expect(t, lessThan(const Duration(seconds: 5))); expect(cut, isTrue); await c.close(); - // 0.4초마다 조각 (정한 1초 안) - 끝까지 + // 0.1초마다 조각 (정한 3초 안 - 전체 시험의 부하에서도 넉넉하게, 0b 지적 10/20: 0.4초 대 1초는 한 번 넘음) - 끝까지 Stream> slow() async* { for (var i = 0; i < 5; i++) { - await Future.delayed(const Duration(milliseconds: 400)); + await Future.delayed(const Duration(milliseconds: 100)); yield [i]; } } - expect(await idleRead(slow()).length, 5); + expect(await idleRead(slow(), limit: const Duration(seconds: 3)).length, 5); }); test('도우미: 올리기 - 보내는 쪽이 더 가져가지 않으면 · 다 가져간 뒤 답이 없으면 실패', () async { @@ -297,8 +297,11 @@ void main() { test('받는 중에 서버가 멈추면 · 명령 (열기) 에 답이 없으면 정한 시간 뒤 실패', () async { final c = client(); addTearDown(c.close); + // 준비 (연결 · 목록 · 열기) 는 넉넉하게 - 함께 도는 시험의 부하에서 paramiko 의 답이 1초를 넘은 적이 있다 (15 검증 10/20) + RemoteIdle.limit = const Duration(seconds: 10); expect((await c.list('/')).map((e) => e.rel), contains('/a.bin')); final s = await c.openReadFrom('a.bin'); // 열기까지는 됨 + RemoteIdle.limit = const Duration(seconds: 1); // 받기 (listen) 때 이 시간으로 proxy!.stall = true; // 이제 서버가 아무것도 보내지 않음 final (t, e) = await _timed(() => s.drain()); expect(e, isA(), reason: '$e'); @@ -306,7 +309,9 @@ void main() { final c2 = client(); addTearDown(c2.close); proxy!.stall = false; + RemoteIdle.limit = const Duration(seconds: 10); await c2.list('/'); + RemoteIdle.limit = const Duration(seconds: 1); proxy!.stall = true; final (t2, e2) = await _timed(() => c2.openReadFrom('a.bin')); expect(e2, isA(), reason: '$e2'); @@ -316,7 +321,9 @@ void main() { test('올리는 중에 서버가 멈추면 정한 시간 뒤 실패', () async { final c = client(); addTearDown(c.close); + RemoteIdle.limit = const Duration(seconds: 10); // 준비는 넉넉하게 (위와 같음) await c.list('/'); + RemoteIdle.limit = const Duration(seconds: 1); proxy!.stall = true; final (t, e) = await _timed(() => c.write('b.bin', _big())); expect(e, isA(), reason: '$e');