Public | Automated Build

Last pushed: 2 years ago
Short Description
Short description is empty for this repo.
Full Description

v2Test改

実行について

v2test.pyを実行すると対話環境に入ります.

現在実行可能なコマンドは

ready-instances, docker-run, test, docker-restart, kill-instances, search-instances, search-containers, help

の7つです.

ready-instances

ready-instances 20

でインスタンスが20用意されます.

現在はap-northeast-1でami-68728d68を引数個立ち上げるようになっていますが, 今後複数のリージョンに分散させる予定です.

起動を確認し, 実際に接続が可能になるまで待つようになっているので, 時間がかかっても見守ってください.

docker-run

docker-run 5

で、起動した各インスタンス(もし起動しっぱなしのインスタンスがあればそれにも)docker runさせます.

5つまでは安定して動くような動かないような…

4つでは負荷を掛けjsを実行しログを集めるところまで確実に動くことを確認しています.

test

test chrome http://www.mist-t.co.jp/demo/videojs/index.html?src=http://wowza.mistcdn.com:1935/live/Stream1/playlist.m3u8&autoplay=true 100 200

で各コンテナ上でchromeを開き指定のurlを順番に開きます.

ここでは引数はbrowserとurlと含め4つですが, tc設定をする場合7つ書いてください.

各パラメータの詳細については後述.

docker-restart

docker-restart 5

で現在起動中のコンテナを終了し, 新しく各インスタンス上に指定個のコンテナを立てます.

テストを強制終了したい場合にも使えます.

kill-instances

kill-instances

このコマンドはオプションが必要ありません.

v2TestManage以外のTest用インスタンスを全て終了します.

テスト後にこのコマンドの実行を忘れると大変なことになるので注意.

search-instances

search-instances

このコマンドはオプションが必要ありません.

現在起動中(起動が完了していることは保障しません)のインスタンス数を返します.

終了中のインスタンスは数に入らないので, とりあえずこのコマンドで今いくつインスタンスがあるのか確認すると良いでしょう.

search-containers

search-containers

このコマンドはオプションが必要ありません.

現在起動中の各インスタンス上のコンテナ数とその合計を返します.

インスタンス毎落ちている場合はsshタイムアウトまでかかります.

一部コンテナが死んでいても数が把握できます.

v2TestManage上での実行について

v2TestManageはec2-usermist_infra_keyで接続できます.

~/deploy.shを実行すると, 最新版をダウンロードし必要な鍵がコピーされ, 実行準備が整います.

~/keyには鍵など入っているので削除しないでください.

手元での実行について

pip install --upgrade awscli
pip install --upgrade selenium

が必要です。

レポジトリになく実行に必要なファイルのは

/v2Test/etc/key/DockerTest.pem
    (今後リージョン毎に増える予定です)

/v2Test/etc/key/Credential
    (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEYが書いてあるjsonファイル)

この2点です.

/etc/test_configについて

ここではtest コマンドを省略するための設定を書いておくことができます.

{
    "demo": {
        "test": {
            "browser": "chrome",
            "url": "http://www.mist-t.co.jp/demo/videojs/index.html?src=http://wowza.mistcdn.com:1935/live/Stream1/playlist.m3u8&autoplay=true",
            "rand": "100",
            "wait": "200",
            "query_referer": "http://www.mist-t.co.jp"
        }
    },
    "test":{
        "test":{
            "browser": "chrome",
            "url": "http://preview-players.brightcove.net/v1/accounts/4103911237001/players/aabff1d6-d46f-4810-b865-7ec7cd51db85/preview/embeds/default/master/index.html",
            "rand": "600",
            "wait": "900"
        },
    "tc":{
        "delay": [10],
        "packet_loss": [3],
        "bandwidth": [1000000000]
        }
    }
}

以上のように書いておいた場合,

test demo

では

test chrome http://www.mist-t.co.jp/demo/videojs/index.html?src=http://wowza.mistcdn.com:1935/live/Stream1/playlist.m3u8&autoplay=true 100 200

と同様に実行されます.

test test

では

test chrome http://preview-players.brightcove.net/v1/accounts/4103911237001/players/aabff1d6-d46f-4810-b865-7ec7cd51db85/preview/embeds/default/master/index.html 600 900 10 3 1000000000

と同様に実行されます.

test_configのオプションの意味

まず前提として現在デフォルト値機能ありません.
なので、testを設定する場合全ての項目について設定してください.

また, query_refererはコマンドでは受け付けていません.
test_configにquery_refererを書いておくと、testの開始時から終了時までのrefererのログがMistClientLogから集められます.
MistCDN負担率などを調べたい時に利用してください.

tcはそれ自体は設定されていない場合には負荷設定を飛ばすようになっていますが,
こちらも1つでも制限を掛けたい場合外の値も何かしら設定してください.

test

browser: 使用するブラウザを指定できます. が, firefoxはどうもうまく動かないようです.

url: ブラウザが開くurlです.開くだけです.

rand: urlを開くまでに0-rand(sec)でrandomに待ちます.

wait: rand待った後urlを開いてから閉じるまでwait(sec)待ちます.

seed:(optional): randのための乱数のseedを指定します

tc (optional)

delay: 各ブラウザにリスト内のどれかの数値(ms)でrandomに遅延を設定します

packet_loss: 各ブラウザにリスト内のどれかの数値(%)でrandomにパケットロスを設定します

bandwidth: 各ブラウザにリスト内のどれかの数値(kbit)でrandomに帯域制限を設定します

seed:(optional): delay, packet_loss, bandwidthの選択のための乱数のseedを指定します

ログについて

jsonを返すことを期待するjsの実行結果については, result以下のtest'starttime''endtime'.jsonというjsonファイルに保存されます.

DynamoDB上のMistClientLogからのログについては, result以下のDynamo'starttime''endtime'.csvというcsvファイルに保存されます.

注意して欲しいのは, 前者は年月日時分秒(v2TestManage上であればUTC)で並べただけの数列であり, 後者はUNIX TIMEであるということです.

python demo.pyについて

demo用の簡易スクリプトです.
中身はcore.py内のものを順番に実行しているだけです.

以下に実際に起こる事を書いておきます.

今稼動中のインスタンスを全て終了します.

インスタンスを20台起動します.

各インスタンス5つずつコンテナを起動します.

100ブラウザでtest demoを実行します.(実行開始から実際にブラウザを開き始めるまでおよそ5分)

デモ終了後, 全てのインスタンスを終了します.

Docker Pull Command
Owner
misttechnologies
Source Repository

Comments (0)