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

17
元気玉的 分散テスト 実行システム TestStreamer kawasima tokyo.clj #19 https://github.com/kawasima/test-streamer

description

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

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

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

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

kawasima

tokyo.clj #19

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

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

Clojure記事で多少炎上させております

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

従来のグリッドコンピューティング

巨大なデータセンタ

アプリケーションデプロイ/インフラ構築のあくなき自動化追求

大量の設備投資、人的リソース投資

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

大企業におけるグリッドコンピューティング

オフィス内にあり余っているオフィス内にあり余っているマシンパワーを利用するマシンパワーを利用する

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

いわば…

みんなオラにCPUパワーを少しずつ分け与えてくれ、な元気玉的システム

これでJUnitのテストを分散実行してしまおう。

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

最大の特長

No deploy訳: テスト対象アプリ/テストコードを事前にクライアントにデプロイする必要がありません。

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

WebSocketClassLoader

<dependency> <groupId>net.unit8.wscl</groupId> <artifactId>websocket-classloader</artifactId> <version>0.1.0</version></dependency>

Maven Centralにあります

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

通常のクラスロード

findResource

file:///hoge/fuga.jar

loadClass

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

WebSocketClassLoader

findResource

ws://hoge/fuga/piyo.class

loadClass

file:///hoge/fuga.jar

WebSocket

キャッシュから

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

WebSocketClassLoaderの利点● 大量のJarファイルをデプロイしなくてよい● どのJarにClassが含まれるか知る必要がない● WebSocketClassLoaderを作りなおすだけ

で、クラスファイルの更新ができる。

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

TestStreamer● WebSocketClassLoaderを使って、テストコード

をクライアントにロードさせJUnitのテストを実行させる仕組み。

● クライアントマシンは依頼されたテストを実行するだけ。

● サーバはサブミットされたテストを順に接続されたクライアントにディスパッチする。

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

仕組みSubmit Tests

WebSocket待ち受け

クラスロード(別のWebSocket)

テスト実行依頼

テスト結果

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

TestStreamerServer

TestStreamerClient

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

分散クライアントの設定

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

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

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

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

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

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

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

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

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

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

Very Easy ( ˘ω˘)

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

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

よろしくお願いします