grntest 1.3.4 → 1.3.5
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 +4 -4
- data/doc/text/news.md +14 -0
- data/grntest.gemspec +3 -1
- data/lib/grntest/execution-context.rb +8 -0
- data/lib/grntest/executors/base-executor.rb +10 -1
- data/lib/grntest/executors/http-executor.rb +39 -16
- data/lib/grntest/test-runner.rb +2 -0
- data/lib/grntest/tester.rb +26 -1
- data/lib/grntest/version.rb +2 -2
- metadata +32 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c74faa2722964ab0d9f2f78a7fea2e3e1275d28e0639c10f9bfaef7597d3e73f
|
4
|
+
data.tar.gz: b0462e4805ec8c3c04b81a3330be27ad8af703a1dbcdb95db08ef28e954f6a95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d10fa6674ffa249bc0555fad4b460d48505b4cc8abdc640956ebd403b3784ac1bf80f52a5bd39e5956167904bd0eb4624e8b0dc3f3fe1cfc9c923bad88d9ad5
|
7
|
+
data.tar.gz: 60133bca88d982074f54cc3426298d692fb34c3432e800c1f1427c4de2af2ca158a28415456b670d81502f1fc87fc26cb5b7e11c09a1df4770dec34b44602ca1
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 1.3.5: 2020-03-02
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* Added support for Ruby 2.3 again.
|
8
|
+
|
9
|
+
* Changed to use `URI#open` to suppress a warning.
|
10
|
+
|
11
|
+
* Added support for Apache Arrow as load data format.
|
12
|
+
|
13
|
+
* Added `require-input-type` directive.
|
14
|
+
|
15
|
+
* Added `--use-http-post` option.
|
16
|
+
|
3
17
|
## 1.3.4: 2019-10-11
|
4
18
|
|
5
19
|
### Improvements
|
data/grntest.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
#
|
3
|
-
# Copyright (C) 2012-
|
3
|
+
# Copyright (C) 2012-2020 Sutou Kouhei <kou@clear-code.com>
|
4
4
|
#
|
5
5
|
# This program is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU General Public License as published by
|
@@ -44,11 +44,13 @@ Gem::Specification.new do |spec|
|
|
44
44
|
end
|
45
45
|
|
46
46
|
spec.add_runtime_dependency("diff-lcs")
|
47
|
+
spec.add_runtime_dependency("groonga-command", ">= 1.4.7")
|
47
48
|
spec.add_runtime_dependency("groonga-command-parser")
|
48
49
|
spec.add_runtime_dependency("groonga-log")
|
49
50
|
spec.add_runtime_dependency("groonga-query-log", ">= 1.4.1")
|
50
51
|
spec.add_runtime_dependency("json")
|
51
52
|
spec.add_runtime_dependency("msgpack")
|
53
|
+
spec.add_runtime_dependency("rexml")
|
52
54
|
|
53
55
|
spec.add_development_dependency("bundler")
|
54
56
|
spec.add_development_dependency("rake")
|
@@ -21,6 +21,8 @@ module Grntest
|
|
21
21
|
attr_accessor :plugin_extension
|
22
22
|
attr_accessor :groonga_suggest_create_dataset
|
23
23
|
attr_accessor :result
|
24
|
+
attr_writer :use_http_post
|
25
|
+
attr_accessor :input_type
|
24
26
|
attr_accessor :output_type
|
25
27
|
attr_accessor :on_error
|
26
28
|
attr_accessor :abort_tag
|
@@ -42,6 +44,8 @@ module Grntest
|
|
42
44
|
@groonga_suggest_create_dataset = "groonga-suggest-create-dataset"
|
43
45
|
@n_nested = 0
|
44
46
|
@result = []
|
47
|
+
@use_http_post = false
|
48
|
+
@input_type = "json"
|
45
49
|
@output_type = "json"
|
46
50
|
@log = nil
|
47
51
|
@query_log = nil
|
@@ -62,6 +66,10 @@ module Grntest
|
|
62
66
|
@logging
|
63
67
|
end
|
64
68
|
|
69
|
+
def use_http_post?
|
70
|
+
@use_http_post
|
71
|
+
end
|
72
|
+
|
65
73
|
def suppress_backtrace?
|
66
74
|
@suppress_backtrace or debug?
|
67
75
|
end
|
@@ -320,6 +320,13 @@ module Grntest
|
|
320
320
|
parser << "#{expand_variables(groonga_command)}\n"
|
321
321
|
end
|
322
322
|
|
323
|
+
def execute_directive_require_input_type(parser, line, content, options)
|
324
|
+
input_type, = options
|
325
|
+
unless @context.input_type == input_type
|
326
|
+
omit("require input type: #{input_type}")
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
323
330
|
def execute_directive(parser, line, content)
|
324
331
|
command, *options = Shellwords.split(content)
|
325
332
|
case command
|
@@ -355,6 +362,8 @@ module Grntest
|
|
355
362
|
execute_directive_generate_series(parser, line, content, options)
|
356
363
|
when "eval"
|
357
364
|
execute_directive_eval(parser, line, content, options)
|
365
|
+
when "require-input-type"
|
366
|
+
execute_directive_require_input_type(parser, line, content, options)
|
358
367
|
else
|
359
368
|
log_input(line)
|
360
369
|
log_error("#|e| unknown directive: <#{command}>")
|
@@ -436,7 +445,7 @@ module Grntest
|
|
436
445
|
unless lines.empty?
|
437
446
|
timeout = Time.now + @context.read_timeout
|
438
447
|
while Time.now < timeout
|
439
|
-
break if /rc=-?\d
|
448
|
+
break if /rc=-?\d+$/ =~ lines.last
|
440
449
|
additional_content = read_all_readable_content(context.query_log,
|
441
450
|
first_timeout: 0)
|
442
451
|
next if additional_content.empty?
|
@@ -1,6 +1,4 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
# Copyright (C) 2012-2015 Kouhei Sutou <kou@clear-code.com>
|
1
|
+
# Copyright (C) 2012-2020 Sutou Kouhei <kou@clear-code.com>
|
4
2
|
#
|
5
3
|
# This program is free software: you can redistribute it and/or modify
|
6
4
|
# it under the terms of the GNU General Public License as published by
|
@@ -15,6 +13,7 @@
|
|
15
13
|
# You should have received a copy of the GNU General Public License
|
16
14
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
15
|
|
16
|
+
require "net/http"
|
18
17
|
require "open-uri"
|
19
18
|
|
20
19
|
require "grntest/executors/base-executor"
|
@@ -60,18 +59,33 @@ module Grntest
|
|
60
59
|
return send_normal_command(command)
|
61
60
|
end
|
62
61
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
62
|
+
case @context.input_type
|
63
|
+
when "apache-arrow"
|
64
|
+
command[:input_type] = "apache-arrow"
|
65
|
+
content_type = "application/x-apache-arrow-streaming"
|
66
|
+
arrow_table = command.build_arrow_table
|
67
|
+
if arrow_table
|
68
|
+
buffer = Arrow::ResizableBuffer.new(1024)
|
69
|
+
arrow_table.save(buffer, format: :stream)
|
70
|
+
body = buffer.data.to_s
|
71
|
+
else
|
72
|
+
body = ""
|
67
73
|
end
|
68
|
-
|
74
|
+
command.arguments.delete(:values)
|
69
75
|
else
|
70
|
-
|
76
|
+
content_type = "application/json; charset=UTF-8"
|
77
|
+
values = command.arguments.delete(:values)
|
78
|
+
if lines.size >= 2 and lines[1].start_with?("[")
|
79
|
+
unless /\s--columns\s/ =~ lines.first
|
80
|
+
command.arguments.delete(:columns)
|
81
|
+
end
|
82
|
+
body = lines[1..-1].join
|
83
|
+
else
|
84
|
+
body = values
|
85
|
+
end
|
71
86
|
end
|
72
|
-
|
73
87
|
request = Net::HTTP::Post.new(command.to_uri_format)
|
74
|
-
request.content_type =
|
88
|
+
request.content_type = content_type
|
75
89
|
request.body = body
|
76
90
|
response = Net::HTTP.start(@host, @port) do |http|
|
77
91
|
http.read_timeout = read_timeout
|
@@ -81,16 +95,25 @@ module Grntest
|
|
81
95
|
end
|
82
96
|
|
83
97
|
def send_normal_command(command)
|
84
|
-
|
98
|
+
path_with_query = command.to_uri_format
|
99
|
+
if @context.use_http_post?
|
100
|
+
path, query = path_with_query.split("?", 2)
|
101
|
+
request = Net::HTTP::Post.new(path)
|
102
|
+
request.content_type = "application/x-www-form-urlencoded"
|
103
|
+
request.body = query
|
104
|
+
else
|
105
|
+
request = Net::HTTP::Get.new(path_with_query)
|
106
|
+
end
|
107
|
+
url = "http://#{@host}:#{@port}#{path_with_query}"
|
85
108
|
begin
|
86
|
-
|
87
|
-
|
109
|
+
response = Net::HTTP.start(@host, @port) do |http|
|
110
|
+
http.read_timeout = read_timeout
|
111
|
+
http.request(request)
|
88
112
|
end
|
113
|
+
normalize_response_data(command, response.body)
|
89
114
|
rescue SystemCallError
|
90
115
|
message = "failed to read response from Groonga: <#{url}>: #{$!}"
|
91
116
|
raise Error.new(message)
|
92
|
-
rescue OpenURI::HTTPError
|
93
|
-
$!.io.read
|
94
117
|
rescue Net::HTTPBadResponse
|
95
118
|
message = "bad response from Groonga: <#{url}>: "
|
96
119
|
message << "#{$!.class}: #{$!.message}"
|
data/lib/grntest/test-runner.rb
CHANGED
@@ -137,6 +137,8 @@ module Grntest
|
|
137
137
|
context.plugins_directory = @tester.plugins_directory.expand_path
|
138
138
|
context.groonga_suggest_create_dataset =
|
139
139
|
@tester.groonga_suggest_create_dataset
|
140
|
+
context.use_http_post = @tester.use_http_post?
|
141
|
+
context.input_type = @tester.input_type
|
140
142
|
context.output_type = @tester.output_type
|
141
143
|
context.timeout = @tester.timeout
|
142
144
|
context.timeout = 0 if @tester.gdb
|
data/lib/grntest/tester.rb
CHANGED
@@ -65,6 +65,21 @@ module Grntest
|
|
65
65
|
tester.interface = interface
|
66
66
|
end
|
67
67
|
|
68
|
+
parser.on("--[no-]use-http-post",
|
69
|
+
"Use POST to send command by HTTP",
|
70
|
+
"(#{tester.use_http_post?})") do |boolean|
|
71
|
+
tester.use_http_post = boolean
|
72
|
+
end
|
73
|
+
|
74
|
+
available_input_types = ["json", "apache-arrow"]
|
75
|
+
available_input_type_labels = available_input_types.join(", ")
|
76
|
+
parser.on("--input-type=TYPE", available_input_types,
|
77
|
+
"Use TYPE as the input type on load",
|
78
|
+
"[#{available_input_type_labels}]",
|
79
|
+
"(#{tester.input_type})") do |type|
|
80
|
+
tester.input_type = type
|
81
|
+
end
|
82
|
+
|
68
83
|
available_output_types = ["json", "msgpack"]
|
69
84
|
available_output_type_labels = available_output_types.join(", ")
|
70
85
|
parser.on("--output-type=TYPE", available_output_types,
|
@@ -277,7 +292,11 @@ module Grntest
|
|
277
292
|
end
|
278
293
|
|
279
294
|
attr_accessor :groonga, :groonga_httpd, :groonga_suggest_create_dataset
|
280
|
-
attr_accessor :interface
|
295
|
+
attr_accessor :interface
|
296
|
+
attr_writer :use_http_post
|
297
|
+
attr_accessor :input_type
|
298
|
+
attr_accessor :output_type
|
299
|
+
attr_accessor :testee
|
281
300
|
attr_accessor :base_directory, :database_path, :diff, :diff_options
|
282
301
|
attr_accessor :n_workers
|
283
302
|
attr_accessor :output
|
@@ -303,6 +322,8 @@ module Grntest
|
|
303
322
|
@groonga_suggest_create_dataset = nil
|
304
323
|
end
|
305
324
|
@interface = :stdio
|
325
|
+
@use_http_post = false
|
326
|
+
@input_type = "json"
|
306
327
|
@output_type = "json"
|
307
328
|
@testee = "groonga"
|
308
329
|
@base_directory = Pathname(".")
|
@@ -349,6 +370,10 @@ module Grntest
|
|
349
370
|
end
|
350
371
|
end
|
351
372
|
|
373
|
+
def use_http_post?
|
374
|
+
@use_http_post
|
375
|
+
end
|
376
|
+
|
352
377
|
def keep_database?
|
353
378
|
@keep_database
|
354
379
|
end
|
data/lib/grntest/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012-
|
1
|
+
# Copyright (C) 2012-2020 Sutou Kouhei <kou@clear-code.com>
|
2
2
|
#
|
3
3
|
# This program is free software: you can redistribute it and/or modify
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
@@ -14,5 +14,5 @@
|
|
14
14
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
15
|
|
16
16
|
module Grntest
|
17
|
-
VERSION = "1.3.
|
17
|
+
VERSION = "1.3.5"
|
18
18
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grntest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-03-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: diff-lcs
|
@@ -25,6 +25,20 @@ dependencies:
|
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: groonga-command
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.4.7
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.4.7
|
28
42
|
- !ruby/object:Gem::Dependency
|
29
43
|
name: groonga-command-parser
|
30
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,6 +109,20 @@ dependencies:
|
|
95
109
|
- - ">="
|
96
110
|
- !ruby/object:Gem::Version
|
97
111
|
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: rexml
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
98
126
|
- !ruby/object:Gem::Dependency
|
99
127
|
name: bundler
|
100
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -241,13 +269,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
269
|
- !ruby/object:Gem::Version
|
242
270
|
version: '0'
|
243
271
|
requirements: []
|
244
|
-
|
245
|
-
rubygems_version: 2.7.6.2
|
272
|
+
rubygems_version: 3.2.0.pre1
|
246
273
|
signing_key:
|
247
274
|
specification_version: 4
|
248
275
|
summary: Grntest is a testing framework for Groonga. You can write a test for Groonga
|
249
276
|
by writing Groonga commands and expected result.
|
250
277
|
test_files:
|
251
|
-
- test/run-test.rb
|
252
278
|
- test/executors/test-base-executor.rb
|
253
279
|
- test/executors/test-standard-io-executor.rb
|
280
|
+
- test/run-test.rb
|