エキPy読書会 11 (2011/5/17)

日時:

2011/5/17 20:00 - 22:00

範囲:

8章(p221~): コードの管理

エキスパートPythonプログラミングの読書会11回目。 今回はMercurialHGとBuildbotの話でした。HGと他のDVCSの比較や、BuildbotとJenkinsの対比など情報交換しました。相変わらず本を読まない読書会ですね。

質疑応答(覚えてる範囲)

  • Q: 大規模なリポジトリ(数GBとか)の clone はどうするの?
    • A: git はメモリを食い潰して落ちることもあるらしい、Mecurial は大丈夫だった?プロジェクトを目的毎に分割したりして、大規模にならないようにする戦略が良いかも?

  • Q: Mercurial の複数ヘッドはどう運用するの?
    • A: Mercurial は1つのbranchに複数のヘッドが作成される(gitとは異なる仕組み)

    • 複数のヘッドから merge するとそれぞれの parent が見れる

    • hgrc の extensions を設定すると hg glog でグラフが見れる

    • hg serve でサーバ上でグラフが見れる

  • Q: ブランチ作って、いらなくなったら削除するの?
    • A: 削除はできない

    • hg ci --close-branch でクローズはできる

    • hg branches -a でアクティブなブランチだけ見せることもできる

  • Q: 質問忘れた
    • A: bootstrap 実行して、buildout して、環境構築から走らせる、環境構築するだけでテストの価値はあるよ

  • Q: 質問忘れた
    • A: buildbot はコマンドを送りつけて実行する

    • buildout は make するのと同じ

  • Q: buildbot はやっぱり難しいの?
    • A: Jenkins の用途と buildbot の用途は違う

    • Jenkins はもともと単一プラットフォーム/バージョンで簡単にテストするような使い方で、操作のインテグレーションやビジュアルが良い

    • Jenkinsの開発者は多いのでもそのうち buildbot の長所もカバーするかも?

    • buildbot の開発は少人数、CUI 系の設定しかない(長所であり短所でもある)

  • Q: Plone のテストとかはどうするの?
    • A: ビルドスレーブはプラットフォーム単位で分かると良い

    • テストの負荷分散目的でビルドスレーブを分けるのも良い

  • Q: Jenkins でプラットフォームごとのテストはできる?
    • A: マスターサーバから各環境にsshで接続してできる

    • ビルドスレーブからマスターにつなぎに行くbuildbotとは主従関係が逆

  • Q: buildbot で GUI やインタフェース系のテストはできる?
    • A: できる、SeleniumRCを使えばWeb アプリのテストも可能

    • pywinauto でボタン押したりのテストもできる

  • Q: JS のテストはできる?
    • A: JSUnitとか、Seleniumとか、いろいろあるよ

    • 出来るけど、buildbotの仕事ではないのでSeleniumRC等で外だしする方式で。

  • Q: socket のテストとかはどうするの?
    • A: ホワイトボックステストでソケットのダミーを立ち上げて、入出力を比べるなど

    • もしくは、実際のソケット通信を記録しておいて、それを使ってテストすると、テストデータ作成の手間も省けて良さそう

参考