Welcome to Crackerjack Project.
Overview
Linuxカーネルはコミュニティベースで分散的に開発が進められており、そのためシステムコールの上位互換性を保証することが難しいという問題があります。また、非互換性に関する明文化されたわかりやすい情報が少なく、その結果、ソースコードを読み込むまで詳細がわからないといった問題も起きています。
これらの問題を解決するため、Crackerjack Projectでは、2006年度からLinuxカーネルバージョン間の互換性をテストするツールCrackerJackの開発を進めてきました。その一部は、北東アジアOSS推進フォーラムの日中韓共同開発プロジェクトの一環としても推進されています。
この成果は欧米を中心としたAutotestやLTP(Linux Test Project)などのコミュニティからも認知され、ツールのさらなる高品質化、および非互換性情報の幅広い提供などへの期待が高まっています。
このサイトは、Crackerjackプロジェクトの成果を国内外のLinux利用者および開発者に対して幅広く提供することを目的としています。
Features
Crackerjack Projectの成果物"Crackerjack 2.0"には、以下の機能があります。
Linux-Kernelのテスト
linux-kernelの全てのシステムコールについてのテストを行います。
リグレッションテスト
複数のlinux-kernelバージョン間でのテスト結果を比較することで、バージョン間でのリグレッションを確認するためのデータを作成することができます。
カーネルコードのカバレッジ
各々のシステムコールについて、そのカバレッジをカーネルのソースレベルで確認できます。
コマンドライン、GUI
コマンドラインからの実行はもちろん、GUIシェルも付属しています。
Architecture
Crackerjack Project全体は、以下のような要素から成り立っています。
Crackerjack Application
テストケースを実行し、その結果を保存します。
Testcase
Linux-Kernelのテストケースです。全てのLinuxシステムコールに対応します。
Crackerjack Site
Crackerjack Applicationからの結果を集計し、Regression結果を公開します。
Relation with other communities.
Crackerjack Projectと他のコミュニティとの関係を以下に示します。
このコミュニティの関係は、現代の情報基盤を築いているLinux-Kernelについて、品質管理のためのエコシステムとなることを目指します。
カーネル開発者は、リグレッションテストの結果を直接、カーネルの品質向上に使うことができるでしょう。
アプリケーションデベロッパは、リグレッションテストの結果から、各々のバージョンでのシステムコールの動作を把握し、より品質の高いアプリケーションを構築することができるでしょう。
マニュアル作成者は、ドキュメントと実際の動作の乖離をより簡単に発見し、修正することが可能になります。
このように、Linuxコミュニティの成果物全体の品質向上のためのプラットフォームを提供することが我々の目標です。
Image of ideal release model.
我々は、カーネルテストの方法を単純化することにより、Linux-Kernelの開発のより多くの局面でテストを行うことを可能にしたいと考えています。
たとえば、開発用リポジトリへのコミットの段階、ディストリビューションごとのカーネル構築の段階など、いろいろな局面でリグレッションテストを行うことで、Linux-Kernelの品質の向上を図ることが可能になります。
Getting Started
Crackerjackは、以下の方法で使用することができます。
Download
まずCrackerjackパッケージをDownloadして、解凍してください。
Make
テストケースをコンパイルするために、Crackerjackを解凍したディレクトリ内の"testcases"ディレクトリでmakeコマンドを実行してください。
Test
Crackerjackを解凍したディレクトリで、"./crackerjack -x"を実行すると、今使われているシステムのカーネルをテストします。(実行にはrubyが必要です。)
また、"./crackerjack-gui"を実行すると、GUIからテストを行うことができます。
Who can use Crackerjack?
License
Crackerjack Projectの成果物のライセンスは、GNU GENERAL PUBLIC LICENSE Version 2に従います。