Skip to main content
このガイドでは、C++拡張機能のテストと反復のループについて説明します。ローカルサーバーのセットアップ、.vebファイルのインストール、リグレッションテストの実行、失敗のデバッグを扱います。これは、初期ビルドを扱うC++での拡張機能の作成、およびVDFの作成の詳細を扱うC++開発の関連ガイドです。
(拡張機能を構築するのではなく)VillageSQLサーバー自体に貢献する場合は、ソースからのビルドを参照してください。これは、mysql-test-run.plを直接使用してテストを実行することを含む、完全なサーバー開発者ワークフローを扱います。

環境のセットアップ

拡張機能を開発およびテストするには、ビルド済みのVillageSQLサーバーが必要です。ソースからのクローンとビルドガイドに従って、サーバーバイナリをコンパイルしてください。 ビルドができたら、villagesql CLIを使用してローカルの開発サーバーインスタンスを管理します。VillageSQLがインストールされたディレクトリからすべてのコマンドを実行してください。

ローカル開発サーバーの起動

サーバーインスタンスを初期化して起動します。
初期化時にrootパスワードを設定するには:
テスト実行のためにmysqldの機能を有効または無効にするには、--区切りの後にフラグを渡します。それ以降のすべては、そのままmysqldに転送されます。
--より前の認識されない引数は拒否されるため、mysqld向けのフラグにはすべて--を使用してください。 複数の独立したインスタンスを管理するには、任意のコマンドの前に--dir <path>を渡すか、--hereを使用して現在の作業ディレクトリにサーバーディレクトリを作成します。

拡張機能ファイルの管理

SQL経由で拡張機能をインストールする前に、その.vebファイルがサーバー上に存在している必要があります。CLIはサーバーのlib/veb/ディレクトリを管理します。
initの前にlib/veb/に配置された.vebファイルは、自動的にシードされます。ファイルを追加した後、SQL経由で拡張機能をインストールします。

リグレッションテストの実行

VillageSQLビルドディレクトリからMySQL Test Runnerを使用して、拡張機能のリグレッションテストを実行します。

スイート全体の実行

拡張機能のすべてのテストを実行するには:

個別のテストの実行

単一のテストケースを実行するには、スイートパスとテスト名を指定します。

新しいテストの作成

新しい機能を追加したりバグを修正したりする場合は、対応するリグレッションテストを追加する必要があります。

テストの場所

拡張機能のテストは、VillageSQLサーバーのmysql-test/suite/ツリーではなく、拡張機能自体のリポジトリ内のmysql-test/ディレクトリに配置されます。
  • テストファイルは.testで終わり、mysql-test/t/に配置します。
  • 期待される結果ファイルは.resultで終わり、mysql-test/r/に配置します。
たとえば、my_extensionという名前の拡張機能の場合:
  • mysql-test/t/my_new_test.test
  • mysql-test/r/my_new_test.result

テストファイルの規約

一般的な拡張機能のテストは、拡張機能をインストールし、SQLを実行し、アンインストールします。
テスト出力にテストランナーの一時ディレクトリのパスが含まれる場合は、それらを正規化するために.testファイル内に次のディレクティブを追加します。これがないと、記録された結果には絶対パスが含まれ、他のマシンで動作しなくなります。

テストを追加する手順

  1. 拡張機能のmysql-test/t/ディレクトリに、.testファイルを作成します
  2. 拡張機能のmysql-test/r/ディレクトリに、空の.resultファイルを作成します
  3. --recordを付けてテストを実行します。期待される出力を生成します。
  4. 生成された.resultファイルで出力を確認し、期待どおりであることを確認します。

テストのデバッグ

テストが失敗した場合、テストフレームワークは詳細なログを提供します。
  • テスト出力: mysql-test/var/log/mysqltest.log(統合)またはmysql-test/var/log/<test_name>/(テストごとのディレクトリ)を確認します。
  • サーバーエラーログ: mysql-test/var/log/mysqld.1.errを確認します。VillageSQL固有のログメッセージ(LogVSQL()経由で出力されるもの)は、サーバーが--log-error-verbosity=3で実行されている場合にのみ表示されます。
  • 差分: フレームワークは、実際の出力と期待される.resultファイルとの間の差分を出力します。
追加のデバッグ情報を付けてテストを実行するには:

関連項目