Skip to content

fix(test): 偽 ffmpeg のエンコードの時刻を EPOCHREALTIME から作る - #2796

Merged
5ym merged 1 commit into
mainfrom
fix/fake-ffmpeg-together-flaky
Nov 14, 2026
Merged

5ym merged 1 commit into
mainfrom
fix/fake-ffmpeg-together-flaky

Conversation

@5ym

@5ym 5ym commented Nov 14, 2026 •

Copy link
Copy Markdown
Collaborator

src/lib/server/fake-ffmpeg.test.ts の「2 本の間は重なる」が CI でたまに落ちていた (job 132382838467)。待つ処理は動いていて、残した時刻のほうがずれていた。

  • CI の Ubuntu 26.04 の date は uutils coreutils 0.10.0。date +%s%3N は秒の端数の先頭の 0 を落としてから 3 桁を出す (ubuntu:26.04 で 60 回試して 6 回、最大 0.89 秒ずれた)。落ちた回の 2 本目の始まり …240.995 は、ログの時刻から見ると実際は …240.09x で、この形のずれに合う
  • 偽 ffmpeg は bash の EPOCHREALTIME から時刻を作る。同じ条件で 60 回試してずれは 0 回
  • テストは、残った時刻がテストから見た起動から終了までの間に入ることも確かめる。落ちたら残った時刻とテスト側の時刻をそのまま出す

e2e の 03-recording-chapters が比べる時刻も同じファイルから来るので、同じずれが無くなる。

🤖 Generated with Claude Code

https://claude.ai/code/session_01T8TqVbtN2Hp8wNmqBX8pzT

Ubuntu 26.04 の date (uutils coreutils 0.10.0) は `%3N` で秒の端数の先頭の 0 を落としてから 3 桁を出す。
毎秒の最初の 0.1 秒に残した時刻が最大 0.9 秒ずれ、CI で 2 本のエンコードが重ならないように見えた。
テストは残った時刻が起動から終了までの間に入ることも確かめ、落ちたら時刻をそのまま出す。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T8TqVbtN2Hp8wNmqBX8pzT
@claude

claude Bot commented Nov 14, 2026 •

Copy link
Copy Markdown

Claude finished @5ym's task in 16s —— View job


レビュー結果

問題無しです。

  • 不具合: now_ms は EPOCHREALTIME から数字だけを残し、末尾 3 桁 (マイクロ秒の下 3 桁) を落としてミリ秒にしています。小数点がロケールで , になっても [!0-9] で除かれるので動きます。date +%s%3N は他に残っていません。
  • 要確認 (軽微): EPOCHREALTIME は bash 5.0 以上、${t:0:-3} は bash 4.2 以上が必要です。シバンは #!/usr/bin/env bash なので、bash 3.2 の macOS で E2E を回す場合は動きません。CI (Ubuntu) では問題ありません。ローカルで macOS を使う人がいるなら、docs に前提を一言足すと親切です。
  • テスト: 残った時刻が before〜after に入ることを確かめ、落ちたときに時刻をそのまま出す作りで、原因の切り分けに役立ちます。before/after は同じプロセスの Date.now() なので、時計のずれは混ざりません。
  • 文章: コメントとコミットメッセージは docs/writing.md の決まりに沿っています。

@5ym
5ym merged commit 0452d34 into main Nov 14, 2026
31 checks passed
@5ym
5ym deleted the fix/fake-ffmpeg-together-flaky branch November 14, 2026 08:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant