groonga-query-log 1.3.9 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/doc/text/news.md +19 -0
- data/lib/groonga-query-log/command/check-crash.rb +6 -3
- data/lib/groonga-query-log/command/format-regression-test-logs.rb +29 -22
- data/lib/groonga-query-log/command/run-regression-test.rb +14 -0
- data/lib/groonga-query-log/command/verify-server.rb +9 -0
- data/lib/groonga-query-log/filter-rewriter.rb +23 -0
- data/lib/groonga-query-log/server-verifier.rb +10 -1
- data/lib/groonga-query-log/statistic.rb +16 -7
- data/lib/groonga-query-log/version.rb +1 -1
- data/test/command/test-format-regression-test-logs.rb +39 -10
- data/test/test-filter-rewriter.rb +27 -0
- data/test/test-parser.rb +11 -0
- metadata +33 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 815281fff50a93e07460fc0bb35ea453cfc8b36881f685facf2dc61b6481b564
|
4
|
+
data.tar.gz: 6fb79fe569bb61b35dbe7f876348be12c236791cfc53a25118c134f286974ebe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '083d46ede2bcb5ef1902210dcd2b4b67b95ec475704efd4c3c768827772e67fd667e6d8dc53b0d250ed5a5896366af5e7ff9b42d5708f5c3b0c90b6143d3bd6f'
|
7
|
+
data.tar.gz: 8d5f90bf96d8815f8c4dccdca755d3e49b13f5586b56e90d5ddd3f4af5561480b3394ed3a62c6c5b2ba5662e88fceab1a5d36c07280307a4e25094cc9fd7c8ae
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 1.4.0: 2019-03-13
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* `groonga-query-log-run-regression-test`:
|
8
|
+
|
9
|
+
* Added support for rewriting `"column1 @ \"keyword\" && column2 @~ \"^(?!.*keyword1|keyword2|...).+$\""`.
|
10
|
+
Specify --rewrite-not-or-regular-expression option to enable it.
|
11
|
+
|
12
|
+
### Fixes
|
13
|
+
|
14
|
+
* `groonga-query-log-check-crash`:
|
15
|
+
|
16
|
+
* Fixed missing nil check when request path is "/".
|
17
|
+
|
18
|
+
* `GroongaQueryLog::Statistic`:
|
19
|
+
|
20
|
+
* Fixed missing nil check in `#to_hash` when request path is "/".
|
21
|
+
|
3
22
|
## 1.3.9: 2018-11-20
|
4
23
|
|
5
24
|
### Improvements
|
@@ -209,7 +209,10 @@ module GroongaQueryLog
|
|
209
209
|
end
|
210
210
|
|
211
211
|
def check_query_log_statistic(path, statistic)
|
212
|
-
|
212
|
+
command = statistic.command
|
213
|
+
return if command.nil?
|
214
|
+
|
215
|
+
case command.command_name
|
213
216
|
when "load"
|
214
217
|
@flushed = false
|
215
218
|
@unflushed_statistics << statistic
|
@@ -220,10 +223,10 @@ module GroongaQueryLog
|
|
220
223
|
@flushed = false
|
221
224
|
@unflushed_statistics << statistic
|
222
225
|
when "io_flush"
|
223
|
-
check_io_flush(
|
226
|
+
check_io_flush(command)
|
224
227
|
when "database_unmap"
|
225
228
|
@unflushed_statistics.reject! do |statistic|
|
226
|
-
|
229
|
+
command.name == "load"
|
227
230
|
end
|
228
231
|
when "table_list", "column_list"
|
229
232
|
# ignore
|
@@ -28,7 +28,8 @@ require "groonga-query-log/version"
|
|
28
28
|
module GroongaQueryLog
|
29
29
|
module Command
|
30
30
|
class FormatRegressionTestLogs
|
31
|
-
def initialize
|
31
|
+
def initialize(options={})
|
32
|
+
@output = options[:output] || $stdout
|
32
33
|
end
|
33
34
|
|
34
35
|
def run(command_line)
|
@@ -68,8 +69,8 @@ module GroongaQueryLog
|
|
68
69
|
|
69
70
|
input.each_line do |line|
|
70
71
|
unless line.valid_encoding?
|
71
|
-
puts("invalid encoding line")
|
72
|
-
puts("#{path}:#{input.lineno}:#{line}")
|
72
|
+
@output.puts("invalid encoding line")
|
73
|
+
@output.puts("#{path}:#{input.lineno}:#{line}")
|
73
74
|
next
|
74
75
|
end
|
75
76
|
case line
|
@@ -97,18 +98,18 @@ module GroongaQueryLog
|
|
97
98
|
begin
|
98
99
|
JSON.parse(response_old)
|
99
100
|
rescue JSON::ParserError
|
100
|
-
puts(command)
|
101
|
-
puts("failed to parse old response: #{$!.message}")
|
102
|
-
puts(response_old)
|
101
|
+
@output.puts(command)
|
102
|
+
@output.puts("failed to parse old response: #{$!.message}")
|
103
|
+
@output.puts(response_old)
|
103
104
|
valid = false
|
104
105
|
end
|
105
106
|
|
106
107
|
begin
|
107
108
|
JSON.parse(response_new)
|
108
109
|
rescue JSON::ParserError
|
109
|
-
puts(command)
|
110
|
-
puts("failed to parse new response: #{$!.message}")
|
111
|
-
puts(response_new)
|
110
|
+
@output.puts(command)
|
111
|
+
@output.puts("failed to parse new response: #{$!.message}")
|
112
|
+
@output.puts(response_new)
|
112
113
|
valid = false
|
113
114
|
end
|
114
115
|
|
@@ -125,33 +126,39 @@ module GroongaQueryLog
|
|
125
126
|
PP.pp(JSON.parse(response_new), response_new_file)
|
126
127
|
response_new_file.flush
|
127
128
|
report_command(command)
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
129
|
+
Tempfile.open("response-diff") do |response_diff_file|
|
130
|
+
system("diff",
|
131
|
+
"--label=old",
|
132
|
+
"--label=new",
|
133
|
+
"-u",
|
134
|
+
response_old_file.path,
|
135
|
+
response_new_file.path,
|
136
|
+
out: response_diff_file)
|
137
|
+
response_diff_file.rewind
|
138
|
+
@output.puts(response_diff_file.read)
|
139
|
+
end
|
133
140
|
end
|
134
141
|
end
|
135
142
|
end
|
136
143
|
|
137
144
|
def report_error(command, message, backtrace)
|
138
145
|
report_command(command)
|
139
|
-
puts("Error: #{message}")
|
140
|
-
puts("Backtrace:")
|
141
|
-
puts(backtrace)
|
146
|
+
@output.puts("Error: #{message}")
|
147
|
+
@output.puts("Backtrace:")
|
148
|
+
@output.puts(backtrace)
|
142
149
|
end
|
143
150
|
|
144
151
|
def report_command(command)
|
145
|
-
puts("Command:")
|
146
|
-
puts(command)
|
152
|
+
@output.puts("Command:")
|
153
|
+
@output.puts(command)
|
147
154
|
parsed_command = Groonga::Command::Parser.parse(command)
|
148
|
-
puts("Name: #{parsed_command.name}")
|
149
|
-
puts("Arguments:")
|
155
|
+
@output.puts("Name: #{parsed_command.name}")
|
156
|
+
@output.puts("Arguments:")
|
150
157
|
sorted_arguments = parsed_command.arguments.sort_by do |key, value|
|
151
158
|
key
|
152
159
|
end
|
153
160
|
sorted_arguments.each do |key, value|
|
154
|
-
puts(" #{key}: #{value}")
|
161
|
+
@output.puts(" #{key}: #{value}")
|
155
162
|
end
|
156
163
|
end
|
157
164
|
end
|
@@ -50,6 +50,7 @@ module GroongaQueryLog
|
|
50
50
|
@vector_accessors = []
|
51
51
|
@rewrite_nullable_reference_number = false
|
52
52
|
@nullable_reference_number_accessors = []
|
53
|
+
@rewrite_not_or_regular_expression = false
|
53
54
|
|
54
55
|
@care_order = true
|
55
56
|
@ignored_drilldown_keys = []
|
@@ -187,6 +188,14 @@ module GroongaQueryLog
|
|
187
188
|
"specifying this option multiple times") do |accessor|
|
188
189
|
@nullable_reference_number_accessors << accessor
|
189
190
|
end
|
191
|
+
parser.on("--[no-]rewrite-not-or-regular-expression",
|
192
|
+
"Rewrite 'column1 @ \"keyword1\" && column2 @~ " +
|
193
|
+
"\"^(?!.*keyword2|keyword3|...).+$\"' " +
|
194
|
+
"with 'column1 @ \"keyword1\" &! column2 @ \"keyword2\" " +
|
195
|
+
"&! column2 @ \"keyword3\" &! ...'",
|
196
|
+
"(#{@rewrite_not_or_regular_expression})") do |boolean|
|
197
|
+
@rewrite_not_or_regular_expression = boolean
|
198
|
+
end
|
190
199
|
|
191
200
|
parser.separator("")
|
192
201
|
parser.separator("Comparisons:")
|
@@ -252,6 +261,8 @@ module GroongaQueryLog
|
|
252
261
|
@rewrite_nullable_reference_number,
|
253
262
|
:nullable_reference_number_accessors =>
|
254
263
|
@nullable_reference_number_accessors,
|
264
|
+
:rewrite_not_or_regular_expression =>
|
265
|
+
@rewrite_not_or_regular_expression,
|
255
266
|
:target_command_names => @target_command_names,
|
256
267
|
:read_timeout => @read_timeout,
|
257
268
|
}
|
@@ -547,6 +558,9 @@ module GroongaQueryLog
|
|
547
558
|
command_line << "--nullable-reference-number-accessor"
|
548
559
|
command_line << accessor
|
549
560
|
end
|
561
|
+
if @options[:rewrite_not_or_regular_expression]
|
562
|
+
command_line << "--rewrite-not-or-regular-expression"
|
563
|
+
end
|
550
564
|
if @options[:target_command_names]
|
551
565
|
command_line << "--target-command-names"
|
552
566
|
command_line << @options[:target_command_names].join(",")
|
@@ -230,6 +230,15 @@ module GroongaQueryLog
|
|
230
230
|
@options.rewrite_nullable_reference_number = boolean
|
231
231
|
end
|
232
232
|
|
233
|
+
parser.on("--[no-]rewrite-not-or-regular-expression",
|
234
|
+
"Rewrite 'column1 @ \"keyword1\" && column2 @~ " +
|
235
|
+
"\"^(?!.*keyword2|keyword3|...).+$\"' " +
|
236
|
+
"with 'column1 @ \"keyword1\" &! column2 @ \"keyword2\" " +
|
237
|
+
"&! column2 @ \"keyword3\" &! ...'",
|
238
|
+
"(#{@options.rewrite_not_or_regular_expression?})") do |boolean|
|
239
|
+
@options.rewrite_not_or_regular_expression = boolean
|
240
|
+
end
|
241
|
+
|
233
242
|
parser.on("--nullable-reference-number-accessor=ACCESSOR",
|
234
243
|
"Mark ACCESSOR as rewrite nullable reference number targets",
|
235
244
|
"You can specify multiple accessors by",
|
@@ -35,6 +35,9 @@ module GroongaQueryLog
|
|
35
35
|
if @options[:rewrite_nullable_reference_number]
|
36
36
|
rewritten = rewrite_nullable_reference_number(rewritten)
|
37
37
|
end
|
38
|
+
if @options[:rewrite_not_or_regular_expression]
|
39
|
+
rewritten = rewrite_not_or_regular_expression(rewritten)
|
40
|
+
end
|
38
41
|
rewritten
|
39
42
|
end
|
40
43
|
|
@@ -77,5 +80,25 @@ module GroongaQueryLog
|
|
77
80
|
end
|
78
81
|
end
|
79
82
|
end
|
83
|
+
|
84
|
+
def rewrite_not_or_regular_expression(filter)
|
85
|
+
filter.gsub(/&& *(?<target_column>[a-zA-Z0-9_.]+) *@~ *"(?<pattern>.*?)"/) do |matched|
|
86
|
+
target_column = $LAST_MATCH_INFO[:target_column]
|
87
|
+
pattern = $LAST_MATCH_INFO[:pattern]
|
88
|
+
|
89
|
+
case pattern
|
90
|
+
when /\A(?<header>(?:\^|\\A)\(\?\!\.\*)
|
91
|
+
(?<body>.+)
|
92
|
+
(?<footer>\)\.[+*](?:\$|\\z))\z/x
|
93
|
+
body = $LAST_MATCH_INFO[:body]
|
94
|
+
conditions = body.split("|").collect do |word|
|
95
|
+
"&! #{target_column} @ \"#{word.strip}\""
|
96
|
+
end
|
97
|
+
conditions.join(" ")
|
98
|
+
else
|
99
|
+
matched
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
80
103
|
end
|
81
104
|
end
|
@@ -240,6 +240,7 @@ module GroongaQueryLog
|
|
240
240
|
attr_accessor :vector_accessors
|
241
241
|
attr_writer :rewrite_nullable_reference_number
|
242
242
|
attr_accessor :nullable_reference_number_accessors
|
243
|
+
attr_writer :rewrite_not_or_regular_expression
|
243
244
|
def initialize
|
244
245
|
@groonga1 = GroongaOptions.new
|
245
246
|
@groonga2 = GroongaOptions.new
|
@@ -268,6 +269,7 @@ module GroongaQueryLog
|
|
268
269
|
@vector_accessors = []
|
269
270
|
@rewrite_nullable_reference_number = false
|
270
271
|
@nullable_reference_number_accessors = []
|
272
|
+
@rewrite_not_or_regular_expression = false
|
271
273
|
end
|
272
274
|
|
273
275
|
def request_queue_size
|
@@ -298,6 +300,10 @@ module GroongaQueryLog
|
|
298
300
|
@rewrite_nullable_reference_number
|
299
301
|
end
|
300
302
|
|
303
|
+
def rewrite_not_or_regular_expression?
|
304
|
+
@rewrite_not_or_regular_expression
|
305
|
+
end
|
306
|
+
|
301
307
|
def target_command_name?(name)
|
302
308
|
return false if name.nil?
|
303
309
|
|
@@ -326,7 +332,8 @@ module GroongaQueryLog
|
|
326
332
|
def need_filter_rewrite?
|
327
333
|
rewrite_vector_equal? or
|
328
334
|
rewrite_vector_not_equal_empty_string? or
|
329
|
-
rewrite_nullable_reference_number?
|
335
|
+
rewrite_nullable_reference_number? or
|
336
|
+
rewrite_not_or_regular_expression
|
330
337
|
end
|
331
338
|
|
332
339
|
def to_filter_rewriter_options
|
@@ -339,6 +346,8 @@ module GroongaQueryLog
|
|
339
346
|
rewrite_nullable_reference_number?,
|
340
347
|
:nullable_reference_number_accessors =>
|
341
348
|
nullable_reference_number_accessors,
|
349
|
+
:rewrite_not_or_regular_expression =>
|
350
|
+
rewrite_not_or_regular_expression?,
|
342
351
|
}
|
343
352
|
end
|
344
353
|
end
|
@@ -121,14 +121,17 @@ module GroongaQueryLog
|
|
121
121
|
"return_code" => return_code,
|
122
122
|
"slow" => slow?,
|
123
123
|
}
|
124
|
-
|
125
|
-
|
124
|
+
if command
|
125
|
+
data["command"] = {
|
126
|
+
"raw" => raw_command,
|
127
|
+
"name" => command.name,
|
128
|
+
"parameters" => command_arguments,
|
129
|
+
}
|
130
|
+
else
|
131
|
+
data["command"] = {
|
132
|
+
"raw" => raw_command
|
133
|
+
}
|
126
134
|
end
|
127
|
-
data["command"] = {
|
128
|
-
"raw" => raw_command,
|
129
|
-
"name" => command.name,
|
130
|
-
"parameters" => arguments,
|
131
|
-
}
|
132
135
|
operations = []
|
133
136
|
each_operation do |operation|
|
134
137
|
operation_data = {}
|
@@ -192,5 +195,11 @@ module GroongaQueryLog
|
|
192
195
|
def slow_operation?(elapsed)
|
193
196
|
elapsed >= @slow_operation_threshold
|
194
197
|
end
|
198
|
+
|
199
|
+
def command_arguments
|
200
|
+
command.arguments.collect do |key, value|
|
201
|
+
{"key" => key, "value" => value}
|
202
|
+
end
|
203
|
+
end
|
195
204
|
end
|
196
205
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
# Copyright (C) 2014-2018 Kouhei Sutou <kou@clear-code.com>
|
2
3
|
#
|
3
4
|
# This library is free software; you can redistribute it and/or
|
@@ -29,13 +30,13 @@ class FormatRegressionTestLogsCommandTest < Test::Unit::TestCase
|
|
29
30
|
success = false
|
30
31
|
begin
|
31
32
|
$stdout.reopen(output)
|
32
|
-
|
33
|
+
success = @command.run(command_line)
|
33
34
|
ensure
|
34
35
|
$stdout.reopen(stdout)
|
35
36
|
end
|
36
37
|
output.close
|
37
38
|
output.open
|
38
|
-
[
|
39
|
+
[success, output.read]
|
39
40
|
end
|
40
41
|
|
41
42
|
def fixture_path(*components)
|
@@ -59,10 +60,10 @@ Arguments:
|
|
59
60
|
+++ new
|
60
61
|
@@ -1,4 +1,4 @@
|
61
62
|
[[[2],
|
62
|
-
[[
|
63
|
-
[1,
|
64
|
-
- [2,
|
65
|
-
+ [3,
|
63
|
+
[["_id", "UInt32"], ["message", "Text"]],
|
64
|
+
[1, "log message1"],
|
65
|
+
- [2, "log message2"]]]
|
66
|
+
+ [3, "log message3"]]]
|
66
67
|
OUTPUT
|
67
68
|
assert_equal([true, output],
|
68
69
|
run_command([fixture_path("command-format.log")]))
|
@@ -81,10 +82,10 @@ Arguments:
|
|
81
82
|
+++ new
|
82
83
|
@@ -1,4 +1,4 @@
|
83
84
|
[[[2],
|
84
|
-
[[
|
85
|
-
[1,
|
86
|
-
- [2,
|
87
|
-
+ [3,
|
85
|
+
[["_id", "UInt32"], ["message", "Text"]],
|
86
|
+
[1, "log message1: 焼肉"],
|
87
|
+
- [2, "log message2: 焼肉"]]]
|
88
|
+
+ [3, "log message3: 焼肉"]]]
|
88
89
|
OUTPUT
|
89
90
|
assert_equal([true, output],
|
90
91
|
run_command([fixture_path("url-format.log")]))
|
@@ -108,4 +109,32 @@ Backtrace:
|
|
108
109
|
assert_equal([true, output],
|
109
110
|
run_command([fixture_path("error.log")]))
|
110
111
|
end
|
112
|
+
|
113
|
+
sub_test_case(".new") do
|
114
|
+
def setup
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_output
|
118
|
+
output = StringIO.new
|
119
|
+
options = {:output => output}
|
120
|
+
command = GroongaQueryLog::Command::FormatRegressionTestLogs.new(options)
|
121
|
+
command.run([fixture_path("command-format.log")])
|
122
|
+
expected = <<-OUTPUT
|
123
|
+
Command:
|
124
|
+
select Logs
|
125
|
+
Name: select
|
126
|
+
Arguments:
|
127
|
+
table: Logs
|
128
|
+
--- old
|
129
|
+
+++ new
|
130
|
+
@@ -1,4 +1,4 @@
|
131
|
+
[[[2],
|
132
|
+
[["_id", "UInt32"], ["message", "Text"]],
|
133
|
+
[1, "log message1"],
|
134
|
+
- [2, "log message2"]]]
|
135
|
+
+ [3, "log message3"]]]
|
136
|
+
OUTPUT
|
137
|
+
assert_equal(expected, output.string)
|
138
|
+
end
|
139
|
+
end
|
111
140
|
end
|
@@ -110,4 +110,31 @@ class FilterRewriterTest < Test::Unit::TestCase
|
|
110
110
|
["ref_column.number"]))
|
111
111
|
end
|
112
112
|
end
|
113
|
+
|
114
|
+
class RegularExpressionTest < self
|
115
|
+
def rewrite(filter, enabled = true)
|
116
|
+
super(filter,
|
117
|
+
:rewrite_not_or_regular_expression => enabled)
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_rewrite_one
|
121
|
+
assert_equal("column1 @ \"value1\" &! column2 @ \"value2\"",
|
122
|
+
rewrite("column1 @ \"value1\" && column2 @~ \"^(?!.*value2).+$\""))
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_reference
|
126
|
+
assert_equal("column1 @ \"value1\" &! reference.column2 @ \"value2\"",
|
127
|
+
rewrite("column1 @ \"value1\" && reference.column2 @~ \"^(?!.*value2).+$\""))
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_under_score
|
131
|
+
assert_equal("column1 @ \"value1\" &! column_2 @ \"value_2\"",
|
132
|
+
rewrite("column1 @ \"value1\" && column_2 @~ \"^(?!.*value_2).+$\""))
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_rewrite_multiple
|
136
|
+
assert_equal("column1 @ \"value1\" &! column2 @ \"value2\" &! column2 @ \"value3\" &! column2 @ \"value4\"",
|
137
|
+
rewrite("column1 @ \"value1\" && column2 @~ \"^(?!.*value2 | value3 | value4).+$\""))
|
138
|
+
end
|
139
|
+
end
|
113
140
|
end
|
data/test/test-parser.rb
CHANGED
@@ -43,6 +43,17 @@ class ParserTest < Test::Unit::TestCase
|
|
43
43
|
assert_equal([nil], statistics.collect(&:command))
|
44
44
|
end
|
45
45
|
|
46
|
+
def test_no_command_to_hash
|
47
|
+
statistics = parse(<<-LOG)
|
48
|
+
2012-12-13 11:15:20.628105|0x7fff148c8a50|>/
|
49
|
+
2012-12-13 11:15:21.645119|0x7fff148c8a50|<000000017041150 rc=0
|
50
|
+
LOG
|
51
|
+
expected = {
|
52
|
+
"raw" => "/"
|
53
|
+
}
|
54
|
+
assert_equal(expected, statistics[0].to_hash["command"])
|
55
|
+
end
|
56
|
+
|
46
57
|
private
|
47
58
|
def parse(log)
|
48
59
|
statistics = []
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groonga-query-log
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: groonga-command-parser
|
@@ -154,17 +154,17 @@ description: ''
|
|
154
154
|
email:
|
155
155
|
- kou@clear-code.com
|
156
156
|
executables:
|
157
|
-
- groonga-query-log-
|
157
|
+
- groonga-query-log-format-regression-test-logs
|
158
158
|
- groonga-query-log-run-regression-test
|
159
|
-
- groonga-query-log-analyze-load
|
160
159
|
- groonga-query-log-check-crash
|
161
|
-
- groonga-query-log-
|
162
|
-
- groonga-query-log-verify-server
|
160
|
+
- groonga-query-log-replay
|
163
161
|
- groonga-query-log-check-command-version-compatibility
|
164
|
-
- groonga-query-log-
|
165
|
-
- groonga-query-log-format-regression-test-logs
|
162
|
+
- groonga-query-log-verify-server
|
166
163
|
- groonga-query-log-show-running-queries
|
167
|
-
- groonga-query-log-
|
164
|
+
- groonga-query-log-analyze
|
165
|
+
- groonga-query-log-extract
|
166
|
+
- groonga-query-log-detect-memory-leak
|
167
|
+
- groonga-query-log-analyze-load
|
168
168
|
extensions: []
|
169
169
|
extra_rdoc_files: []
|
170
170
|
files:
|
@@ -280,8 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
280
280
|
- !ruby/object:Gem::Version
|
281
281
|
version: '0'
|
282
282
|
requirements: []
|
283
|
-
|
284
|
-
rubygems_version: 2.5.2.1
|
283
|
+
rubygems_version: 3.0.2
|
285
284
|
signing_key:
|
286
285
|
specification_version: 4
|
287
286
|
summary: Groonga-query-log is a collection of library and tools to process [Groonga](http://groonga.org/)'s
|
@@ -289,35 +288,35 @@ summary: Groonga-query-log is a collection of library and tools to process [Groo
|
|
289
288
|
as a library. You can analyze your Groonga's queries and test with your Groonga's
|
290
289
|
query log by using groonga-query-log as a tool.
|
291
290
|
test_files:
|
292
|
-
- test/
|
293
|
-
- test/
|
294
|
-
- test/test-replayer.rb
|
295
|
-
- test/test-parser.rb
|
296
|
-
- test/helper.rb
|
297
|
-
- test/fixtures/query.log
|
298
|
-
- test/fixtures/n_entries.expected
|
299
|
-
- test/fixtures/other-query.log
|
300
|
-
- test/fixtures/no-report-summary.expected
|
291
|
+
- test/fixtures/reporter/console.expected
|
292
|
+
- test/fixtures/reporter/html.expected
|
301
293
|
- test/fixtures/reporter/json-stream.expected
|
302
294
|
- test/fixtures/reporter/json.expected
|
303
|
-
- test/fixtures/reporter/html.expected
|
304
|
-
- test/fixtures/reporter/console.expected
|
305
|
-
- test/fixtures/regression-test-logs/command-format.log
|
306
|
-
- test/fixtures/regression-test-logs/url-format.log
|
307
|
-
- test/fixtures/regression-test-logs/error.log
|
308
|
-
- test/fixtures/target-commands.expected
|
309
|
-
- test/fixtures/multi.expected
|
310
|
-
- test/fixtures/run-regression-test/query-logs/query.log
|
311
|
-
- test/fixtures/run-regression-test/schema/schema.grn
|
312
|
-
- test/fixtures/run-regression-test/indexes/indexes.grn
|
313
|
-
- test/fixtures/run-regression-test/data/data.grn
|
314
|
-
- test/fixtures/order/-elapsed.expected
|
315
295
|
- test/fixtures/order/start-time.expected
|
316
296
|
- test/fixtures/order/-start-time.expected
|
297
|
+
- test/fixtures/order/-elapsed.expected
|
317
298
|
- test/fixtures/order/elapsed.expected
|
299
|
+
- test/fixtures/no-report-summary.expected
|
300
|
+
- test/fixtures/target-commands.expected
|
301
|
+
- test/fixtures/run-regression-test/data/data.grn
|
302
|
+
- test/fixtures/run-regression-test/query-logs/query.log
|
303
|
+
- test/fixtures/run-regression-test/indexes/indexes.grn
|
304
|
+
- test/fixtures/run-regression-test/schema/schema.grn
|
305
|
+
- test/fixtures/other-query.log
|
306
|
+
- test/fixtures/query.log
|
318
307
|
- test/fixtures/target-tables.expected
|
319
|
-
- test/
|
308
|
+
- test/fixtures/n_entries.expected
|
309
|
+
- test/fixtures/multi.expected
|
310
|
+
- test/fixtures/regression-test-logs/command-format.log
|
311
|
+
- test/fixtures/regression-test-logs/url-format.log
|
312
|
+
- test/fixtures/regression-test-logs/error.log
|
320
313
|
- test/command/test-format-regression-test-logs.rb
|
321
|
-
- test/command/test-extract.rb
|
322
314
|
- test/command/test-analyzer.rb
|
315
|
+
- test/command/test-extract.rb
|
316
|
+
- test/test-response-comparer.rb
|
317
|
+
- test/test-replayer.rb
|
323
318
|
- test/test-incompatibility-detector.rb
|
319
|
+
- test/test-filter-rewriter.rb
|
320
|
+
- test/test-parser.rb
|
321
|
+
- test/helper.rb
|
322
|
+
- test/run-test.rb
|