Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stress Test #12

Open
not522 opened this issue Jun 10, 2017 · 6 comments
Open

Stress Test #12

not522 opened this issue Jun 10, 2017 · 6 comments

Comments

@not522
Copy link
Member

not522 commented Jun 10, 2017

ストレステストをコマンドで自動的に出来るようにしたい。
rime stress_test 100 を叩くとrime testが100回実行される挙動を想定してます。
シードはRIME_SEEDがdefineされているとか環境変数に入れるとか。
固定ケースは除くようになっていると良さそう。

@hiroshi-cl
Copy link
Member

シードというのはgeneratorのでしょうか?
アーキテクチャ的に1サイクルは rime clean && RIME_SEED=hoge rime test となりそうです
固定ケースを省くのもあまりスマートな拡張にならなそうです
コマンドを追加しても作問者の作業量がそんなに変わるような気はしないですね

@not522
Copy link
Member Author

not522 commented Jun 10, 2017

ランダムケースのケース数を大きくして、ジャッジ解は正しいか・コーナーケースを見落としていないかをチェックするのはよく行われていると思います。
(少なくとも自分は問題を作るたびに毎回してます。)
そのたびにgeneratorの中を見てケース数を変えて、というのはかなり面倒なのでコマンドで処理したいという話です。
固定ケースは毎回やると実行時間の無駄になるというだけで、とりあえずは毎回実行しても良いと思います。

@hiroshi-cl
Copy link
Member

  • 作問者はgeneratorに環境変数を取るようにするという改変はコマンドにしても必要です
  • このとき rime stress_test 100 は何をすることになるかというと for i in `seq 1 N`; do rime clean && RIME_SEED=$i rime test; done + 結果のサマライズです

100回分結果がコンソールに出たら邪魔そうというくらいでしょうか。

@hiroshi-cl
Copy link
Member

あれば便利そうだけど設定方法にかなり癖が出そうですね

@not522
Copy link
Member Author

not522 commented Jun 10, 2017

testlibのことを考えると-DRIME_SEEDは悪手っぽいですね。(たぶんregisterGenがこける)
となると環境変数にせざるを得ないんですが、rime testをした時に前のrime stress_testの時の値が残ってると壊れるので、rime本体側でも環境変数をリセットするような変更も必要で、pluginを足すだけじゃなくなって面倒ですね…。
とはいえrime testを100回叩くのは100回コンパイルすることになってそれもそれで嫌なので、rime側で対応したいところではあります。

@hiroshi-cl
Copy link
Member

なるほど、気持ちはわかったのですが、rimeはテストケース生成周りの差分更新のことあまり考えてないので、そのへんの再設計真面目にやらないと多分ハマります

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

No branches or pull requests

2 participants