コマンドラインで1秒より短い時間を指定してスリープさせるには
こんばんは、先週末から週明けにかけ、次男が熱を出していました。@kjunichiです。
コマンドラインで1秒より短い時間を指定してスリープさせたい
なんでそんな必要があるのか
mochaでlibtrusterdのテストに必要だった。
はぁ?
- mochaはデフォルトでは2秒ルールがある。
- libtrustedのテストではtrusterdが起動してから、nghttpする必要がある。
これだけなら、1秒スリープ入れれば間にあう。
今回は、trusterdの設定ファイルを更新したら自動リロードする機能をテストしなければならない
- まず、起動させる
- trusterdの起動を待つ(1秒)
- アクセスできることを確認する。
- trusterdの設定ファイルを変更し、ポート番号を変更する
- 自動リロードが完了するまで待つ(1秒)
- 変更後のポート番号でアクセス可能かを確認する
という流れになり、sleepだとこの間の待ちで2秒かかってしまう。
Perlに救われる
sedが使えないから、このtrusterdの設定ファイルの変更もperlでやる情弱なので、 途方に暮れていたら、Perlに救われた!
マイクロ秒単位での指定が可能
Time::HiResモジュールを使えば、マイクロ秒単位でsleepができることが分かった。
perl -MTime::HiRes -e 'Time::HiRes::usleep(200000)'
実践投入例
perl -MTime::HiRes -e 'Time::HiRes::sleep(0.3)'
世の中そんなに甘くなかった
travis ciでいざ試したら、NG。 スリープの時間は問題ないものの、トータルの実行時間が2秒を超えてしまった。
おとなしく、
mocha --reporter spec --timeout 5000
まとめ
ということで、libtrusterdにboot_from_file_pathなる新APIが 追加されました!
関連記事