Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
分散test/unit   が出来るといいな


         樽家 昌也 (日本Rubyの会)
リグレッションテストの憂鬱
終盤になればあまり問題はない
問題は序中盤

ソースコードをガシガシ
リファインしたり機能追加する
バグもガシガシ追加してる
     テスト重要!
       って、言うまでもないですよねー

      でもテ...
あるテストの例 (13 tests)
>rake test
Finished in 227.140242 seconds.

ちょっと時間掛かりすぎじゃないか?今後が心配。
top - 17:18:13 up 7:23, 3 users, lo...
並列実行test環境ってないの?
    Java界にはTestNGってのがあるらしい
!
    そういえばMakeには-jオプションあるけれど
!
    Rakeにはないなぁ

    そもそも並列といっても色々単位が。どれがいいの?
!...
使ってるtest/unitを見てみた
     実行開始している所から並列化させればいいんじゃないだろう
 !
     か?
      どこで開始してるの?
        そんな時のcaller関数 test本体に入れてみよう
     ...
じゃあマルチプロセスで
 プロセス別れるとプロセス間通信が必要
 特に他所のプロセスの変数いじるんだからdRubyがよそう

 なんとなく完成                             def run(result, &progr...
分散testに向けて
    真剣に考えると色々解決しないといけない課題は多い
!
        ターゲットの選定
    !
        分散のモデル化
    !
        並列実行されるThreadの導入推進?
    !
 ...
添付ライブラリで遊ぼう

分散test/unit   が出来るといいな


         樽家 昌也 (日本Rubyの会)
添付ライブラリ弄りは楽しい
    広く使われるものなので固い。たまにもうちょっと融通を
!
    利かせてほしくなったりする。
    Code Reading が自然と出来るし、
!
    弄ってこそ見えてくる事がある。深く読み込める?...
分散
    これからの時代はメニーコアだ 分散だ
!

    Rubyをメニーコア時代のデファクトスクリプト言語に
!

    Regional RubyKaigi
!

    栃木は分散の聖地?
!

        都心からの適度な...
Upcoming SlideShare
Loading in …5
×

of

樽家昌也 (日本Rubyの会)  Slide 1 樽家昌也 (日本Rubyの会)  Slide 2 樽家昌也 (日本Rubyの会)  Slide 3 樽家昌也 (日本Rubyの会)  Slide 4 樽家昌也 (日本Rubyの会)  Slide 5 樽家昌也 (日本Rubyの会)  Slide 6 樽家昌也 (日本Rubyの会)  Slide 7 樽家昌也 (日本Rubyの会)  Slide 8 樽家昌也 (日本Rubyの会)  Slide 9 樽家昌也 (日本Rubyの会)  Slide 10
Upcoming SlideShare
Shadow art
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

樽家昌也 (日本Rubyの会)

Download to read offline

「分散unit/test」

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

樽家昌也 (日本Rubyの会)

  1. 1. 分散test/unit が出来るといいな 樽家 昌也 (日本Rubyの会)
  2. 2. リグレッションテストの憂鬱 終盤になればあまり問題はない 問題は序中盤 ソースコードをガシガシ リファインしたり機能追加する バグもガシガシ追加してる テスト重要! って、言うまでもないですよねー でもテストケースを追加するたびに 時間がどんどん掛るようになってくる・・・・
  3. 3. あるテストの例 (13 tests) >rake test Finished in 227.140242 seconds. ちょっと時間掛かりすぎじゃないか?今後が心配。 top - 17:18:13 up 7:23, 3 users, load average: 0.08, 0.86, 0.58 Tasks: 173 total, 1 running, 171 sleeping, 0 stopped, 1 zombie Cpu0 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 1 0% C 1 : 1.0%us, 0.3%sy, 0 0% i 98 7%id 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 0 3% 0.0%ni, 98.7%id, 0 0% 0 0%hi 0 0% i 0 0% Cpu2 : 0.3%us, 0.0%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st Cpu3 : 0.3%us, 0.3%sy, 0.0%ni, 99.0%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 2580612k total, 1030520k used, 1550092k free, 224804k buffers Swap: 2031608k total, 120k used, 2031488k free, 376652k cached ・・・・ !! CPUが4つもあるのに1つしか使ってないよ ・・・・!! CPUが (略 top - 17:18:20 up 46 days, 9:00, 13 users, load average: 0.18, 0.45, 0.51 Tasks: 353 total, 1 running, 348 sleeping, 4 stopped, 0 zombie Cpu0 : 1.0%us, 0.0%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.3%st Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu5 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu6 : 12.0%us, 7.3%sy, 0.0%ni, 80.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st なんとかせんといかん Cpu8 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu9 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu10 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu11 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu12 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu13 : 0.0%us, 0.7%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu14 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu15 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 16400384k total, 7751860k used, 8648524k free, 257472k buffers Swap: 8191992k total, 220k used, 8191772k free, 4637040k cached
  4. 4. 並列実行test環境ってないの? Java界にはTestNGってのがあるらしい ! そういえばMakeには-jオプションあるけれど ! Rakeにはないなぁ そもそも並列といっても色々単位が。どれがいいの? ! 複数スレッドで ! 複数プロセスで ! 複数計算機で ! でもすくなくともどれか一つは欲しい ! 今は複数計算機使わなくてもいいや(個人的理由) !
  5. 5. 使ってるtest/unitを見てみた 実行開始している所から並列化させればいいんじゃないだろう ! か? どこで開始してるの? そんな時のcaller関数 test本体に入れてみよう module Test どうやらここらしい。 module Unit 早速手を入れる class TestSuite def run(result, &progress_block) run(result &progress block) yield(STARTED, name) 単純にThread使ってみる @tests.each do |test| test.run(result, &progress_block) カレントディレクトリが end yield(FINISHED, name) グローバルスコープだった! end そもそもThreadは時分割で 複数CPU使わないよと突っ込みが入る。
  6. 6. じゃあマルチプロセスで プロセス別れるとプロセス間通信が必要 特に他所のプロセスの変数いじるんだからdRubyがよそう なんとなく完成 def run(result, &progress_block) drbserv = DRb.start_service(nil,result) d_result = DRbObject.new_with_uri(drbserv.uri) >rake test yield(STARTED, name) Finished in 227.140242 seconds. pids = @tests.map do |test| >rake test P= fork { Finished in 80.753652 seconds. test.run(d_result, &progress_block) exit } え? end resultがthread safeじゃない? pids.each {|i| Process.waitpid(i) } 並列化数が制御できてない? drbserv.stop_service() yield(FINISHED, name) end そういうこともあります。
  7. 7. 分散testに向けて 真剣に考えると色々解決しないといけない課題は多い ! ターゲットの選定 ! 分散のモデル化 ! 並列実行されるThreadの導入推進? ! グリッド? ! 分散test/unit っていっても 本質的な全然解決できてない
  8. 8. 添付ライブラリで遊ぼう 分散test/unit が出来るといいな 樽家 昌也 (日本Rubyの会)
  9. 9. 添付ライブラリ弄りは楽しい 広く使われるものなので固い。たまにもうちょっと融通を ! 利かせてほしくなったりする。 Code Reading が自然と出来るし、 ! 弄ってこそ見えてくる事がある。深く読み込める? コードの必然性とか、工夫とか ! Rubyは非常にいじりやすい。 C実装部分以外オープン ! 後付けで変更する部分を定義しなおすだけ。 Binary2.0的な事もできたり。(idからポインタを計算) まだの方は是非一度弄ってみてください
  10. 10. 分散 これからの時代はメニーコアだ 分散だ ! Rubyをメニーコア時代のデファクトスクリプト言語に ! Regional RubyKaigi ! 栃木は分散の聖地? ! 都心からの適度な距離、dRubyな土地だし ! 分散の聖地? ! 分散の聖地はやっぱり分散して存在しないと。 ! もっと分散しましょう

「分散unit/test」

Views

Total views

1,543

On Slideshare

0

From embeds

0

Number of embeds

6

Actions

Downloads

10

Shares

0

Comments

0

Likes

0

×