Open not522 opened 7 years ago
シードというのはgeneratorのでしょうか?
アーキテクチャ的に1サイクルは rime clean && RIME_SEED=hoge rime test
となりそうです
固定ケースを省くのもあまりスマートな拡張にならなそうです
コマンドを追加しても作問者の作業量がそんなに変わるような気はしないですね
ランダムケースのケース数を大きくして、ジャッジ解は正しいか・コーナーケースを見落としていないかをチェックするのはよく行われていると思います。 (少なくとも自分は問題を作るたびに毎回してます。) そのたびにgeneratorの中を見てケース数を変えて、というのはかなり面倒なのでコマンドで処理したいという話です。 固定ケースは毎回やると実行時間の無駄になるというだけで、とりあえずは毎回実行しても良いと思います。
rime stress_test 100
は何をすることになるかというと for i in `seq 1 N`; do rime clean && RIME_SEED=$i rime test; done
+ 結果のサマライズです100回分結果がコンソールに出たら邪魔そうというくらいでしょうか。
あれば便利そうだけど設定方法にかなり癖が出そうですね
testlibのことを考えると-DRIME_SEEDは悪手っぽいですね。(たぶんregisterGenがこける) となると環境変数にせざるを得ないんですが、rime testをした時に前のrime stress_testの時の値が残ってると壊れるので、rime本体側でも環境変数をリセットするような変更も必要で、pluginを足すだけじゃなくなって面倒ですね…。 とはいえrime testを100回叩くのは100回コンパイルすることになってそれもそれで嫌なので、rime側で対応したいところではあります。
なるほど、気持ちはわかったのですが、rimeはテストケース生成周りの差分更新のことあまり考えてないので、そのへんの再設計真面目にやらないと多分ハマります
ストレステストをコマンドで自動的に出来るようにしたい。 rime stress_test 100 を叩くとrime testが100回実行される挙動を想定してます。 シードはRIME_SEEDがdefineされているとか環境変数に入れるとか。 固定ケースは除くようになっていると良さそう。