Skip to main content
このガイドでは、デバッグ、サーバーテストスイートの実行、およびVillageSQLへの貢献について説明します。動作するソースビルドがあることを前提としています。まだビルドしていない場合は、ソースからのビルドを参照してください。

デバッグ

VillageSQLサーバーのデバッグには、LinuxではGDBを、macOSではlldbを使用します。macOSのGDBはコード署名が必要で、設定が面倒です。lldbはmacOSの標準デバッガーであり、そのまま動作します。

Linux(GDB)

VillageSQLをGDBで実行します。
GDB内:
一般的なGDBコマンド:

macOS(lldb)

VillageSQLをlldbで実行します。
lldb内:
一般的なlldbコマンド:

テストの実行

VillageSQLには、機能を確認するためのユニットテストと回帰テストの両方が含まれています。

ユニットテスト

VillageSQL固有のユニットテストを(ビルドディレクトリ内から)実行します。
または、すべてのユニットテストを実行します。

回帰テスト

mysql-testディレクトリに移動します。
MySQLの完全なテストスイートを実行します(時間がかかります)。
VillageSQLのサブスイートを1つ実行します。
すべてのサブスイートを含むVillageSQLテストを実行します。
--suiteと--do-suite:
  • --suite=villagesql/insertは、サブスイートを1つ実行します。
  • --do-suite=villagesqlは、サブスイート(insert、select、stored_procedureなど)を含むすべてのテストを実行します。
  • --nounit-testsは、MTRがスイートと一緒に実行するユニットテストをスキップします。これらはアップストリームMySQLのユニットテストで、既知の失敗を含みます。VillageSQLのユニットテストは、上記のユニットテストのコマンドで個別に実行してください。

個別のテストの実行

テスト名を指定して特定のテストを実行します。
サブスイートからテストを実行します。

テスト結果の更新

機能を変更し、期待されるテスト出力を更新する必要がある場合:
テスト記録: .resultファイルの変更は、常に確認し、バグではなく意図した動作を反映していることを確認してください。--recordフラグは、期待される出力を無条件に上書きします。

テストの移植性

テスト出力にテストランナーの一時ディレクトリからのパスが含まれている場合、そのパスを出力する各ステートメントの前に次のディレクティブを追加して、記録された結果に他のマシンで動作しなくなる絶対パスが含まれないようにします。

テスト失敗時のデバッグ

VillageSQL固有のログメッセージ(LogVSQL()を通じて出力される)は、--log-error-verbosity=3でエラーログに書き込まれます。MTRはデフォルトでこのレベルを設定します。1回の実行に対してレベルを設定するには:
単一ワーカーでの実行の場合、完全なエラーログはmysql-test/var/log/mysqld.1.errにあります。--parallelの下では、各ワーカーは代わりにmysql-test/var/<N>/log/mysqld.1.errに書き込みます。 拡張機能の回帰テストの作成については、C++のテストを参照してください。

バイナリのインストール

VillageSQLをシステム全体にインストールするには(適切な権限が必要です):
これにより、バイナリはデフォルトで/usr/local/mysql/にインストールされます。インストールプレフィックスをカスタマイズできます。

貢献

VillageSQLに貢献する場合は、貢献ガイドラインを参照して、コーディング標準と開発ワークフローを確認してください。