IntelのIntrinsic関数を他のRISC-VやARMなどのアーキテクチャにポートする場合、ポートの正確性を担保するためにIntelとRISC-VやARMをネットワークで相互接続するテストフレームワークが必要であることを前回までに論じた。

では、ネットワーク接続をするテストフレームワークを作るためにはどうすればいいか。それは、ネットワーク・プロトコルを作成する必要がある。で、そのためには、ネットワークシミュレータを作成する必要がある。このテストフレームワークは実験段階であるため、ローカルでの相互接続を前提とする。

つまり、コマンド一つでネットワーク・プロトコルの実装をテストすることができるテストケースをPythonやGo言語などで作っていけば良い。
PythonにもGoにも、テスト駆動開発で使うテストフレームワークが存在する。

ネットワークの中身をシミュレートする必要はなくて、送信データと受信データだけのインターフェースを作って、抽象化してやればいい。

Rust言語を使うオプションも存在する。Rustは低水準であり、ネットワーク機能も備えている。管理モジュールをRustで作って、ポートする部分はC言語とRust両方で作れるようにする。

assertを使う。単一関数(その関数の名前をThrowParameter関数と名付ける)で、ネットワーク越しのCPUに関数を実行させて値を返すものを実装する。で帰ってきた結果をassertで確認する。一つの関数に一連のルーチンを実装する。引数にネットワークハンドラとか入れておく。

ネットワークハンドラは事前に接続設定しておく。ネットワークハンドラを設定する関数をThrowParameterNetworkEstablishmentと名付ける。つながってなかったらエラーを返す

「ネットワーク越しのCPUに関数を実行させて結果を返す」関数から帰ってきた値をassertで比較して、同じでなかったらエラーを吐き出す、テスト駆動開発のフレームワークが使える

(続く)

广告
将在 10 秒后关闭
bannerAds