強化されたデバイスドライバは、可能性として考えられるハードウェアの障害に対し耐性があります。デバイスドライバの耐性は、ドライバの開発工程の一環としてテストしておく必要があります。こうしたテストでは、ハードウェアによくあるさまざまな障害に対し、ドライバはきちんと管理された方法で繰り返し対処できることを確認します。ドライバ強化テストハーネスを使用すると、ドライバの開発者はソフトウェアでハードウェア障害のシミュレーション (模擬的なテスト) が行えます。
テストハーネスはさまざまな DDI ルーチンに対するドライバからの呼び出しを横取りし、あたかもハードウェアが原因であるかのように、呼び出しの結果を破壊します。ハーネスでは、特定のレジスタへのアクセスに対する破壊を定義することができますし、よりランダムなタイプの破壊を定義することもできます。
Solaris DDI/DKI に準拠するためには、ドライバは DDI ルーチンを使用して、すべての I/O アクセスを実行する必要があります。
テストハーネスでは、指定された作業負荷の実行時におけるすべてのレジスタアクセスとダイレクトメモリーアクセス (DMA)、割り込みの使用状況を追跡することによって、テストスクリプトが自動的に生成できます。生成されるスクリプトでは、その作業負荷が再実行されると同時に、アクセスのたびに一連の障害が投入されます。
ドライバのテスト担当者はさらにテストケースを追加して、一層不明確な障害経路を発生させなければなりません。また、生成されたスクリプトから重複しているテストケースを削除する必要もあります。
テストハーネスは bofi というデバイスドライバと、ユーザーレベルの 2 つのユーティリティである th_define(1M) と th_manage(1M) として実装されています。bofi は、bus_ops 障害投入 (fault injection) を意味しています。
テストハーネスは次の作業を行います。
Solaris DDI サービスが標準に準拠して使用されていることを確認する
プログラムされた I/O (PIO) と DMA 要求の破壊と割り込みに対する干渉を管理のもとで行い、ドライバが管理するハードウェアに発生する障害をシミュレートする
親の連結 (nexus) ドライバから通知される、CPU とデバイス間のデータ経路において、障害のシミュレーションを行う
指定された作業負荷の間、ドライバのアクセスを監視し、障害投入スクリプトを生成する