リグレッションテストを流した後、バグを修正したあとリグレッションテストで失敗したもののみを再テストしたい。
現在の自作CPUのリグレッションテストの環境は、jsonファイルでテストファイルリストを受け取って並列に流していく構造になっている。 この時、リグレッションテストの結果をjsonファイルとして保存し、テストファイルリストとして再利用できるような構造にした。
入力時のテストファイルリストは以下のようなjsonフォーマットとなる。
[ { "name": "config_00000", "group": [ "aapg_priv_m_202309201729" ], "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00000.riscv", "xlen": 64 }, { "name": "config_00001", "group": [ "aapg_priv_m_202309201729" ], "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00001.riscv", "xlen": 64 }, { "name": "config_00002", "group": [ "aapg_priv_m_202309201729" ], "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00002.riscv", "xlen": 64 }, { "name": "config_00003", "group": [ "aapg_priv_m_202309201729" ], "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00003.riscv", "xlen": 64 }, { "name": "config_00004", "group": [ "aapg_priv_m_202309201729" ], "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00004.riscv", "xlen": 64 } ]
これに対して、結果のjsonファイルは、"group"に結果をpass/failなどでラベリングしていく。デバッグ後に、failのタグだけをリグレッションすればよい。
{ "name": "config_00111", "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00111.riscv", "group": [ "aapg_priv_m_202309201729", "pass" ] }, { "name": "config_00102", "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00102.riscv", "group": [ "aapg_priv_m_202309201729", "error" ] }, { "name": "config_00116", "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00116.riscv", "group": [ "aapg_priv_m_202309201729", "pass" ] }, { "name": "config_00112", "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00112.riscv", "group": [ "aapg_priv_m_202309201729", "unknown" ] },