internethakai 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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