-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathclient_merge.rb
70 lines (64 loc) · 1.83 KB
/
client_merge.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# ruby client_merge.rb 結果が入ったディレクトリ名 クライアント1の総リクエスト数 クライアント2の総リクエスト数 ...
# 各クライアントの総リクエスト数はgatlingのhtmlなどから持ってきて下さい
# simulation.logのtail -1でも取れるかも
class Log
def initialize(name)
@file = File.open("../"+name+".csv", "w+")
end
def Puts(words)
@file.puts(words)
end
def Close
@file.close
end
end
accesses = []
arg_index = 0
ARGV.each do |arg|
if arg_index == 0
arg_index = arg_index + 1
next
end
accesses.push(arg.to_i)
arg_index = arg_index + 1
end
# リクエスト番号の競合を避けるためにクライアント2以降のリクエスト番号を
# クライアント1からのリクエスト番号に合わせる
(1..arg_index-2).each{|j|
accesses[j] = accesses[j] + accesses[j-1]
}
user_log = Log.new("user")
request_log = Log.new("request")
directories = `ls #{ARGV[0]}`
index = 0
for dir in directories.split("\n")
File.open(ARGV[0] + '/' + dir + "/simulation.log"){|f|
p ARGV[0] + dir + "/simulation.log"
f.each_line{|line|
words = line.split("\t")
if words[0] == "RUN"
next
end
edited_words = words
if index > 0
# クライアント2以降なら、これまでの総リクエスト数を加算
if words[2] == ""
p words
end
access_num = words[2].to_i + accesses[index - 1]
edited_words[2] = access_num.to_s
end
case edited_words[0]
when "USER"
# USERのログならuser.csvに追加
user_log.Puts(edited_words.join(","))
when "REQUEST"
# REQUESTのログならrequest.csvに追加
request_log.Puts(edited_words.join(","))
end
}
}
index = index + 1
end
user_log.Close()
request_log.Close()