元気玉的
分散テスト
実行システム
TestStreamer
kawasima
tokyo.clj #19
https://github.com/kawasima/test-streamer
Clojure記事で多少炎上
させております
従来のグリッドコンピューティング
巨大なデータセンタ
アプリケーションデプロイ/インフラ構築のあ
くなき自動化追求
大量の設備投資、人的リソース投資
大企業における
グリッドコンピューティング
オフィス内にあり余っているオフィス内にあり余っている
マシンパワーを利用するマシンパワーを利用する
いわば…
みんなオラにCPUパワーを少しずつ分け
与えてくれ、な元気玉的システム
これでJUnitのテストを分散実行してし
まおう。
最大の特長
No deploy
訳: テスト対象アプリ/テストコードを事前にクライアン
トにデプロイする必要がありません。
WebSocketClassLoader
<dependency>
<groupId>net.unit8.wscl</groupId>
<artifactId>websocket-classloader</artifactId>
<version>0.1.0</version>
</dependency>
Maven Centralにあります
通常のクラスロード
findResource
file:///hoge/fuga.jar
loadClass
WebSocketClassLoader
findResource
ws://hoge/fuga/piyo.class
loadClass
file:///hoge/fuga.jar
WebSocket
キャッシュから
WebSocketClassLoaderの利点
●
大量のJarファイルをデプロイしなくてよい
●
どのJarにClassが含まれるか知る必要がない
●
WebSocketClassLoaderを作りなおすだけ
で、クラスファイルの更新ができる。
TestStreamer
●
WebSocketClassLoaderを使って、テストコード
をクライアントにロードさせJUnitのテストを実
行させる仕組み。
●
クライアントマシンは依頼されたテストを実行
するだけ。
●
サーバはサブミットされたテストを順に接続さ
れたクライアントにディスパッチする。
仕組みSubmit Tests
WebSocket待ち受け
クラスロード(別のWebSocket)
テスト実行依頼
テスト結果
ここではじめて 必要なクラス群
が転送される
TestStreamer
Server
TestStreamer
Client
分散クライアントの設定
ここからJNLPダウンロードして実行するだけで
クライアントとして作動する。
(接続先設定など不要)
サーバでテストをサブミットする
テストクラスを指定して(Glob可)、実行ボタン押すだけ
あとは接続クライアントで
テストが実行されていく
TestStreamerのウリ
●
あり余っているノンプログラマたちのCPUパ
ワーを有効活用できる。
●
クライアントは、Java Web Start経由でアプ
リケーションを起動しておくだけ。
●
あとは、勝手にテストが実行されていく。
Very Easy ( ˘ω˘)
https://github.com/kawasima/test-streamer
よろしくお願いします

元気玉的 分散テスト 実行システム TestStreamer