Chromium Chronicle #14: ウォーターフォールへのテストの追加

エピソード 14: MTV で Zhaoyang Li、東京で Eric Aleshire(2020 年 10 月)
前のエピソード

Chrome の新機能の回帰を検出したい場合は、ウォーターフォール(Chrome の継続的なビルドとテスト インフラストラクチャ)にテストを追加します。

Chrome のウォーターフォールには、さまざまなプラットフォームでテストを実行する多くのビルダーがあります。この記事では、既存のビルダーにテストスイートを追加する方法について説明します。先に進む前に、次の点を考慮してください。

新しいテストは、新しいスイートで公開する必要がありますか?それとも、既存のテストに追加するだけですか?

  • テストは、ソースの場所とテーマの近接性に基づいてテストスイートにまとめられています。新しいテストが既存のスイートに論理的に合わない場合は、新しいスイートが必要になる可能性があります。

公開ビルダーと内部ビルダーのどちらでテストを実行すればよいですか?

  • コードが内部リポジトリにある場合、またはテストに機密データが含まれる場合は、内部ビルダーを使用します。

FYI CI、メイン CI、commit キュー(CQ)のどちらでテストを実行すればよいですか?

  • 参考として、CI にはセルフ モニタリングが必要であり、テストの改良やテストに使用されます。
  • 保安官によって主要な CI テストが定期的にモニタリングされている
  • 障害発生時に CQ が CL の送信をブロックするが、より多くのインフラ リソースを必要とする。新しいスイートは必ず CI から開始してから CQ に昇格する
  • 不明な場合は、プラットフォームの EngProd チームがサポートします。

すでに CI で実行しているテストスイートを CQ に追加するにはどうすればよいですか?/ 新しいビルダーが必要な場合はどうすればよいですか?

既存のビルダーにテストスイートを追加する方法

既存のビルダーにテストスイートを追加するには、//src/testing/buildbot/ でいくつかのファイルを設定する必要があります。

  1. gn_isolate_map.pyl で、テスト ターゲット ラベルとタイプ情報を使用して、新しいテストスイートのキーを作成します。
  2. test_suites.pylテストグループにキーを追加します。 (ビルダー名からビルダーのテストグループへのマッピングは waterfalls.pyl にあります)。

    'all_simulator_tests': {
      'previously_existing_test_suite': {},
      'exciting_new_feature_test_suite': {},
    },
    
  3. さらに微調整。

    • mixins.pyl には、さまざまなグループレベルでテストのグループに適用できる引数が含まれています。
    • variants.pyl を使用すると、異なる引数を使用して複数のインスタンスでスイートを実行できます。
  4. generate_buildbot_json.py を実行して構成ファイルを再生成します。

その後は、構成の変更をチェックインするだけで済みます。このスイートを実行しているビルダーが自動的に新しいテストを取得し、ウォーターフォールのビルダーの結果がウェブ インターフェースに流れ始めます。これで、失敗した場合のデバッグ情報が豊富になります。