grntest 1.3.0 → 1.3.1
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 +5 -5
- data/doc/text/news.md +11 -1
- data/lib/grntest/execution-context.rb +2 -0
- data/lib/grntest/executors/base-executor.rb +1 -2
- data/lib/grntest/executors/http-executor.rb +8 -0
- data/lib/grntest/test-runner.rb +18 -13
- data/lib/grntest/tester.rb +8 -0
- data/lib/grntest/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 59d77daf46cb62a91f7720b8d1564d5fdba3d52e711052f9fbd5766f08e68efe
|
4
|
+
data.tar.gz: 70994ec44ffd1616a10688c5a55bf8ad1c698762ca835188f48d1092bf02cfe4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 305c2e818362497ae196f322aab69e67a12577715ba23ba3ac2439ae71133047c474a215fac26c074f9b464cefa8cbe8fc54007d147fbbf122a1d8abc8dd3ee8
|
7
|
+
data.tar.gz: 24f24e86fe847c5787ab4e87de9f1bc2e3dc632342fad62e07691c931f6fed1abf64f033457af565edc1d5916df9617a4b8f75071544ec801899b9acf7a2cbf4
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 1.3.1: 2018-11-19
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* Improved HTTP related error handling.
|
8
|
+
|
9
|
+
* Added `--shutdown-wait-time` option.
|
10
|
+
|
11
|
+
* Improved shutdown process for Groonga HTTP server.
|
12
|
+
|
3
13
|
## 1.3.0: 2018-11-16
|
4
14
|
|
5
15
|
### Improvements
|
@@ -10,7 +20,7 @@
|
|
10
20
|
|
11
21
|
### Fixes
|
12
22
|
|
13
|
-
* Fixed encoding error on error report.
|
23
|
+
* Fixed encoding error on error report.
|
14
24
|
|
15
25
|
## 1.2.9: 2018-01-18
|
16
26
|
|
@@ -26,6 +26,7 @@ module Grntest
|
|
26
26
|
attr_accessor :read_timeout
|
27
27
|
attr_accessor :default_timeout
|
28
28
|
attr_accessor :default_read_timeout
|
29
|
+
attr_accessor :shutdown_wait_timeout
|
29
30
|
attr_writer :suppress_backtrace
|
30
31
|
attr_writer :collect_query_log
|
31
32
|
attr_writer :debug
|
@@ -46,6 +47,7 @@ module Grntest
|
|
46
47
|
@read_timeout = 3
|
47
48
|
@default_timeout = @timeout
|
48
49
|
@default_read_timeout = @read_timeout
|
50
|
+
@shutdown_wait_timeout = 5
|
49
51
|
@omitted = false
|
50
52
|
@suppress_backtrace = true
|
51
53
|
@collect_query_log = false
|
@@ -83,7 +83,6 @@ module Grntest
|
|
83
83
|
end
|
84
84
|
|
85
85
|
status = nil
|
86
|
-
timeout = 1
|
87
86
|
total_sleep_time = 0
|
88
87
|
sleep_time = 0.05
|
89
88
|
loop do
|
@@ -91,7 +90,7 @@ module Grntest
|
|
91
90
|
break if status
|
92
91
|
sleep(sleep_time)
|
93
92
|
total_sleep_time += sleep_time
|
94
|
-
return false if total_sleep_time >
|
93
|
+
return false if total_sleep_time > context.shutdown_wait_timeout
|
95
94
|
end
|
96
95
|
|
97
96
|
log_error(read_all_log) unless status.success?
|
@@ -91,6 +91,14 @@ module Grntest
|
|
91
91
|
raise Error.new(message)
|
92
92
|
rescue OpenURI::HTTPError
|
93
93
|
$!.io.read
|
94
|
+
rescue Net::HTTPBadResponse
|
95
|
+
message = "bad response from Groonga: <#{url}>: "
|
96
|
+
message << "#{$!.class}: #{$!.message}"
|
97
|
+
raise Error.new(message)
|
98
|
+
rescue Net::HTTPHeaderSyntaxError
|
99
|
+
message = "bad HTTP header syntax in Groonga response: <#{url}>: "
|
100
|
+
message << "#{$!.class}: #{$!.message}"
|
101
|
+
raise Error.new(message)
|
94
102
|
end
|
95
103
|
end
|
96
104
|
|
data/lib/grntest/test-runner.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012-
|
1
|
+
# Copyright (C) 2012-2018 Kouhei Sutou <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
|
@@ -85,7 +85,6 @@ module Grntest
|
|
85
85
|
@worker = worker
|
86
86
|
@max_n_columns = MAX_N_COLUMNS
|
87
87
|
@id = nil
|
88
|
-
@shutdown_wait_timeout = 5
|
89
88
|
end
|
90
89
|
|
91
90
|
def run
|
@@ -143,6 +142,7 @@ module Grntest
|
|
143
142
|
context.read_timeout = @tester.read_timeout
|
144
143
|
context.default_timeout = context.timeout
|
145
144
|
context.default_read_timeout = context.read_timeout
|
145
|
+
context.shutdown_wait_timeout = @tester.shutdown_wait_timeout
|
146
146
|
context.suppress_backtrace = @tester.suppress_backtrace?
|
147
147
|
context.debug = @tester.debug?
|
148
148
|
run_groonga(context) do |executor|
|
@@ -379,16 +379,24 @@ call chdir("#{context.temporary_directory_path}")
|
|
379
379
|
end
|
380
380
|
yield(executor)
|
381
381
|
ensure
|
382
|
-
|
383
|
-
|
382
|
+
if executor.shutdown(pid)
|
383
|
+
pid = nil
|
384
|
+
else
|
385
|
+
wait_groonga_http_shutdown(pid_file_path)
|
384
386
|
pid = nil if wait_pid(pid)
|
385
387
|
end
|
386
388
|
end
|
387
389
|
ensure
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
390
|
+
if pid
|
391
|
+
begin
|
392
|
+
Process.kill(:TERM, pid)
|
393
|
+
rescue SystemCallError => error
|
394
|
+
$stderr.puts("TERM -> #{pid}: #{error.class}: #{error}")
|
395
|
+
else
|
396
|
+
wait_groonga_http_shutdown(pid_file_path)
|
397
|
+
ensure_process_finished(pid)
|
398
|
+
end
|
399
|
+
end
|
392
400
|
end
|
393
401
|
end
|
394
402
|
|
@@ -425,21 +433,18 @@ call chdir("#{context.temporary_directory_path}")
|
|
425
433
|
return true if Process.waitpid(pid, Process::WNOHANG)
|
426
434
|
sleep(sleep_time)
|
427
435
|
total_sleep_time += sleep_time
|
428
|
-
return false if total_sleep_time > @shutdown_wait_timeout
|
436
|
+
return false if total_sleep_time > @tester.shutdown_wait_timeout
|
429
437
|
end
|
430
438
|
end
|
431
439
|
|
432
440
|
def wait_groonga_http_shutdown(pid_file_path)
|
433
|
-
return false unless pid_file_path.exist?
|
434
|
-
|
435
441
|
total_sleep_time = 0
|
436
442
|
sleep_time = 0.1
|
437
443
|
while pid_file_path.exist?
|
438
444
|
sleep(sleep_time)
|
439
445
|
total_sleep_time += sleep_time
|
440
|
-
break if total_sleep_time > @shutdown_wait_timeout
|
446
|
+
break if total_sleep_time > @tester.shutdown_wait_timeout
|
441
447
|
end
|
442
|
-
true
|
443
448
|
end
|
444
449
|
|
445
450
|
def groonga_http_command(host, port, pid_file_path, context, spawn_options)
|
data/lib/grntest/tester.rb
CHANGED
@@ -236,6 +236,12 @@ module Grntest
|
|
236
236
|
tester.n_retries = n
|
237
237
|
end
|
238
238
|
|
239
|
+
parser.on("--shutdown-wait-timeout=SECOND", Float,
|
240
|
+
"Timeout for waiting shutdown",
|
241
|
+
"(#{tester.shutdown_wait_timeout})") do |timeout|
|
242
|
+
tester.shutdown_wait_timeout = timeout
|
243
|
+
end
|
244
|
+
|
239
245
|
parser.on("--version",
|
240
246
|
"Show version and exit") do
|
241
247
|
puts(VERSION)
|
@@ -288,6 +294,7 @@ module Grntest
|
|
288
294
|
attr_reader :test_patterns, :test_suite_patterns
|
289
295
|
attr_reader :exclude_test_patterns, :exclude_test_suite_patterns
|
290
296
|
attr_accessor :n_retries
|
297
|
+
attr_accessor :shutdown_wait_timeout
|
291
298
|
def initialize
|
292
299
|
@groonga = "groonga"
|
293
300
|
@groonga_httpd = "groonga-httpd"
|
@@ -319,6 +326,7 @@ module Grntest
|
|
319
326
|
@timeout = 5
|
320
327
|
@read_timeout = 3
|
321
328
|
@n_retries = 0
|
329
|
+
@shutdown_wait_timeout = 5
|
322
330
|
end
|
323
331
|
|
324
332
|
def run(*targets)
|
data/lib/grntest/version.rb
CHANGED
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.1
|
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: 2018-11-
|
12
|
+
date: 2018-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -219,13 +219,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
219
|
version: '0'
|
220
220
|
requirements: []
|
221
221
|
rubyforge_project:
|
222
|
-
rubygems_version:
|
222
|
+
rubygems_version: 3.0.0.beta2
|
223
223
|
signing_key:
|
224
224
|
specification_version: 4
|
225
225
|
summary: Grntest is a testing framework for Groonga. You can write a test for Groonga
|
226
226
|
by writing Groonga commands and expected result.
|
227
227
|
test_files:
|
228
|
+
- test/run-test.rb
|
228
229
|
- test/executors/test-base-executor.rb
|
229
230
|
- test/executors/test-standard-io-executor.rb
|
230
|
-
- test/run-test.rb
|
231
231
|
- test/test-log-parser.rb
|