groonga-query-log 1.1.5 → 1.1.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ecc113262236c80addf12b23cf930c1d85cee8ae
4
- data.tar.gz: b168f92861f723e4ede99f5b023a48050b52e8d3
3
+ metadata.gz: fd3f1d02cb11d8b4cf26fd7cbc1418a56e6ef7d9
4
+ data.tar.gz: f9b7f8f92de3af6e8652db79e53652ee84a4ee1d
5
5
  SHA512:
6
- metadata.gz: 6bdb3eabb1ad973af6a1f820ddf8263f14e05543db0864523b41a44e25ff4e84f220ec073778575067308677b41380adc4056e7f99141e51ad6c79b79d5c2fcd
7
- data.tar.gz: a4712efb262754f0563b3458d7e25788a2844b4483d0cbb3cb31ba371402ce5aece3ec5e1c2ade38a5644340e6da91e800edcb03463e62add6d411b28d1b62f2
6
+ metadata.gz: 3a38dfe89fc55a24c9860aa2c8cde1c2886eb3c6b11d356bf979f4074aed0ec41ac3f5cc09dfec8f9eb79b66e128b318feb08662f8a87db1a7d61951677e35fb
7
+ data.tar.gz: 2ef01816c6484747c88935637f870aaccd1a0cc7580a14ee639cc0f78b1b95b0cbc52bd0129be8a2da8a9af955d0a0b622a689a3cad7839de8297c3b90656fda
@@ -1,5 +1,19 @@
1
1
  # News
2
2
 
3
+ ## 1.1.6: 2015-08-19
4
+
5
+ ### Improvements
6
+
7
+ * groonga-query-log-run-regression-test: Added `--no-care-order`
8
+ option that doesn't care order of records in response.
9
+ * groonga-query-log-verify-server: Added `--no-care-order`
10
+ option that doesn't care order of records in response.
11
+ * groonga-query-log-verify-server: Added the following commands to
12
+ the default target command names:
13
+ * `logical_count`
14
+ * `logical_range_filter`
15
+ * `logical_select`
16
+
3
17
  ## 1.1.5: 2015-08-12
4
18
 
5
19
  ### Improvements
@@ -26,167 +26,167 @@ require "groonga/query-log/command-line-utils"
26
26
  module Groonga
27
27
  module QueryLog
28
28
  module Command
29
- class Extract
30
- include CommandLineUtils
29
+ class Extract
30
+ include CommandLineUtils
31
31
 
32
- class Error < StandardError
33
- end
34
-
35
- attr_accessor :options
36
- attr_reader :option_parser
32
+ class Error < StandardError
33
+ end
37
34
 
38
- def initialize
39
- @options = nil
40
- @option_parser = nil
41
- setup_options
42
- end
35
+ attr_accessor :options
36
+ attr_reader :option_parser
43
37
 
44
- # Executes extractor for groonga's query logs.
45
- # "groonga-query-log-extract" command runs this method.
46
- #
47
- # @example
48
- # extractor = Groonga::QueryLog::Command::Extract.new
49
- # extractor.run("--output", "commands.output",
50
- # "--command", "select",
51
- # "query.log")
52
- #
53
- # If only paths of query log files are specified,
54
- # this method prints command(s) of them to console.
55
- #
56
- # @param [Array<String>] arguments arguments for
57
- # groonga-query-log-extract. Please execute
58
- # "groonga-query-log-extract --help" or see #setup_options.
59
- def run(arguments)
60
- begin
61
- log_paths = @option_parser.parse!(arguments)
62
- rescue OptionParser::ParseError
63
- $stderr.puts($!.message)
64
- return false
38
+ def initialize
39
+ @options = nil
40
+ @option_parser = nil
41
+ setup_options
65
42
  end
66
43
 
67
- if log_paths.empty?
68
- unless log_via_stdin?
69
- $stderr.puts("Error: Please specify input log files.")
44
+ # Executes extractor for groonga's query logs.
45
+ # "groonga-query-log-extract" command runs this method.
46
+ #
47
+ # @example
48
+ # extractor = Groonga::QueryLog::Command::Extract.new
49
+ # extractor.run("--output", "commands.output",
50
+ # "--command", "select",
51
+ # "query.log")
52
+ #
53
+ # If only paths of query log files are specified,
54
+ # this method prints command(s) of them to console.
55
+ #
56
+ # @param [Array<String>] arguments arguments for
57
+ # groonga-query-log-extract. Please execute
58
+ # "groonga-query-log-extract --help" or see #setup_options.
59
+ def run(arguments)
60
+ begin
61
+ log_paths = @option_parser.parse!(arguments)
62
+ rescue OptionParser::ParseError
63
+ $stderr.puts($!.message)
70
64
  return false
71
65
  end
72
- log = $stdin
73
- else
74
- log = log_paths
75
- end
76
66
 
77
- if @options.output_path
78
- File.open(@options.output_path, "w") do |output|
79
- extract(log, output)
67
+ if log_paths.empty?
68
+ unless log_via_stdin?
69
+ $stderr.puts("Error: Please specify input log files.")
70
+ return false
71
+ end
72
+ log = $stdin
73
+ else
74
+ log = log_paths
80
75
  end
81
- else
82
- extract(log, $stdout)
83
- end
84
76
 
85
- true
86
- end
87
-
88
- private
89
- def setup_options
90
- @options = OpenStruct.new
91
- @options.unify_format = nil
92
- @options.commands = []
93
- @options.exclude_commands = []
94
- @options.output_path = nil
95
- @option_parser = OptionParser.new do |parser|
96
- parser.version = VERSION
97
- parser.banner += " QUERY_LOG1 ..."
98
-
99
- available_formats = ["uri", "command"]
100
- parser.on("--unify-format=FORMAT",
101
- available_formats,
102
- "Unify command format to FORMAT.",
103
- "(#{available_formats.join(', ')})",
104
- "[not unify]") do |format|
105
- @options.unify_format = format
77
+ if @options.output_path
78
+ File.open(@options.output_path, "w") do |output|
79
+ extract(log, output)
80
+ end
81
+ else
82
+ extract(log, $stdout)
106
83
  end
107
84
 
108
- parser.on("--command=COMMAND",
109
- "Extract only COMMAND.",
110
- "To extract one or more commands,",
111
- "specify this command a number of times.",
112
- "Use /.../ as COMMAND to match command with regular expression.",
113
- "[all commands]") do |command|
114
- case command
115
- when /\A\/(.*)\/(i)?\z/
116
- @options.commands << Regexp.new($1, $2 == "i")
117
- when
118
- @options.commands << command
85
+ true
86
+ end
87
+
88
+ private
89
+ def setup_options
90
+ @options = OpenStruct.new
91
+ @options.unify_format = nil
92
+ @options.commands = []
93
+ @options.exclude_commands = []
94
+ @options.output_path = nil
95
+ @option_parser = OptionParser.new do |parser|
96
+ parser.version = VERSION
97
+ parser.banner += " QUERY_LOG1 ..."
98
+
99
+ available_formats = ["uri", "command"]
100
+ parser.on("--unify-format=FORMAT",
101
+ available_formats,
102
+ "Unify command format to FORMAT.",
103
+ "(#{available_formats.join(', ')})",
104
+ "[not unify]") do |format|
105
+ @options.unify_format = format
119
106
  end
120
- end
121
107
 
122
- parser.on("--exclude-command=COMMAND",
123
- "Don't extract COMMAND.",
124
- "To ignore one or more commands,",
125
- "specify this command a number of times.",
126
- "Use /.../ as COMMAND to match command with regular expression.",
127
- "[no commands]") do |command|
128
- case command
129
- when /\A\/(.*)\/(i)?\z/
130
- @options.exclude_commands << Regexp.new($1, $2 == "i")
131
- when
132
- @options.exclude_commands << command
108
+ parser.on("--command=COMMAND",
109
+ "Extract only COMMAND.",
110
+ "To extract one or more commands,",
111
+ "specify this command a number of times.",
112
+ "Use /.../ as COMMAND to match command with regular expression.",
113
+ "[all commands]") do |command|
114
+ case command
115
+ when /\A\/(.*)\/(i)?\z/
116
+ @options.commands << Regexp.new($1, $2 == "i")
117
+ when
118
+ @options.commands << command
119
+ end
133
120
  end
134
- end
135
121
 
136
- parser.on("--output=PATH",
137
- "Output to PATH.",
138
- "[standard output]") do |path|
139
- @options.output_path = path
122
+ parser.on("--exclude-command=COMMAND",
123
+ "Don't extract COMMAND.",
124
+ "To ignore one or more commands,",
125
+ "specify this command a number of times.",
126
+ "Use /.../ as COMMAND to match command with regular expression.",
127
+ "[no commands]") do |command|
128
+ case command
129
+ when /\A\/(.*)\/(i)?\z/
130
+ @options.exclude_commands << Regexp.new($1, $2 == "i")
131
+ when
132
+ @options.exclude_commands << command
133
+ end
134
+ end
135
+
136
+ parser.on("--output=PATH",
137
+ "Output to PATH.",
138
+ "[standard output]") do |path|
139
+ @options.output_path = path
140
+ end
140
141
  end
141
142
  end
142
- end
143
143
 
144
- def extract(log, output)
145
- if log.instance_of?(Array)
146
- log.each do |log_path|
147
- File.open(log_path) do |log_file|
148
- extract_command(log_file, output)
144
+ def extract(log, output)
145
+ if log.instance_of?(Array)
146
+ log.each do |log_path|
147
+ File.open(log_path) do |log_file|
148
+ extract_command(log_file, output)
149
+ end
149
150
  end
151
+ else
152
+ extract_command(log, output)
150
153
  end
151
- else
152
- extract_command(log, output)
153
154
  end
154
- end
155
155
 
156
- def extract_command(log, output)
157
- parser = Groonga::QueryLog::Parser.new
158
- parser.parse(log) do |statistic|
159
- command = statistic.command
160
- next unless target?(command)
161
- command_text = nil
162
- case @options.unify_format
163
- when "uri"
164
- command_text = command.to_uri_format
165
- when "command"
166
- command_text = command.to_command_format
167
- else
168
- command_text = statistic.raw_command
156
+ def extract_command(log, output)
157
+ parser = Groonga::QueryLog::Parser.new
158
+ parser.parse(log) do |statistic|
159
+ command = statistic.command
160
+ next unless target?(command)
161
+ command_text = nil
162
+ case @options.unify_format
163
+ when "uri"
164
+ command_text = command.to_uri_format
165
+ when "command"
166
+ command_text = command.to_command_format
167
+ else
168
+ command_text = statistic.raw_command
169
+ end
170
+ output.puts(command_text)
169
171
  end
170
- output.puts(command_text)
171
172
  end
172
- end
173
173
 
174
- def target?(command)
175
- name = command.name
176
- target_commands = @options.commands
177
- exclude_commands = @options.exclude_commands
174
+ def target?(command)
175
+ name = command.name
176
+ target_commands = @options.commands
177
+ exclude_commands = @options.exclude_commands
178
178
 
179
- unless target_commands.empty?
180
- return target_commands.any? {|target_command| target_command === name}
181
- end
179
+ unless target_commands.empty?
180
+ return target_commands.any? {|target_command| target_command === name}
181
+ end
182
182
 
183
- unless exclude_commands.empty?
184
- return (not exclude_commands.any? {|exclude_command| exclude_command === name})
185
- end
183
+ unless exclude_commands.empty?
184
+ return (not exclude_commands.any? {|exclude_command| exclude_command === name})
185
+ end
186
186
 
187
- true
187
+ true
188
+ end
188
189
  end
189
190
  end
190
- end
191
191
  end
192
192
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2014-2015 Kouhei Sutou <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -43,6 +43,7 @@ module Groonga
43
43
  @run_queries = true
44
44
  @skip_finished_queries = false
45
45
  @output_query_log = false
46
+ @care_order = true
46
47
  end
47
48
 
48
49
  def run(command_line)
@@ -124,6 +125,10 @@ module Groonga
124
125
  "Output query log in verified target Groonga servers") do
125
126
  @output_query_log = true
126
127
  end
128
+ parser.on("--no-care-order",
129
+ "Don't care order of select response records") do
130
+ @care_order = false
131
+ end
127
132
 
128
133
  parser
129
134
  end
@@ -148,7 +153,8 @@ module Groonga
148
153
 
149
154
  def tester_options
150
155
  options = {
151
- :n_clients => @n_clients,
156
+ :n_clients => @n_clients,
157
+ :care_order => @care_order,
152
158
  }
153
159
  directory_options.merge(options)
154
160
  end
@@ -372,8 +378,9 @@ module Groonga
372
378
  "--groonga2-protocol=http",
373
379
  "--target-command-name=select",
374
380
  "--output", test_log_path.to_s,
375
- query_log_path.to_s,
376
381
  ]
382
+ command_line << "--no-care-order" if @options[:care_order] == false
383
+ command_line << query_log_path.to_s
377
384
  verify_serer = VerifyServer.new
378
385
  verify_serer.run(command_line)
379
386
  end
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2013-2014 Kouhei Sutou <kou@clear-code.com>
3
+ # Copyright (C) 2013-2015 Kouhei Sutou <kou@clear-code.com>
4
4
  #
5
5
  # This library is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the GNU Lesser General Public
@@ -124,6 +124,11 @@ module Groonga
124
124
  @options.target_command_names = names
125
125
  end
126
126
 
127
+ parser.on("--no-care-order",
128
+ "Don't care order of select response records") do
129
+ @options.care_order = false
130
+ end
131
+
127
132
  parser.on("--output=PATH",
128
133
  "Output results to PATH",
129
134
  "[stdout]") do |path|
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2014-2015 Kouhei Sutou <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -17,10 +17,12 @@
17
17
  module Groonga
18
18
  module QueryLog
19
19
  class ResponseComparer
20
- def initialize(command, response1, response2)
20
+ def initialize(command, response1, response2, options={})
21
21
  @command = command
22
22
  @response1 = response1
23
23
  @response2 = response2
24
+ @options = options
25
+ @options[:care_order] = true if @options[:care_order].nil?
24
26
  end
25
27
 
26
28
  def same?
@@ -32,7 +34,7 @@ module Groonga
32
34
  end
33
35
  else
34
36
  case @command.name
35
- when "select"
37
+ when "select", "logical_select"
36
38
  same_select_response?
37
39
  else
38
40
  same_response?
@@ -56,16 +58,26 @@ module Groonga
56
58
  end
57
59
 
58
60
  def same_select_response?
59
- if random_sort?
60
- same_random_sort_response?
61
- elsif all_output_columns?
62
- same_all_output_columns?
61
+ if care_order?
62
+ if all_output_columns?
63
+ same_all_output_columns?
64
+ else
65
+ same_response?
66
+ end
63
67
  else
64
- same_response?
68
+ same_size_response?
65
69
  end
66
70
  end
67
71
 
72
+ def care_order?
73
+ return false unless @options[:care_order]
74
+ return false if random_sort?
75
+
76
+ true
77
+ end
78
+
68
79
  def random_score?
80
+ return false unless @command.respond_to?(:scorer)
69
81
  @command.scorer == "_score=rand()"
70
82
  end
71
83
 
@@ -81,7 +93,7 @@ module Groonga
81
93
  normalized_sort_items.include?("_score")
82
94
  end
83
95
 
84
- def same_random_sort_response?
96
+ def same_size_response?
85
97
  records_result1 = @response1.body[0] || []
86
98
  records_result2 = @response2.body[0] || []
87
99
  return false if records_result1.size != records_result2.size
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2013-2014 Kouhei Sutou <kou@clear-code.com>
3
+ # Copyright (C) 2013-2015 Kouhei Sutou <kou@clear-code.com>
4
4
  #
5
5
  # This library is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the GNU Lesser General Public
@@ -76,7 +76,7 @@ module Groonga
76
76
  begin
77
77
  verify_command(groonga1_client, groonga2_client,
78
78
  statistic.command)
79
- rescue Groonga::Client::Error
79
+ rescue
80
80
  log_client_error($!) do
81
81
  $stderr.puts(statistic.command.original_source)
82
82
  end
@@ -108,7 +108,11 @@ module Groonga
108
108
  command["output_type"] = :json
109
109
  response1 = groonga1_client.execute(command)
110
110
  response2 = groonga2_client.execute(command)
111
- comparer = ResponseComparer.new(command, response1, response2)
111
+ compare_options = {
112
+ :care_order => @options.care_order,
113
+ }
114
+ comparer = ResponseComparer.new(command, response1, response2,
115
+ compare_options)
112
116
  unless comparer.same?
113
117
  @different_results.push([command, response1, response2])
114
118
  end
@@ -141,6 +145,7 @@ module Groonga
141
145
  attr_writer :disable_cache
142
146
  attr_accessor :target_command_names
143
147
  attr_accessor :output_path
148
+ attr_accessor :care_order
144
149
  def initialize
145
150
  @groonga1 = GroongaOptions.new
146
151
  @groonga2 = GroongaOptions.new
@@ -148,7 +153,13 @@ module Groonga
148
153
  @request_queue_size = nil
149
154
  @disable_cache = false
150
155
  @output_path = nil
151
- @target_command_names = ["select"]
156
+ @target_command_names = [
157
+ "logical_count",
158
+ "logical_range_filter",
159
+ "logical_select",
160
+ "select",
161
+ ]
162
+ @care_order = true
152
163
  end
153
164
 
154
165
  def request_queue_size
@@ -18,6 +18,6 @@
18
18
 
19
19
  module Groonga
20
20
  module QueryLog
21
- VERSION = "1.1.5"
21
+ VERSION = "1.1.6"
22
22
  end
23
23
  end
@@ -2,6 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
  #
4
4
  # Copyright (C) 2012 Haruka Yoshihara <yoshihara@clear-code.com>
5
+ # Copyright (C) 2015 Kouhei Sutou <kou@clear-code.com>
5
6
  #
6
7
  # This library is free software; you can redistribute it and/or
7
8
  # modify it under the terms of the GNU Lesser General Public
@@ -18,17 +19,17 @@
18
19
 
19
20
  require "stringio"
20
21
  require "groonga/command"
21
- require "groonga/query-log/extractor"
22
+ require "groonga/query-log/command/extract"
22
23
 
23
- class TestExtractor < Test::Unit::TestCase
24
+ class ExtractCommandTest < Test::Unit::TestCase
24
25
  setup
25
26
  def setup_fixtures
26
- @fixtures_path = File.join(File.dirname(__FILE__), "fixtures")
27
+ @fixtures_path = File.join(File.dirname(__FILE__), "..", "fixtures")
27
28
  @query_log_path = File.join(@fixtures_path, "query.log")
28
29
  end
29
30
 
30
31
  def setup
31
- @extractor = Groonga::QueryLog::Extractor.new
32
+ @extract_command = Groonga::QueryLog::Command::Extract.new
32
33
  end
33
34
 
34
35
  class TestInputFile < self
@@ -102,7 +103,7 @@ EOC
102
103
  Tempfile.open("extract.output") do |output|
103
104
  open_error_output do |error|
104
105
  arguments << "--output" << output.path
105
- if @extractor.run(arguments)
106
+ if @extract_command.run(arguments)
106
107
  File.read(output.path)
107
108
  else
108
109
  File.read(error.path)
@@ -137,7 +138,7 @@ EOL
137
138
  end
138
139
 
139
140
  def test_command_format
140
- @extractor.options.unify_format = "command"
141
+ @extract_command.options.unify_format = "command"
141
142
  expected_formatted_command = "select --output_columns \"_key,name\""+
142
143
  " --query \"follower:@groonga\"" +
143
144
  " --table \"Users\"\n"
@@ -145,7 +146,7 @@ EOL
145
146
  end
146
147
 
147
148
  def test_uri_format
148
- @extractor.options.unify_format = "uri"
149
+ @extract_command.options.unify_format = "uri"
149
150
  expected_formatted_command = "/d/select?output_columns=_key%2Cname" +
150
151
  "&query=follower%3A%40groonga" +
151
152
  "&table=Users\n"
@@ -153,7 +154,7 @@ EOL
153
154
  end
154
155
 
155
156
  def test_not_unify
156
- @extractor.options.unify_format = nil
157
+ @extract_command.options.unify_format = nil
157
158
  expected_formatted_command = "select --table Users" +
158
159
  " --query follower:@groonga" +
159
160
  " --output_columns _key,name\n"
@@ -163,20 +164,20 @@ EOL
163
164
  private
164
165
  def extract
165
166
  output = StringIO.new
166
- @extractor.send(:extract, @log, output)
167
+ @extract_command.send(:extract, @log, output)
167
168
  output.string
168
169
  end
169
170
  end
170
171
 
171
172
  class TestTarget < self
172
173
  def test_include
173
- @extractor.options.commands = ["register"]
174
+ @extract_command.options.commands = ["register"]
174
175
  assert_true(target?("register"))
175
176
  assert_false(target?("dump"))
176
177
  end
177
178
 
178
179
  def test_exclude
179
- @extractor.options.exclude_commands = ["dump"]
180
+ @extract_command.options.exclude_commands = ["dump"]
180
181
  assert_true(target?("register"))
181
182
  assert_false(target?("dump"))
182
183
  end
@@ -187,13 +188,13 @@ EOL
187
188
  end
188
189
 
189
190
  def test_regular_expression_include
190
- @extractor.options.commands = [/table/]
191
+ @extract_command.options.commands = [/table/]
191
192
  assert_true(target?("table_create"))
192
193
  assert_false(target?("dump"))
193
194
  end
194
195
 
195
196
  def test_regular_expression_exclude
196
- @extractor.options.exclude_commands = [/table/]
197
+ @extract_command.options.exclude_commands = [/table/]
197
198
  assert_false(target?("table_create"))
198
199
  assert_true(target?("dump"))
199
200
  end
@@ -202,7 +203,7 @@ EOL
202
203
  def target?(name)
203
204
  command_class = Groonga::Command.find(name)
204
205
  command = command_class.new(name, [])
205
- @extractor.send(:target?, command)
206
+ @extract_command.send(:target?, command)
206
207
  end
207
208
  end
208
209
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2014-2015 Kouhei Sutou <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -16,14 +16,15 @@
16
16
 
17
17
  class ResponseComparerTest < Test::Unit::TestCase
18
18
  private
19
- def comparer(response1, response2)
19
+ def comparer(response1, response2, options={})
20
20
  response1 = normalize_response(response1)
21
21
  response2 = normalize_response(response2)
22
- Groonga::QueryLog::ResponseComparer.new(@command, response1, response2)
22
+ Groonga::QueryLog::ResponseComparer.new(@command, response1, response2,
23
+ options)
23
24
  end
24
25
 
25
- def same?(response1, response2)
26
- comparer(response1, response2).same?
26
+ def same?(response1, response2, options={})
27
+ comparer(response1, response2, options).same?
27
28
  end
28
29
 
29
30
  def response(body)
@@ -105,7 +106,7 @@ class ResponseComparerTest < Test::Unit::TestCase
105
106
  private
106
107
  def random_score?(scorer)
107
108
  @command["scorer"] = scorer
108
- comparer([[[0]]], [[[0]]]).send(:random_score?)
109
+ comparer([[[0], []]], [[[0], []]]).send(:random_score?)
109
110
  end
110
111
  end
111
112
  end
@@ -115,7 +116,7 @@ class ResponseComparerTest < Test::Unit::TestCase
115
116
  private
116
117
  def score_sort?(sortby)
117
118
  @command["sortby"] = sortby
118
- comparer([[[0]]], [[[0]]]).send(:score_sort?)
119
+ comparer([[[0], []]], [[[0], []]]).send(:score_sort?)
119
120
  end
120
121
 
121
122
  class NoScoreTest < self
@@ -224,11 +225,20 @@ class ResponseComparerTest < Test::Unit::TestCase
224
225
  private
225
226
  def all_output_columns?(output_columns)
226
227
  @command["output_columns"] = output_columns if output_columns
227
- comparer([[[0]]], [[[0]]]).send(:all_output_columns?)
228
+ comparer([[[0], []]], [[[0], []]]).send(:all_output_columns?)
228
229
  end
229
230
  end
230
231
  end
231
232
 
233
+ class ForceNoCareOrderTest < self
234
+ def test_different_order
235
+ @command["output_columns"] = "_id"
236
+ assert_true(same?([[[3], [["_id", "UInt32"]], [1], [2], [3]]],
237
+ [[[3], [["_id", "UInt32"]], [3], [2], [1]]],
238
+ :care_order => false))
239
+ end
240
+ end
241
+
232
242
  class ErrorTest < self
233
243
  def test_with_location
234
244
  response1_header = [
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.1.5
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-12 00:00:00.000000000 Z
11
+ date: 2015-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: groonga-command-parser
@@ -211,6 +211,7 @@ files:
211
211
  - lib/groonga/query-log/response-comparer.rb
212
212
  - lib/groonga/query-log/server-verifier.rb
213
213
  - lib/groonga/query-log/version.rb
214
+ - test/command/test-extract.rb
214
215
  - test/command/test-format-regression-test-logs.rb
215
216
  - test/fixtures/multi.expected
216
217
  - test/fixtures/n_entries.expected
@@ -230,7 +231,6 @@ files:
230
231
  - test/helper.rb
231
232
  - test/run-test.rb
232
233
  - test/test-analyzer.rb
233
- - test/test-extractor.rb
234
234
  - test/test-incompatibility-detector.rb
235
235
  - test/test-parser.rb
236
236
  - test/test-replayer.rb
@@ -266,6 +266,7 @@ test_files:
266
266
  - test/test-analyzer.rb
267
267
  - test/test-parser.rb
268
268
  - test/test-response-comparer.rb
269
+ - test/command/test-extract.rb
269
270
  - test/command/test-format-regression-test-logs.rb
270
271
  - test/fixtures/other-query.log
271
272
  - test/fixtures/reporter/console.expected
@@ -285,6 +286,5 @@ test_files:
285
286
  - test/helper.rb
286
287
  - test/run-test.rb
287
288
  - test/test-incompatibility-detector.rb
288
- - test/test-extractor.rb
289
289
  - test/test-replayer.rb
290
290
  has_rdoc: