親イシュー: #28 / 旧 #35 を分割したうちの 1 つ(include/ 共通コンポーネントのユニットテスト担当)。 依存: #91(テストインフラの配線)完了後に着手。 ## 現状(2026-05-15) - `include/` には全プロトコル共通のコンポーネントが多数あるが、対応するユニットテストが**1 つもない**。代表例: - `include/zipf.hh` — Zipf 分布生成 - `include/atomic_wrapper.hh` — アトミック操作ラッパ - `include/rwlock.hh` — read/write ロック - `include/masstree_wrapper.hh` — masstree ラッパ - その他 `random.hh`, `backoff.hh`, `int64byte.hh`, `string.hh` など - googletest はサブモジュールとして存在するが、現状リンクしているのは `cc/ss2pl/test`(ss2pl 専用の `make_db_test`)のみ。共通コンポーネントのテストは皆無。 - `microbench/`(旧 `instruction/` を P7 でリネーム)は同じ `include/` 部品を使うが、目的は命令数・サイクル等の**コスト測定マイクロベンチ**であり、本イシューが扱う**正当性のユニットテスト**とは目的が直交する。microbench をテストの代わりにはしない。 - #91 で `enable_testing()` + gtest のビルドツリー接続 + テスト用 CMake ヘルパ + CI `ctest` ステップが整備される。本イシューはその上にテスト本体を載せる。 ## やること - [ ] `include/` 共通コンポーネントのユニットテストを置く場所を決める(例: トップレベル `test/` ディレクトリ)。#91 で導入されるテスト用 CMake ヘルパを使う - [ ] まず副作用が少なく検証しやすいものからユニットテストを作成する: - [ ] `zipf.hh` — 分布のパラメータ(skew, 範囲)が反映されること - [ ] `atomic_wrapper.hh` — load/store/CAS 系の基本動作 - [ ] `rwlock.hh` — read/write 排他の基本性質 - [ ] `masstree_wrapper.hh` — insert / get / scan の基本動作 - [ ] 余力に応じて `random.hh`, `backoff.hh` 等にも広げる - [ ] 追加したテストが CI の `ctest` ステップ(#91 で追加)で実行されることを確認する ## 完了条件 - `include/` の主要な共通コンポーネント(少なくとも zipf / atomic_wrapper / rwlock / masstree_wrapper)にユニットテストが存在すること - それらが CI 内の `ctest` で実行され、パスすること ## 備考 - 編集対象は C++ テストコードと CMake。`docs/coding-conventions_ja.md` の C++ / CMake 規約を編集前に確認すること。 - 分離レベルの正当性検証(アノマリーテスト)は別イシュー #93 のスコープ。本イシューは「共通部品の単体動作」に限定する。
親イシュー: #28 / 旧 #35 を分割したうちの 1 つ(include/ 共通コンポーネントのユニットテスト担当)。
依存: #91(テストインフラの配線)完了後に着手。
現状(2026-05-15)
include/には全プロトコル共通のコンポーネントが多数あるが、対応するユニットテストが1 つもない。代表例:include/zipf.hh— Zipf 分布生成include/atomic_wrapper.hh— アトミック操作ラッパinclude/rwlock.hh— read/write ロックinclude/masstree_wrapper.hh— masstree ラッパrandom.hh,backoff.hh,int64byte.hh,string.hhなどcc/ss2pl/test(ss2pl 専用のmake_db_test)のみ。共通コンポーネントのテストは皆無。microbench/(旧instruction/を P7 でリネーム)は同じinclude/部品を使うが、目的は命令数・サイクル等のコスト測定マイクロベンチであり、本イシューが扱う正当性のユニットテストとは目的が直交する。microbench をテストの代わりにはしない。enable_testing()+ gtest のビルドツリー接続 + テスト用 CMake ヘルパ + CIctestステップが整備される。本イシューはその上にテスト本体を載せる。やること
include/共通コンポーネントのユニットテストを置く場所を決める(例: トップレベルtest/ディレクトリ)。[P6] テストインフラを機能させる(enable_testing + CI ctest + 孤立テスト接続) #91 で導入されるテスト用 CMake ヘルパを使うzipf.hh— 分布のパラメータ(skew, 範囲)が反映されることatomic_wrapper.hh— load/store/CAS 系の基本動作rwlock.hh— read/write 排他の基本性質masstree_wrapper.hh— insert / get / scan の基本動作random.hh,backoff.hh等にも広げるctestステップ([P6] テストインフラを機能させる(enable_testing + CI ctest + 孤立テスト接続) #91 で追加)で実行されることを確認する完了条件
include/の主要な共通コンポーネント(少なくとも zipf / atomic_wrapper / rwlock / masstree_wrapper)にユニットテストが存在することctestで実行され、パスすること備考
docs/coding-conventions_ja.mdの C++ / CMake 規約を編集前に確認すること。