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

Post on 30-Nov-2014

1.143 views 3 download

description

JUnitのテストを分散実行するための仕組みです。

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

元気玉的分散テスト実行システム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)

テスト実行依頼

テスト結果

ここではじめて 必要なクラス群が転送される

TestStreamerServer

TestStreamerClient

分散クライアントの設定

ここからJNLPダウンロードして実行するだけでクライアントとして作動する。(接続先設定など不要)

サーバでテストをサブミットする

テストクラスを指定して(Glob可)、実行ボタン押すだけ

あとは接続クライアントでテストが実行されていく

TestStreamerのウリ● あり余っているノンプログラマたちのCPUパ

ワーを有効活用できる。● クライアントは、Java Web Start経由でアプ

リケーションを起動しておくだけ。● あとは、勝手にテストが実行されていく。

Very Easy ( ˘ω˘)

https://github.com/kawasima/test-streamer

よろしくお願いします