OpenStack Integration Test Suite ガイド
OpenStack Integration Test Suite の概要
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。
ドキュメントへのダイレクトフィードバック (DDF) 機能の使用 (英語版のみ)
特定の文章、段落、またはコードブロックに対して直接コメントを送付するには、DDF の Add Feedback 機能を使用してください。なお、この機能は英語版のドキュメントでのみご利用いただけます。
- Multi-page HTML 形式でドキュメントを表示します。
- ドキュメントの右上隅に Feedback ボタンが表示されていることを確認してください。
- コメントするテキスト部分をハイライト表示します。
- Add Feedback をクリックします。
- Add Feedback フィールドにコメントを入力します。
- オプション: ドキュメントチームが問題の詳細を確認する際に使用できるメールアドレスを記入してください。
- Submit をクリックします。
第1章 OpenStack Integration Test Suite (tempest) の検証 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) は多くの異なるプロジェクトで設定されるため、RHOSP クラスター内のプロジェクトの相互運用性をテストすることが重要です。OpenStack Integration Test Suite は、RHOSP デプロイメントの統合テストを自動化します。テストを実行して、クラスターが想定どおりに機能することを確認できます。テスト出力で、特にアップグレード後の潜在的な問題を早期に警告します。
Integration Test Suite には、OpenStack API 検証とシナリオテストのテスト、および自己検証のユニットテストが含まれています。Integration Test Suite は、OpenStack パブリック API を使用し、テストランナーとして tempest を使用してブラックボックステストを実行します。
OpenStack Integration Test Suite (tempest) は、Red Hat OpenStack Platform (RHOSP) コアプロジェクトへのコミットのゲートとして動作し、クラウドデプロイメントの負荷を生成するためにストレステストを行い、CLI テストを実行してコマンドラインの応答形式を確認できます。RHOSP クラウドデプロイメントに対して、scenario tests および API tests を実行できます。
シナリオテスト
シナリオテストは、サービス間の統合ポイントをテストする一般的なエンドユーザーアクションワークフローをシミュレートします。テストフレームワークは、設定を実施し、サービス間の統合をテストしてから、自動的に削除されます。テストに関連するサービスでテストにタグを付け、テストが使用するクライアントライブラリーを明確にします。
次のシナリオは、ユースケースに基づいています。
- Image サービスへのイメージのアップロード
- イメージからのインスタンスのデプロイ
- インスタンスへのボリュームの接続
- インスタンスのスナップショットの作成
- インスタンスからのボリュームの切断
API テスト
API テストは、OpenStack API を検証します。テストは、OpenStack API の OpenStack Integration Test Suite 実装を使用します。有効な JSON と無効な JSON の両方を使用すると、エラーの応答が有効であることを確認できます。テストを個別に実行し、以前のテスト状態に依存する必要はありません。
第2章 Integration Test Suite (tempest) のインストール リンクのコピーリンクがクリップボードにコピーされました!
Integration Test Suite は、director または手動インストールのいずれかでインストールできます。
- director を使用して Integration Test Suite をインストールする場合は、director を使用した Integration Test Suite のインストール を参照してください。
- Integration Test Suite を手動でインストールする場合は、Integration Test Suite の手動インストール を参照してください。
2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- アンダークラウドのインストール。詳細は Director のインストールおよび使用 を参照してください。
- オーバークラウドのデプロイメント。詳細は、オーバークラウドの計画 を参照してください。
2.2. director を使用した Integration Test Suite のインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) director を使用して、テストスイートを自動的にインストールします。
前提条件
-
python3-tripleoclientパッケージがインストールされている。詳しい情報は、Director インストールと使用方法の director パッケージのインストール を参照してください。
手順
-
アンダークラウドホストに
stackユーザーとしてログインします。 -
stackユーザーのホームディレクトリーにあるundercloud.confファイルを編集します。 enable_tempestパラメーターをtrueに設定します。enable_tempest = true
enable_tempest = trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack undercloud installコマンドを実行し、アンダークラウドに追加設定を追加します。openstack undercloud install
$ openstack undercloud installCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. Integration Test Suite の手動インストール リンクのコピーリンクがクリップボードにコピーされました!
director を使用して Integration Test Suite (tempest) を自動的にインストールしない場合は、後で手動でインストールを行うことができます。基本的なネットワーク設定を定義し、Integration Test Suite パッケージをインストールし、OpenStack サービスおよびその他のテスト動作スイッチの詳細が含まれる設定ファイルを作成していることを確認する必要があります。
手順
以下のネットワークが Red Hat OpenStack Platform (RHOSP) 環境内で利用可能であることを確認します。
- Floating IP を提供できる外部ネットワーク
プライベートネットワーク
ルーターを使用してこれらのネットワークに接続します。
プライベートネットワークを作成するには、ネットワークデプロイメントに応じて以下のオプションを指定します。
openstack network create <network_name> --share openstack subnet create <subnet_name> --subnet-range <address/prefix> \ --network <network_name> openstack router create <router_name> openstack router add subnet <router_name> <subnet_name>
$ openstack network create <network_name> --share $ openstack subnet create <subnet_name> --subnet-range <address/prefix> \ --network <network_name> $ openstack router create <router_name> $ openstack router add subnet <router_name> <subnet_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリックネットワークを作成するには、ネットワークデプロイメントに従って以下のオプションを指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Integration Test Suite に関連するパッケージをインストールします。
sudo dnf -y install openstack-tempest
$ sudo dnf -y install openstack-tempestCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドでは、tempest プラグインはインストールされません。RHOSP のインストールに応じて、プラグインを手動でインストールする必要があります。
環境内の各コンポーネントに適切な tempest プラグインをインストールします。たとえば、keystone、neutron、cinder、および telemetry プラグインをインストールするには、以下のコマンドを入力します。
sudo dnf install python3-keystone-tests-tempest python3-neutron-tests-tempest python3-cinder-tests-tempest python3-telemetry-tests-tempest
$ sudo dnf install python3-keystone-tests-tempest python3-neutron-tests-tempest python3-cinder-tests-tempest python3-telemetry-tests-tempestCopy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージの全リストは、Integration Test Suite のパッケージ を参照してください。
openstack-tempest-all パッケージをインストールすることもできます。このパッケージには、tempest プラグインがすべて含まれます。
2.3.1. Integration Test Suite のパッケージ リンクのコピーリンクがクリップボードにコピーされました!
dnf search を使用して、tempest テストパッケージのリストを取得します。
sudo dnf search $(openstack service list -c Name -f value) 2>/dev/null | grep test | awk '{print $1}'
$ sudo dnf search $(openstack service list -c Name -f value) 2>/dev/null | grep test | awk '{print $1}'
| コンポーネント | パッケージ名 |
|---|---|
| barbican | python3-barbican-tests-tempest |
| cinder | python3-cinder-tests-tempest |
| designate | python3-designate-tests-tempest |
| ec2-api | python3-ec2api-tests-tempest |
| heat | python3-heat-tests-tempest |
| ironic | python3-ironic-tests-tempest |
| keystone | python3-keystone-tests-tempest |
| kuryr | python3-kuryr-tests-tempest |
| manila | python3-manila-tests-tempest |
| mistral | python3-mistral-tests-tempest |
| networking-bgvpn | python3-networking-bgpvpn-tests-tempest |
| networking-l2gw | python3-networking-l2gw-tests-tempest |
| neutron | python3-neutron-tests-tempest |
| nova-join | python3-novajoin-tests-tempest |
| octavia | python3-octavia-tests-tempest |
| patrole | python3-patrole-tests-tempest |
| telemetry | python3-telemetry-tests-tempest |
| tripleo-common | python3-tripleo-common-tests-tempest |
| zaqar | python3-zaqar-tests-tempest |
python3-telemetry-tests-tempest パッケージには、aodh、panko、gnocchi、および ceilometer テスト用のプラグインが含まれます。python3-ironic-tests-tempest パッケージには、ironic および ironic-inspector のプラグインが含まれます。
第3章 Integration Test Suite (tempest) の設定 リンクのコピーリンクがクリップボードにコピーされました!
Integration Test Suite で環境の検証を開始する前に、ワークスペースを作成して /etc/tempest.conf 設定ファイルを生成する必要があります。
3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Integration Test Suite のパッケージが含まれる OpenStack 環境。詳しい情報は、director を使用した Integration Test Suite のインストール を参照してください。
3.2. ワークスペースの作成 リンクのコピーリンクがクリップボードにコピーされました!
Integration Test Suite (tempest) 設定および出力用にワークスペースを作成します。
手順
ターゲットデプロイメントの認証情報を読み込みます。
ターゲットがアンダークラウドにある場合は、source コマンドでアンダークラウドの認証情報を読み込みます。
source stackrc
# source stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow ターゲットがオーバークラウドにある場合、source コマンドでオーバークラウドの認証情報を読み込みます。
source overcloudrc
# source overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
tempestを初期化します。tempest init mytempest cd mytempest
# tempest init mytempest # cd mytempestCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
mytempestという名前の tempest ワークスペースを作成します。オプション: 以下のコマンドを入力して、既存のワークスペースのリストを表示します。
tempest workspace list
# tempest workspace listCopy to Clipboard Copied! Toggle word wrap Toggle overflow etc/tempest.confファイルを生成します。discover-tempest-config --deployer-input ~/tempest-deployer-input.conf \ --debug --create --network-id <UUID>
# discover-tempest-config --deployer-input ~/tempest-deployer-input.conf \ --debug --create --network-id <UUID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow UUIDを外部ネットワークの UUID に置き換えます。discover-tempest-configは、以前はconfig_tempest.pyと呼ばれ、同じパラメーターを使用します。python-tempestconfはopenstack-tempestの依存関係として、discover-tempest-configを提供しています。注記アンダークラウドの
etc/tempest.confファイルを生成するには、tempest-deployer-input.confファイルのリージョン名がアンダークラウドデプロイメントの名前と同じであることを確認します。これらの名前が一致しない場合は、tempest-deployer-input.confファイルのリージョン名を更新して、アンダークラウドのリージョン名と一致するように更新します。アンダークラウドのリージョン名を検証するには、以下のコマンドを入力します。
source stackrc openstack region list
$ source stackrc $ openstack region listCopy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドのリージョン名を検証するには、以下のコマンドを入力します。
source overcloudrc openstack region list
$ source overcloudrc $ openstack region listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
お使いの環境に応じて、デフォルトの tempest.conf ファイルを変更する必要がある場合があります。詳しくは、拡張リストの設定 および heat_plugin の設定 を参照してください。
検証
現在の tempest 設定を検証します。
tempest verify-config -o <output>
# tempest verify-config -o <output>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
output の値は、Integration Test Suite が更新された設定を書き込む出力ファイルです。これは、元の設定ファイルとは異なります。
3.3. Integration Test Suite の手動設定 リンクのコピーリンクがクリップボードにコピーされました!
discover-tempest-config コマンドは、tempest.conf ファイルを自動的に生成します。ただし、tempest.conf ファイルが環境の設定に対応していることを確認する必要があります。
3.3.1. Integration Test Suite 拡張リストの手動設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの tempest.conf ファイルには、各コンポーネントの拡張リストが含まれます。tempest.conf ファイルの各コンポーネントの api_extensions 属性を検査し、拡張機能のリストがデプロイメントに対応することを確認します。
デプロイメントで利用可能な拡張機能が tempest.conf ファイルの api_extensions 属性の拡張機能のリストと一致しない場合、コンポーネントは tempest テストに失敗します。この失敗を回避するには、デプロイメントで利用可能な拡張機能を特定し、api_extensions パラメーターに含める必要があります。デプロイメント内の Network、Compute、Volume、または Identity 拡張機能のリストを取得するには、以下のコマンドを実行します。
手順
デプロイメント内の Network、Compute、Volume、または Identity 拡張機能のリストを取得するには、以下のコマンドを入力します。
openstack extension list [--network] [--compute] [--volume] [--identity]
$ openstack extension list [--network] [--compute] [--volume] [--identity]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. heat_plugin の手動設定 リンクのコピーリンクがクリップボードにコピーされました!
tempest.conf ファイルで、heat_plugin を手動で設定できます。
手順
以下の例を使用して、デプロイメントに応じて
heat_pluginを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
openstack network list コマンドを使用して、fixed_network_name、network_for_ssh、および floating_network_name のネットワークを特定します。
tempest.conf ファイルの [service_available] セクションで heat を True に設定する必要があります。また、[heat_plugin] セクションの username 属性にあるユーザーは、member である必要があります。たとえば、以下のコマンドを入力して member ロールを demo ユーザーに追加します。
openstack role add --user demo --project demo member
$ openstack role add --user demo --project demo member
3.4. Integration Test Suite ロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
tempest ワークスペース内の logs ディレクトリーのログファイルのデフォルトの場所を変更することができます。
手順
tempest.confの[DEFAULT]セクションで、log_dirを目的のディレクトリーに設定します。[DEFAULT] log_dir = <directory>
[DEFAULT] log_dir = <directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow tempest.confに独自のロギング設定ファイルを使用している場合は、使用しているファイルの[DEFAULT]セクションの下にlog_config_appendを設定します。[DEFAULT] log_config_append = <file>
[DEFAULT] log_config_append = <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
log_config_append 属性を設定すると、Integration Test Suite は log_dir 属性を含む tempest.conf の他のすべてのロギング設定を無視します。
3.5. Integration Test Suite マイクロバージョンテストの設定 リンクのコピーリンクがクリップボードにコピーされました!
Integration Test Suite (tempest) は、API マイクロバージョンをテストする安定したインターフェイスを提供します。これらのインターフェイスを使用してマイクロバージョンテストを実装するには、次の手順を実行します。
手順
-
tempest.conf設定ファイルでオプションを設定し、ターゲットマイクロバージョンを指定します。これらのオプションを設定して、サポートされているマイクロバージョンが OpenStack クラウド内のマイクロバージョンに対応するようにします。 単一の Integration Test Suite 操作で複数のマイクロバージョンテストを実行するターゲットマイクロバージョンの範囲を指定できます。
たとえば、設定ファイルの
[compute]セクションで、computeサービスのマイクロバージョンの範囲を制限するには、min_microversionおよびmax_microversionパラメーターに値を割り当てます。[compute] min_microversion = 2.14 max_microversion = latest
[compute] min_microversion = 2.14 max_microversion = latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 Integration Test Suite (tempest) リソースのクリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Integration Test Suite (tempest) を使用してデプロイメントを検証する前に、--init-saved-state フラグを指定して cleanup コマンドを実行します。このコマンドは、環境をスキャンしてリソース (ネットワーク、ボリューム、イメージ、フレーバー、プロジェクト、ユーザーなど) を検出します。検出されたリソースは、saved_state.json というファイルに保存されます。tempest cleanup コマンドが実行すると、saved_state.json ファイルに記録されていないすべてのリソースが削除されます。
前提条件
- Integration Test Suite のパッケージが含まれる OpenStack 環境。詳しい情報は、director を使用した Integration Test Suite のインストール を参照してください。
- OpenStack 環境に対応する Integration Test Suite 設定。詳細は、ワークスペースの作成 参照してください。
- 1 つ以上の完了した Integration Test Suite 検証テスト。
4.1. ドライランの実行 リンクのコピーリンクがクリップボードにコピーされました!
クリーンアップを実行する前にドライランを実行します。ドライランは、Integration Test Suite が実際にファイルを削除せずに、クリーンアップによって削除されるファイルをリスト表示します。dry_run.json ファイルには、クリーンアップによって削除されるファイルのリストが含まれます。
手順
ドライランを完了します。
tempest cleanup --dry-run
# tempest cleanup --dry-runCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
dry_run.jsonファイルをチェックして、クリーンアップにより環境に必要なファイルが削除されないようにします。
4.2. テンペストクリーンアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
tempest テストを実行する前に、保存された状態を初期化する必要があります。これにより saved_state.json ファイルが作成され、保持する必要があるオブジェクトがクリーンアップにより削除されるのを防ぎます。
--init-saved-state フラグを指定して cleanup コマンドを実行しない場合は、RHOSP オブジェクトが削除されます。
--init-saved-state を指定して cleanup コマンドを実行した後にオブジェクトを作成する場合、このオブジェクトは後続の tempest コマンドで削除できます。
手順
保存された状態を初期化し、
saved_state.jsonファイルを作成します。tempest cleanup --init-saved-state
# tempest cleanup --init-saved-stateCopy to Clipboard Copied! Toggle word wrap Toggle overflow クリーンアップを実行します。
tempest cleanup
# tempest cleanupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
tempest cleanup コマンドは tempest リソースを削除しますが、プロジェクトや tempest の管理者アカウントは削除しません。
saved_state.json ファイルを修正して、保持または削除するオブジェクトの指定や除外を行うことができます。
第5章 Integration Test Suite (tempest) を使用した OpenStack クラウドの検証 リンクのコピーリンクがクリップボードにコピーされました!
Integration Test Suite の検証は、tempest run コマンドで数多くの方法で実行することができます。1 つの tempest run コマンドで、複数のオプションを組み合わせることもできます。
5.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Integration Test Suite のパッケージが含まれる OpenStack 環境。詳しい情報は、director を使用した Integration Test Suite のインストール を参照してください。
- OpenStack 環境に対応する Integration Test Suite 設定。詳細は、ワークスペースの作成 参照してください。
5.2. 利用可能なテストのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
--list-tests オプションを使用して、利用可能なすべてのテストをリスト表示します。
手順
--list-testsまたは-lオプションのいずれかを指定してtempest-runコマンドを入力し、利用可能な tempest テストのリストを取得します。tempest run -l
# tempest run -lCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. smoke テストの実行 リンクのコピーリンクがクリップボードにコピーされました!
smoke テスト は、最も重要な機能のみを対象とした予備的なテストの種類です。このテストは包括的ではありませんが、smoke テストの実行で問題が特定できれば時間を節約できます。
手順
--whitelist-fileオプションを指定してtempest runコマンドを入力し、ホワイトリストファイルを使用します。tempest run --smoke
# tempest run --smokeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. 許可リストファイルを使用したテストのパス リンクのコピーリンクがクリップボードにコピーされました!
許可リストファイルは、追加するテストを選択する正規表現が含まれるファイルです。1 つ以上の正規表現を使用する場合は、各行に各式を指定します。
手順
--whitelist-fileまたは-wオプションのいずれかを指定してtempest runコマンドを入力し、許可リストファイルを使用します。tempest run -w <whitelist_file>
# tempest run -w <whitelist_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. ブロックリストファイルを使用したテストのスキップ リンクのコピーリンクがクリップボードにコピーされました!
ブロックリストファイルは、除外するテストを選択する正規表現が含まれるファイルです。1 つ以上の正規表現を使用する場合は、各行に各式を指定します。
手順
--blacklist-fileまたは-bオプションのいずれかを指定してtempest runコマンドを入力し、ブラックリストファイルを使用します。tempest run -b <blacklist_file>
# tempest run -b <blacklist_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6. 並行または連続してテストの実行 リンクのコピーリンクがクリップボードにコピーされました!
テストは並行して実行することも、連続して実行することができます。また、並列テストを実行する際に使用するワーカー数を定義することもできます。デフォルトでは、Integration Test Suite は利用可能な CPU ごとに 1 つのワーカーを使用します。
テストを順次実行するか、並行して実行することを選択します。
テストを順次実行します。
tempest run --serial
# tempest run --serialCopy to Clipboard Copied! Toggle word wrap Toggle overflow テストを並行して実行します (デフォルト)。
tempest run --parallel
# tempest run --parallelCopy to Clipboard Copied! Toggle word wrap Toggle overflow --concurrencyまたは-cオプションを使用して、テストを並行して実行する時に使用するワーカーの数を指定します。tempest run --concurrency <workers>
# tempest run --concurrency <workers>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7. 特定のテストの実行 リンクのコピーリンクがクリップボードにコピーされました!
--regex オプションを使用して特定のテストを実行します。正規表現は Python 正規表現を使用する必要があります。
手順
以下のコマンドを入力します。
tempest run --regex <regex>
# tempest run --regex <regex>Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、以下の例に示すコマンドを使用して、
tempest.scenarioで始まる名前のテストをすべて実行します。tempest run --regex ^tempest.scenario
# tempest run --regex ^tempest.scenarioCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.8. Integration Test Suite オブジェクトの削除 リンクのコピーリンクがクリップボードにコピーされました!
tempest cleanup コマンドを入力し、すべての Integration Test Suite (tempest) リソースを削除します。このコマンドではプロジェクトも削除されますが、管理者アカウントは削除されません。
手順
tempest リソースを削除します。
tempest cleanup --delete-tempest-conf-objects
# tempest cleanup --delete-tempest-conf-objectsCopy to Clipboard Copied! Toggle word wrap Toggle overflow