Docker のコンテナー化されたワークベンチとエージェントを使用した自動テストの実行

継続的テストのデプロイメントの部分を簡素化するために、ビルドされた Docker イメージを使用して、ワークベンチとエージェントをデプロイし、すぐにテストを開始できます。ワークベンチとエージェントを別のマシンにインストールする必要はありません。Docker イメージをデプロイし、Docker コマンドを使用してテストを再生できます。

始める前に

Docker コンテナーの構成』トピックの手順に従って、Docker コンテナーを構成しておく必要があります。

Docker がテスト資産をインポートできるロケーションに、テスト資産をエクスポートしておく必要があります。テスト資産のエクスポートについては、『依存関係を含むテスト資産のコピー』を参照してください。
注: コンテナー・イメージとデスクトップ製品のバージョン番号は、一致していなければなりません。前のバージョンのコンテナー・イメージがある場合には、それをアンインストールしてから、現在のバージョンをインストールしてください。イメージをアンインストールするには、以下のコマンドを使用します。
  1. 次のコマンドを実行してコンテナーを停止します。
    docker stop "CONTAINER  ID"
    .
  2. 次のコマンドを実行してイメージをアンインストールします。
    docker rmi -f "image ID"
    .

手順

  1. エージェントを使用せずにテストを実行するには、以下のようにコンテナーを開始します。
    $ docker run --rm -e RATIONAL_LICENSE_FILE=PORT@HOST -v hostTestAssets:/containerTestAssets -v hostImportedData:/containerImportedData imageName:imageVersion cmdline -workspace //containerImportedData/workspace -project projectName -schedule testName -suite TestSuitePathAndName-results autoResults -stdout -exportlog /containerPathExtracted/testlog.txt -protocolinput "distributed.tests=/Tests/AFT_INPUT_XML.xml"
    表 1.
    コマンド 説明
    --rm 実行の完了後にコンテナーを削除します。
    -e 環境変数を設定します。
    RATIONAL_LICENSE_FILE=<PORT>@<HOST> Rational License Key Server のポート番号 (通常は 27000) とサーバーの IP アドレスを指定します。製品と VT パックのフローティング・ライセンスは、ライセンス・サーバー上になければなりません。
    hostTestAssets:/containerTestAssets ホスト・マシン上のフォルダーのロケーションと、圧縮されたテスト資産 (zip 形式) が格納されているコンテナーを指定します。両方のロケーションを使用して、1 つ以上の共有ボリュームをマップし、テスト資産、ログ、実行結果などのデータをホストとコンテナー間で転送します。
    hostImportedData:/containerImportedData ホスト・マシン上のワークスペースのロケーションと、圧縮されていないテスト資産が格納されているコンテナーを指定します。テストの実行結果は、ホスト・マシン上の指定したディレクトリーに保存されます。
    TEST_IMPORT_PATH=<PATH> コンテナーにインポートする圧縮されたテスト資産のロケーションを指定します。ロケーションのパスは、ホストではなくコンテナー側のパスです。例えば、/containerTestAssets/archiveName.zip などです。ボリューム名とパス名は、ユーザーが定義します。それらは一貫している必要があります。
    imageName:imageVersion 実行するイメージの名前とそのバージョンを指定します。
    cmdline 既存のコマンド行引数を指定して、ワークスペースのロケーション、プロジェクト名、テスト名またはスケジュール名、結果ファイル名、およびエクスポートされたログのロケーションを定義します。
    -protocolInput この引数は、異なるブラウザーとロケーションで複数の Web UI テストを並行して実行する場合に使用します。テストは、さまざまなエージェント・ロケーションに分散されます。テスト資産、ブラウザー、およびエージェント・ロケーションをリストする XML ファイルのパスを指定します。
    テストの実行が完了したら、ホスト・マシン上の hostImportedData を確認して、エクスポートされたログを表示します。
  2. コンテナー化されたエージェントでテストを実行するには、以下のように、エージェント・イメージを Docker リポジトリーにロードします。
    tar --wildcards --to-command='docker load' -xzf <workbenchImageName> 'images/'*

    例えば、ワークベンチ・イメージ名は、ibm-rtw-<versionNumber>.tar.gz などのようになります。

    イメージがロードされると、「次のイメージがロードされました (Loaded image): imageFileName:versionNumber」というメッセージが表示されます。
  3. 複数のエージェント・ロケーションで多数のブラウザーを使用した、複数のテストの分散実行に使用されるエージェントをリストする XML ファイルを作成します。詳しくは、『コマンド行からの複数のテストの同時の実行』を参照してください。
  4. 以下のいずれかの方法で、エージェントに対するテストの実行を開始します。
    1. コンテナー・エージェントが自動的にワークベンチ・コンテナーと接続してスケジュールを実行することを容易に行えるようにするために、Docker Compose ツールをインストールします。
      1. 手順 5 で説明したパラメーターと同様のパラメーターを指定する docker-compose.yml ファイルを作成します。
      2. テストを実行するには、コマンド・プロンプトで、yml ファイルが格納されているディレクトリーに移動して、以下を実行します。

        docker-compose up

      ステップ 5 のパラメーターに加えて、以下の 2 つのパラメーターも yml ファイルで指定する必要があります。
      • MASTER_NAME: ワークベンチ・コンテナーの名前を指定します。
      • AGENT_NAME: エージェントの名前を指定します。スケジュールで定義されているエージェントの名前は、エージェント・コンテナーの名前と一致する必要があります。
      #SIMPLE DOCKER COMPOSE FILE/TEMPLATE
      #BE SURE TO REPLACE ANY PROJECT-SPECIFIC NAMES/PATHS AND LICENSING VARIABLES WITH YOUR OWN VALUES
      version: '2'
      services:
        agent1:
          image: <agentImageName>:<imageVersion>
          environment:
            - MASTER_NAME=<workbenchImageName>
            - AGENT_NAME=<agentImageName>
          
        agent2:
          image: <agentImageName>:<imageVersion>
          environment:
            - MASTER_NAME=<workbenchImageName>
            - AGENT_NAME=<agentImageName-2>
          
        workbench:
          image: <workbenchImageName>:<imageVersion>
          entrypoint: cmdline -workspace /runData/workspaceJuly10 -project 921proj -schedule Schedules/agentSched -results autoResults -stdout -exportlog /runData/agentSchedLogJuly10.txt
          ports:
               - "7080:7080"
               - "7443:7443"
          volumes:
            - C:\Tests:/Tests
            - C:\runData:/runData
          environment:
            - RATIONAL_LICENSE_FILE=27000@<IP>
            - TEST_IMPORT_PATH=/Tests/agentProj.zip
      注: Docker Compose は、Docker の一部のバージョンに含まれています。このツールは、一部のネットワーク構成を自動化し、複数のコンテナーの調整を容易にします。このツールがあるかどうかを確認するには、docker-compose --version を実行します。
    2. 実行するエージェントの数と同じ回数だけ、以下のコマンドを渡してエージェント・コンテナーを始動します。4 つのエージェントを開始する場合は、このコマンドを 4 回渡します。
      docker run -it -e MASTER_NAME=IP_ADDRESS MASTER_PORT=PortNumber AGENT_NAME=NameofAgent AGENT_IP=AgentIP imageName:imageVersion
      表 2. パラメーターの説明
      コマンド 説明
      -dit エージェント・コンテナーをバックグラウンドで実行することを指定します。
      --rm コンテナーが終了したときに、コンテナーをクリーンアップし、ファイル・システムを削除することを指定します。
      MASTER_NAME ワークベンチの IP またはホスト名を指定します。
      MASTER_PORT ワークベンチのポート番号を指定します。デフォルトのポート番号 7080 を使用する場合、このコマンドはオプションです。
      AGENT _NAME エージェントの名前を指定します。テストを実行しているエージェントが複数ある場合、エージェント名は、エージェントが関連付けられている結果を識別するのに役立ちます。
      AGENT_IP エージェントの IP アドレスを指定します。
      imageName:imageVersion イメージの名前とバージョンを指定します。
  5. スケジュールが正常に完了したかどうかを確認します。結果を共有ボリュームに出力するために -exportlog などのオプションを使用した場合は、hostImportedData にマップされたホスト・マシン上の対応するディレクトリーを確認して、エクスポートされたデータを取得します。

次のタスク

テストまたはスケジュールが正常に完了した場合は、エージェントが実行されている可能性があります。以下を実行して、エージェントを明示的に停止する必要がある場合があります。
docker stop containerID
Docker Compose ツールを使用してテストを実行した場合、以下を実行することにより、ワークベンチ・コンテナーが終了したときにエージェントを停止できます。
docker-compose up --abort-on-container-exit