.vebファイルのインストール、リグレッションテストの実行、失敗のデバッグを扱います。これは、初期ビルドを扱うC++での拡張機能の作成、およびVDFの作成の詳細を扱うC++開発の関連ガイドです。
(拡張機能を構築するのではなく)VillageSQLサーバー自体に貢献する場合は、ソースからのビルドを参照してください。これは、
mysql-test-run.plを直接使用してテストを実行することを含む、完全なサーバー開発者ワークフローを扱います。環境のセットアップ
拡張機能を開発およびテストするには、ビルド済みのVillageSQLサーバーが必要です。ソースからのクローンとビルドガイドに従って、サーバーバイナリをコンパイルしてください。 ビルドができたら、villagesql CLIを使用してローカルの開発サーバーインスタンスを管理します。VillageSQLがインストールされたディレクトリからすべてのコマンドを実行してください。
ローカル開発サーバーの起動
サーバーインスタンスを初期化して起動します。--区切りの後にフラグを渡します。それ以降のすべては、そのまま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.testmysql-test/r/my_new_test.result
テストファイルの規約
一般的な拡張機能のテストは、拡張機能をインストールし、SQLを実行し、アンインストールします。.testファイル内に次のディレクティブを追加します。これがないと、記録された結果には絶対パスが含まれ、他のマシンで動作しなくなります。
テストを追加する手順
- 拡張機能の
mysql-test/t/ディレクトリに、.testファイルを作成します。 - 拡張機能の
mysql-test/r/ディレクトリに、空の.resultファイルを作成します。 --recordを付けてテストを実行します。期待される出力を生成します。- 生成された
.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ファイルとの間の差分を出力します。
関連項目
- ネットワーク依存の拡張機能のテスト — HTTPサーバーや外部リスナーを起動する拡張機能のための信頼性の高いMTRパターン
- C++での拡張機能の作成 — エンドツーエンドのビルド手順、CMakeのセットアップ、およびインストール
- C++開発 — VDFの作成の詳細、引数と結果の型、集約、可変長引数
- C++ APIリファレンス — VDFの契約、null処理、およびバッファサイジング

