icpc-jag / rime

Rime: Automation Tool for Programming Contest Organizers
MIT License
45 stars 28 forks source link

Stress Test #12

Open not522 opened 7 years ago

not522 commented 7 years ago

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

hiroshi-cl commented 7 years ago

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

not522 commented 7 years ago

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

hiroshi-cl commented 7 years ago

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

hiroshi-cl commented 7 years ago

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

not522 commented 7 years ago

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

hiroshi-cl commented 7 years ago

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