grntest 1.4.8 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6573acc74d9d0be5726b91bf8e357ece4d5170dece4bfe9595ca86155f91c31b
4
- data.tar.gz: 5d56939d8117fa73f7d5a3c9b8d52c34b270d15ee5a639debcbf250f43bdff9b
3
+ metadata.gz: b52bcc8e04c96ff7cbda13f71af169b3c76fcc89fe048f5906db096f92410742
4
+ data.tar.gz: 96796b1ffe639b555606acdc3181a1e0fd90cd82edc6b6e914e31c378e886ae7
5
5
  SHA512:
6
- metadata.gz: 8a538e223a7a30328cf0e32a144567175542d6b46342065ac19ba58873133c1744553dd635d4258ae917770d0a345b0302f5888828aee64db18170689b21cb1a
7
- data.tar.gz: 3170beeb6430e8b7ab1e065348e92498e6d7df0d7a974fb1ec7ad6304f6bf6662c7d44f2456f8e598a01501364355cfbcc0fef46e4f711ae553d2710c33bf177
6
+ metadata.gz: 7ad0556248d06ee80940677b7e1e7419e931d06981b47875d7a363637c9a0c6d387c08daafc09fe9c2b3cbbba2e6ea75b4402a6b0209dbc4433dbba652befa3f
7
+ data.tar.gz: 5a46df9665ae1aca3201b1867792e30892caca2e5a93d0ea7cb84f29e779596e80f3bfcb7056780e9f0fe0fbce5cc35abac41fce3ec2fdd0c40f03376096e897
data/doc/text/news.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # News
2
2
 
3
+ ## 1.5.2: 2021-08-05
4
+
5
+ ### Improvements
6
+
7
+ * `stdio`: Improved may be slow command processing.
8
+
9
+ * `copy-path`: Handled error.
10
+
11
+ * `generate-series`: Improved multi threading support.
12
+
13
+ ## 1.5.1: 2021-07-16
14
+
15
+ ### Improvements
16
+
17
+ * `http`: Improved response check.
18
+
19
+ ## 1.5.0: 2021-07-16
20
+
21
+ ### Improvements
22
+
23
+ * `http`: Added response code check.
24
+
25
+ * `groonga-httpd`: Increased the max body size.
26
+
27
+ ## 1.4.9: 2021-07-12
28
+
29
+ ### Improvements
30
+
31
+ * Added `synonyms-generate` directive.
32
+
3
33
  ## 1.4.8: 2020-12-09
4
34
 
5
35
  ### Fixes
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2020 Sutou Kouhei <kou@clear-code.com>
1
+ # Copyright (C) 2012-2021 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
@@ -20,6 +20,7 @@ module Grntest
20
20
  attr_accessor :plugins_directory
21
21
  attr_accessor :plugin_extension
22
22
  attr_accessor :groonga_suggest_create_dataset
23
+ attr_accessor :groonga_synonym_generate
23
24
  attr_accessor :testee
24
25
  attr_accessor :interface
25
26
  attr_accessor :result
@@ -46,6 +47,7 @@ module Grntest
46
47
  @plugins_directory = nil
47
48
  @plugin_extension = guess_plugin_extension
48
49
  @groonga_suggest_create_dataset = "groonga-suggest-create-dataset"
50
+ @groonga_synonym_generate = "groonga-synonym-generate"
49
51
  @testee = "groonga"
50
52
  @interface = "stdio"
51
53
  @n_nested = 0
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2020 Sutou Kouhei <kou@clear-code.com>
1
+ # Copyright (C) 2012-2021 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
@@ -180,7 +180,14 @@ module Grntest
180
180
  end
181
181
  source = resolve_path(Pathname(expand_variables(source)))
182
182
  destination = resolve_path(Pathname(expand_variables(destination)))
183
- FileUtils.cp_r(source.to_s, destination.to_s)
183
+ begin
184
+ FileUtils.cp_r(source.to_s, destination.to_s)
185
+ rescue SystemCallError => error
186
+ log_input(line)
187
+ details = "#{error.class}: #{error.message}"
188
+ log_error("#|e| [copy-path] failed to copy: #{details}")
189
+ @context.error
190
+ end
184
191
  end
185
192
 
186
193
  def timeout_value(key, line, input, default)
@@ -313,7 +320,10 @@ module Grntest
313
320
  end
314
321
  record << "\n"
315
322
  record << evaluator.evaluate(i).to_json
323
+ before = Time.now
316
324
  parser << record
325
+ elapsed = Time.now - before
326
+ Thread.pass if elapsed > 1.0
317
327
  end
318
328
  parser << "\n]\n"
319
329
  end
@@ -444,6 +454,31 @@ module Grntest
444
454
  end
445
455
  end
446
456
 
457
+ def execute_directive_synonym_generate(parser, line, content, options)
458
+ if @context.groonga_synonym_generate.nil?
459
+ omit("groonga-synonym-generate isn't specified")
460
+ end
461
+
462
+ table, *args = options
463
+ command_line = [
464
+ @context.groonga_synonym_generate,
465
+ *args,
466
+ ]
467
+ packed_command_line = command_line.join(" ")
468
+ log_input("#{packed_command_line}\n")
469
+ begin
470
+ IO.popen(command_line, "r:ascii-8bit") do |io|
471
+ parser << "load --table #{table}\n"
472
+ io.each_line do |line|
473
+ parser << line
474
+ end
475
+ end
476
+ rescue SystemCallError
477
+ raise Error.new("failed to run groonga-synonym-generate: " +
478
+ "<#{packed_command_line}>: #{$!}")
479
+ end
480
+ end
481
+
447
482
  def execute_directive(parser, line, content)
448
483
  command, *options = Shellwords.split(content)
449
484
  case command
@@ -497,6 +532,8 @@ module Grntest
497
532
  execute_directive_sleep_after_command(line, content, options)
498
533
  when "require-feature"
499
534
  execute_directive_require_feature(line, content, options)
535
+ when "synonym-generate"
536
+ execute_directive_synonym_generate(parser, line, content, options)
500
537
  else
501
538
  log_input(line)
502
539
  log_error("#|e| unknown directive: <#{command}>")
@@ -78,6 +78,18 @@ module Grntest
78
78
  DEBUG = (ENV["GRNTEST_HTTP_DEBUG"] == "yes")
79
79
  LOAD_DEBUG = (DEBUG or (ENV["GRNTEST_HTTP_LOAD_DEBUG"] == "yes"))
80
80
 
81
+ def check_response(response)
82
+ case response
83
+ when Net::HTTPBadRequest,
84
+ Net::HTTPNotFound
85
+ # Groonga returns them for an invalid request.
86
+ when Net::HTTPInternalServerError
87
+ # Groonga returns this for an internal error.
88
+ else
89
+ response.value
90
+ end
91
+ end
92
+
81
93
  MAX_URI_SIZE = 4096
82
94
  def send_load_command(command)
83
95
  lines = command.original_source.lines
@@ -122,6 +134,7 @@ module Grntest
122
134
  http.read_timeout = read_timeout
123
135
  http.request(request)
124
136
  end
137
+ check_response(response)
125
138
  normalize_response_data(command, response.body)
126
139
  end
127
140
  end
@@ -144,6 +157,7 @@ module Grntest
144
157
  http.read_timeout = read_timeout
145
158
  http.request(request)
146
159
  end
160
+ check_response(response)
147
161
  normalize_response_data(command, response.body)
148
162
  end
149
163
  end
@@ -174,6 +188,10 @@ module Grntest
174
188
  message = "bad HTTP header syntax in Groonga response: <#{url}>: "
175
189
  message << "#{$!.class}: #{$!.message}"
176
190
  raise Error.new(message)
191
+ rescue Net::HTTPServerException
192
+ message = "exception from Groonga: <#{url}>: "
193
+ message << "#{$!.class}: #{$!.message}"
194
+ raise Error.new(message)
177
195
  end
178
196
  end
179
197
 
@@ -65,10 +65,12 @@ module Grntest
65
65
 
66
66
  MAY_SLOW_COMMANDS = [
67
67
  "column_create",
68
+ "delete",
68
69
  "load",
69
70
  "logical_table_remove",
70
71
  "plugin_register",
71
72
  "register",
73
+ "wal_recover",
72
74
  ]
73
75
  def may_slow_command?(command)
74
76
  MAY_SLOW_COMMANDS.include?(command.name)
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2020 Sutou Kouhei <kou@clear-code.com>
1
+ # Copyright (C) 2012-2021 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
@@ -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.groonga_synonym_generate =
141
+ @tester.groonga_synonym_generate
140
142
  context.testee = @tester.testee
141
143
  context.interface = @tester.interface
142
144
  context.use_http_post = @tester.use_http_post?
@@ -543,6 +545,7 @@ http {
543
545
  groonga_log_path #{context.log_path};
544
546
  groonga_query_log_path #{context.query_log_path};
545
547
  groonga on;
548
+ client_max_body_size 500m;
546
549
  }
547
550
  }
548
551
  }
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2020 Sutou Kouhei <kou@clear-code.com>
1
+ # Copyright (C) 2012-2021 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
@@ -56,6 +56,12 @@ module Grntest
56
56
  tester.groonga_suggest_create_dataset = normalize_command(command)
57
57
  end
58
58
 
59
+ parser.on("--groonga-synonym-generate=COMMAND",
60
+ "Use COMMAND as groonga_synonym_generate command",
61
+ "(#{tester.groonga_synonym_generate})") do |command|
62
+ tester.groonga_synonym_generate = normalize_command(command)
63
+ end
64
+
59
65
  available_interfaces = ["stdio", "http"]
60
66
  available_interface_labels = available_interfaces.join(", ")
61
67
  parser.on("--interface=INTERFACE", available_interfaces,
@@ -303,7 +309,10 @@ module Grntest
303
309
  end
304
310
  end
305
311
 
306
- attr_accessor :groonga, :groonga_httpd, :groonga_suggest_create_dataset
312
+ attr_accessor :groonga
313
+ attr_accessor :groonga_httpd
314
+ attr_accessor :groonga_suggest_create_dataset
315
+ attr_accessor :groonga_synonym_generate
307
316
  attr_accessor :interface
308
317
  attr_writer :use_http_post
309
318
  attr_writer :use_http_chunked
@@ -334,6 +343,10 @@ module Grntest
334
343
  unless command_exist?(@groonga_suggest_create_dataset)
335
344
  @groonga_suggest_create_dataset = nil
336
345
  end
346
+ @groonga_synonym_generate = "groonga-synonym-generate"
347
+ unless command_exist?(@groonga_synonym_generate)
348
+ @groonga_synonym_generate = nil
349
+ end
337
350
  @interface = "stdio"
338
351
  @use_http_post = false
339
352
  @use_http_chunked = false
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2020 Sutou Kouhei <kou@clear-code.com>
1
+ # Copyright (C) 2012-2021 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.4.8"
17
+ VERSION = "1.5.2"
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.4.8
4
+ version: 1.5.2
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: 2020-12-08 00:00:00.000000000 Z
12
+ date: 2021-08-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: diff-lcs
@@ -270,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
270
270
  - !ruby/object:Gem::Version
271
271
  version: '0'
272
272
  requirements: []
273
- rubygems_version: 3.2.0.rc.2
273
+ rubygems_version: 3.3.0.dev
274
274
  signing_key:
275
275
  specification_version: 4
276
276
  summary: Grntest is a testing framework for Groonga. You can write a test for Groonga