internethakai 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,6 @@
1
+ 0.2.2:
2
+ * ファイルからランダムに選択した変数を使用できる機能(var_file, var_name)を追加。
3
+
1
4
  0.2.1:
2
5
  * 実行時オプションのバグを修正
3
6
  * -g オプション、-n オプションを追加
data/README CHANGED
@@ -1,4 +1,4 @@
1
- = DESTROY YOUR INTERNET!!
1
+ = DESTROY YOUR INTERNET
2
2
  = 負荷試験スクリプト: インターネット破壊
3
3
 
4
4
  == インターネット破壊とは何か
@@ -34,6 +34,7 @@ CUIで使える高機能な負荷試験スクリプトです。
34
34
 
35
35
  === シナリオの基本項目
36
36
  YAMLの連想配列で設定項目を指定します。指定すべきキー名について解説します。
37
+ まずは hakaigen コマンドによる自動生成を試してみてください。
37
38
 
38
39
  [loop] 各シナリオのループ回数を指定します。
39
40
  [max_request] HTTPクライアントの数を指定します。max_requestが10であればHTTPクライアントを10作成し、10のクライアントが同時にリクエストします。なおここで設定した値は全プロセスの合計値です。おすすめの値は "100" です(1プロセスあたり100コネクションくらいになるように調整しましょう)。
@@ -113,7 +114,23 @@ YAMLの連想配列で設定項目を指定します。指定すべきキー名
113
114
  ==== 変数の設定
114
115
  動的な変数を使用することができます。ユーザーIDなどを動的に取得したい場合に利用してください。
115
116
 
116
- 変数を設定するには、class に SetVarAction を指定します。
117
+
118
+ ==== ファイルからランダムに取得
119
+ user_id などをファイルからランダムに取得して使用できます。
120
+ ファイルには改行区切りで、値のリストを書いておきます。シナリオごとに異なる値がセットされます。
121
+ ファイルの名前、および変数の名前は var_file、var_name というキー名でセットしてください。
122
+ var_file、var_name はactions の外に書きます。
123
+
124
+ 例.
125
+ var_file: ./ids
126
+ var_name: user_id
127
+ actions:
128
+ # user_id がファイルからランダムに選択される
129
+ - path: /somepath?user_id=%(user_id)%
130
+
131
+
132
+ ==== レスポンスで変数を設定
133
+ レスポンスを使って変数を設定するには、class に SetVarAction を指定します。
117
134
 
118
135
  例.
119
136
  - path: /main.php/special/person
@@ -143,9 +160,13 @@ YAMLの連想配列で設定項目を指定します。指定すべきキー名
143
160
 
144
161
  battle_id というキー名に正規表現の(\d+)の部分がセットされます。これに続くアクションのパス名やPOSTパラメーターに変数を使用できます。
145
162
 
163
+ 例.
164
+ - path: /main.php/hoge/index?id=%(battle_id)%
165
+
146
166
 
147
167
  ==== WAIT
148
168
  リクエストの際に、わざと少し待たせることができます。wait というキーを指定すると、リクエストを送る前に指定時間何もしないで待ちます。単位は秒です。
169
+ (この機能はスレッドモードでは使用できません)
149
170
  例.
150
171
  - path: /main.php/somepath/
151
172
  wait: 1.5
@@ -292,11 +292,6 @@ module InternetHakai
292
292
  @timer.attach(Rev::Loop::default)
293
293
  @timer.disable
294
294
  @timer.on_timer(&method(:fire))
295
- else
296
- def self.run
297
- sleep @opt['wait']
298
- @oldrun.call
299
- end
300
295
  end
301
296
  end
302
297
  end
@@ -13,6 +13,22 @@ module InternetHakai
13
13
  end
14
14
  actconfig
15
15
  end
16
+ if(config.has_key?('var_file') && config.has_key?('var_name'))
17
+ s = File::open(config['var_file']){|io|io.read}
18
+ if s
19
+ lines = s.split("\n")
20
+ @@var_ids = lines.sort_by{rand}
21
+ end
22
+ @@var_name = config['var_name']
23
+ def set_var_id
24
+ ids = @@var_ids
25
+ id = ids[@performance_id % ids.size]
26
+ set_var(@@var_name, id)
27
+ end
28
+ else
29
+ def set_var_id
30
+ end
31
+ end
16
32
  config
17
33
  end
18
34
  @@vars = Hash::new
@@ -44,10 +60,20 @@ module InternetHakai
44
60
  str
45
61
  end
46
62
  def handle_url client, url, opt
47
- opt['use_var'] ? extend_vars(url) : url
63
+ if opt['use_var']
64
+ set_var_id
65
+ extend_vars(url)
66
+ else
67
+ url
68
+ end
48
69
  end
49
70
  def handle_body client, body, opt
50
- opt['use_var'] ? extend_vars2(body) : body
71
+ if opt['use_var']
72
+ set_var_id
73
+ extend_vars2(body)
74
+ else
75
+ body
76
+ end
51
77
  end
52
78
  def handle_client client
53
79
  @client = client
data/lib/internethakai.rb CHANGED
@@ -18,7 +18,7 @@ require 'internethakai/generator'
18
18
 
19
19
  module InternetHakai
20
20
  # インターネット破壊
21
- VERSION = '0.2.1'
21
+ VERSION = '0.2.2'
22
22
  GET="GET"
23
23
  POST="POST"
24
24
  PUT="PUT"
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 1
9
- version: 0.2.1
8
+ - 2
9
+ version: 0.2.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - takada-at
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-03-04 00:00:00 +09:00
17
+ date: 2011-03-09 00:00:00 +09:00
18
18
  default_executable: internethakai
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency