non vorrei lavorare

2020年度からの小学校プログラミング教育の必修化を親として迎えるブロガーの書く、子供との日常

コマンドラインで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が 追加されました!

関連記事

 

8年前の記事

5年前の記事

2年後の記事

3年後の記事

新The UNIX Super Text 上 改訂増補版

新The UNIX Super Text 上 改訂増補版

 
新The UNIX Super Text 下 改訂増補版

新The UNIX Super Text 下 改訂増補版