2023/03/08 このエントリーをはてなブックマークに追加 はてなブックマーク - gaugeはどう動いているか

gaugeはどう動いているか

カテゴリ:


gauge(https://github.com/getgauge/gauge)のコード眺めてて得たことを残しときます



  • gaugeでのテストの時、gauge本体と言語ごとのプラグインが動く
    • 例えばgaugeコマンド(本体)とgauge-java(プラグイン)みたいな
  • gauge-javaはgrpcサーバーで、実際のgaugeのテスト処理の実行者。
  • gauge-javaはgrpcサーバーを起動してgrpcを待ち受けてるだけ
  • 多くの場合gradleやmavenを使ってるわけだが。多分処理の流れとしては、gauge-javaをmainメソッドを実行→ gaugeコマンドを実行するというのをmavenやgradleプラグインで実行をしている(gaugeプラグイン != mavenプラグイン != gradleプラグイン)
  • gaugeコマンドはgrpcクライアント(正直、双方向だし、どっちがgrpcサーバーとかクライアントとかよく分からん)
  • runコマンドを実行すると、specとcptといったファイル情報の収集する
  • 並列数のコマンドオプションによってsingle executionかparallel executionのいずれかが動く
  • gaugeコマンドはライフサイクルどおりに動き、ライフサイクルのイベントごとにgrpcリクエストをプラグインに送る
  • プラグイン側はイベントごとにgrpcリクエストをハンドルしてプロセッサーが処理を行い、grpcリクエストを送り返す
  • grpcでいうところのUnary RPCというものぽい(1回送って1回返す)
  • grpcでどういう会話してるかはproto見れば分かる(こことか https://github.com/getgauge/gauge-proto)

  • コマンド側がBeforeSuiteイベントの処理→grpcリクエストしてgauge-javaプラグインに通知→gauge-javaプラグイン側でBeforeSuiteの処理→grpcリクエスト
  • gaugeコマンド側でBeforeSceinarioの処理→grpcリクエスト→gauge-java プラグイン側でBeforeScenarioの処理→grpcリクエスト
    というのがずっと続く(BeforeSuite→BeforeScenario→BeforeSpecみたいなライフサイクル毎に)

  • 単純にgauge-java自身が起動しないだけなら数十秒でタイムアウトするはず。そうではない原因の時が多そう
  • grpcの会話が出来てないとかよくありそう
  • gaugeの起動するgrpcサーバーのポートは指定しない限りランダムらしいので、起動はできたけどリクエストは届いてない時があるとか
  • grpcのバージョンによっては不安定とか
    単純にネットワークI/Oの問題とか

0 件のコメント:

コメントを投稿

GA