dm-writeboostのテストをGithub Actionsで実行する

ライトブーストに関してはもう自分から何か変えようという気はなく、 ただ問題が指摘されたら直すというスタンスになっているが、 大体1年に一回、UbuntuかDebianのメンテナっぽい人から 「コンパイルが通らなくなってるぞ」という指摘があるのが恒例行事になっている。

今回も1年3ヶ月ぶりに赤紙がやってきた。

module build fails for 6.1.83+, 6.6.23+, 6.7.11+, 6.8.2+, 6.9+

しかしぶっちゃけていうと、 おれはもう完全にユーザランドガイなので カーネル開発環境など持っていないし構築する気もない。 開発マシンもだいぶ前に捨ててしまった。 仮に開発環境があったとしても、 一年に一回しか触らないような環境であれば 使い方などわかるはずもない。

将来的にこうなることはわかり切っていたので、 実装はLinuxカーネルやデバイスマッパーの基本的な機能だけを使って保守的に作っていた。 もし、無駄に攻めた実装をしてしまっていたら、もうとっくに終わっていただろうと思う。 そういう意味では、判断自体は正しかったと思うが、いかんせんもう興味がない。 おれの興味は今は完全にlolraftに移ってしまっている。

ライトブーストはカーネルモジュールであるが、 そのテストを目的として device-mapper-tests というテストスイートを構築している。 これはまず大きなループバックデバイスを作り、それをプールにして デバイスマッパーの機能を使って色々なデバイスを作り、テストに利用する。 具体的にはlinearの他、cryptやflakeyなどの機能をテストに利用している。 すっきりと実装出来てるので興味がある人は調査してみてほしい。 Rustで実装している。

ライトブーストのカーネルモジュールを修正した時には 回帰テストとしてこれを回す。

今回はこれをGithub Actionsで行うようにした(PR)。 ubuntu-22.04を使ってここにdm-writeboostをmodprobeし、 device-mapper-testsを実行する。 原理的に出来るであろうことは予想出来ていたが、 GHA自体がカーネルモジュールをテストすることは想定していないはずなので やってみないと本当に出来るかどうかは自信が持てなかった。 しかし、まぁなんとかなったようだ。

これで今後は、何か修正があった場合にも とりあえずubuntu-22.04ではチェックされるから、 超致命的なミスはないことが保証されるだろう。 最新カーネルでテストしているわけではないからもちろん不十分ではあるが、 ないよりは遥かにマシになったと思う。 あとは、テスト環境の構築自体もGHAの設定ファイルがドキュメントとして機能するから、 この点もかなり有益だと思う。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。