🚀

Launchable Advent Calendar 17日目 - --same-binオプション

2022/12/17に公開

Launchableの各機能の利用方法を紹介する Launchable Advent Calendar 17日目です。

はじめに

今日は Day 16で紹介した launchable split-subset コマンドの --same-bin オプションについて紹介します。(docs)

テストの中には事情があって並列で実行できないものがあるかと思います。Split Subset (launchable split-subset コマンド)はデフォルトで実行時間が均等になるようテストを割り振るのでそのようなテストがあると利用が難しい場合があります。
紹介する --same-bin オプションはそのようなテストを同じグループにまとめてくれるオプションになります。

--same-binオプション

任意のファイルにまとめたいテストを列挙します。その際のテストのフォーマットはPredictive Test Selection(PTS)で出力されるフォーマットになります。
ここでは same-bin.txt ファイルを作成し example.DivTestexample.MulTest のテストを同じグループにまとめてみます。

same-bin.txt
example.DivTest
example.MulTest

Day 16で行ったようにSplit Subsetを行い launchable split-subset コマンドの --same-bin に先ほど用意した same-bin.txt を指定します。

このように example.DivTestexample.MulTestが同一グループにまとめられるのが確認できます。

$ launchable subset --target 100% --split maven src/test/java > launchable-subset-id.txt
Launchable created subset 398628 for build same-bin (test session 1622424) in workspace konboi/advent-calendar-2022

|           |   Candidates |   Estimated duration (%) |   Estimated duration (min) |
|-----------|--------------|--------------------------|----------------------------|
| Subset    |            4 |                      100 |                  0.0933333 |
| Remainder |            0 |                        0 |                  0         |
|           |              |                          |                            |
| Total     |            4 |                      100 |                  0.0933333 |

Run `launchable inspect subset --subset-id 398628` to view full subset details

$ launchable split-subset --subset-id $(cat launchable-subset-id.txt) --same-bin same-bin.txt --bin 1/2 maven
example.DivTest
example.MulTest

$ launchable split-subset --subset-id $(cat launchable-subset-id.txt) --same-bin same-bin.txt --bin 2/2 maven
example.SubTest
example.AddTest

$ launchable split-subset --subset-id $(cat launchable-subset-id.txt) --same-bin same-bin.txt --bin 1/3 maven
example.DivTest
example.MulTest

$ launchable split-subset --subset-id $(cat launchable-subset-id.txt) --same-bin same-bin.txt --bin 2/3 maven
example.SubTest

$ launchable split-subset --subset-id $(cat launchable-subset-id.txt) --same-bin same-bin.txt --bin 3/3 maven
example.AddTest

--same-bin 複数指定できるので同じグループで返したいテストが複数セットある場合でも対応できます。

さいごに

本日は特定のテストを同一グループにまとめるための --same-bin オプションを紹介しました。
明日は launchable stat コマンドについて紹介します。

Discussion