Skip to content

[P6] テストインフラを機能させる + 分離レベル正当性を椚認するテストを追加する #35

Description

@thawk105

親イシュー: #29
依存: #31 (P1) の後に実施推奨(P1なしでも着手可能)

概要

現在、CIはビルドの成否だけを確認するのみであり、プロトコルの正当性を椚認する仕組みが何もない。「Snapshot Isolation」や「直列化可能」と主張するプロトコルを追加しても、その主張を椚認するテストが存在しないため、バグがあってもベンチはそのまま数値を出し続ける。

やること

テストインフラの修復

  • トップレベル CMakeLists.txtenable_testing() を追加する
  • 各プロトコルの test/ および新規 test/add_subdirectory で接続する
  • CI(.github/workflows/build.yml)に ctest --output-on-failure ステップを追加する
  • include/ 共通コンポーネントのユニットテストを作成する(zipf, atomic_wrapper, rwlock, masstree_wrapper等)

分離レベルチェッカーの実装

  • Adya/Berensonの専知のアノマリースケジュール(G0, G1, G2, write skew, read skew等)で各プロトコルを椚認するテストスイートを追加する
    • SIを主張するプロトコル: write skewを許容することを椚認
    • 直列化可能を主張するプロトコル: write skewを展却することを椚認
    • 各アノマリーの合否がプロトコルの定義と一致しない場合はテスト失敗とする

完了条件

  • ctest が CI 内で正常に実行されること
  • include/ 内の共通コンポーネントに少なくともユニットテストが存在すること
  • 全プロトコルに分離レベル椚認テストが存在し、実装が定義と一致すること

備考

  • P1(TxExecutorLike concept)と組み合わせると「コンパイル時椚認」「ランタイム椚認」の両方が機能し、最も安全なプロトコル追加環境になる

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions