drntest 1.1.3 → 1.1.4

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.
data/drntest.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- mode: ruby; coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2013 Droonga Project
3
+ # Copyright (C) 2013-2014 Droonga Project
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
@@ -17,7 +17,7 @@ module Drntest
17
17
  class Configuration
18
18
  attr_accessor :port, :host, :tag
19
19
  attr_accessor :base_path, :engine_config
20
- attr_accessor :fluentd, :fluentd_options
20
+ attr_accessor :droonga_engine, :droonga_engine_options
21
21
  attr_accessor :catalog_version
22
22
 
23
23
  def initialize
@@ -26,8 +26,8 @@ module Drntest
26
26
  @tag = "droonga"
27
27
  @base_path = Pathname(Dir.pwd)
28
28
  @engine_config = "default"
29
- @fluentd = "fluentd"
30
- @fluentd_options = []
29
+ @droonga_engine = "droonga-engine"
30
+ @droonga_engine_options = []
31
31
  @catalog_version = "2"
32
32
  end
33
33
 
@@ -32,10 +32,6 @@ module Drntest
32
32
  teardown
33
33
  end
34
34
 
35
- def config_file
36
- @config.engine_config_path + "fluentd.conf"
37
- end
38
-
39
35
  def catalog_file
40
36
  @config.engine_config_path + "catalog.json"
41
37
  end
@@ -61,7 +57,7 @@ module Drntest
61
57
  def extract_connection_info_catalog_v1(catalog_json)
62
58
  zone = catalog_json["zones"].first
63
59
  /\A([^:]+):(\d+)\/(.+)\z/ =~ zone
64
- @config.host = "localhost" # $1
60
+ @config.host = $1
65
61
  @config.port = $2.to_i
66
62
  @config.tag = $3
67
63
  end
@@ -90,7 +86,7 @@ module Drntest
90
86
  dataset["replicas"].each do |replica|
91
87
  replica["slices"].each do |slice|
92
88
  if /\A([^:]+):(\d+)\/([^.]+)/ =~ slice["volume"]["address"]
93
- @config.host = "localhost" # $1
89
+ @config.host = $1
94
90
  @config.port = $2.to_i
95
91
  @config.tag = $3
96
92
  return
@@ -101,13 +97,8 @@ module Drntest
101
97
  end
102
98
 
103
99
  def setup(target_path)
104
- return unless temporary?
105
-
106
100
  setup_temporary_dir
107
101
 
108
- temporary_config = temporary_dir + "fluentd.conf"
109
- FileUtils.cp(config_file, temporary_config)
110
-
111
102
  catalog_json = load_catalog_json(target_path)
112
103
  temporary_catalog = temporary_dir + "catalog.json"
113
104
  temporary_catalog.open("w") do |output|
@@ -115,9 +106,11 @@ module Drntest
115
106
  end
116
107
 
117
108
  command = [
118
- @config.fluentd,
119
- "--config", temporary_config.to_s,
120
- *@config.fluentd_options,
109
+ @config.droonga_engine,
110
+ "--host", @config.host,
111
+ "--port", @config.port.to_s,
112
+ "--tag", @config.tag,
113
+ *@config.droonga_engine_options,
121
114
  ]
122
115
  env = {
123
116
  "DROONGA_CATALOG" => temporary_catalog.to_s,
@@ -134,8 +127,6 @@ module Drntest
134
127
  end
135
128
 
136
129
  def teardown
137
- return unless temporary?
138
-
139
130
  Process.kill(:TERM, @pid)
140
131
  Process.wait(@pid)
141
132
 
@@ -164,10 +155,6 @@ module Drntest
164
155
  temporary_base_dir + "drntest"
165
156
  end
166
157
 
167
- def temporary?
168
- @config.fluentd && config_file.exist?
169
- end
170
-
171
158
  def ready?
172
159
  begin
173
160
  socket = TCPSocket.new(@config.host, @config.port)
@@ -24,17 +24,11 @@ module Drntest
24
24
  return @response if @response.nil?
25
25
 
26
26
  normalized_response = @response.dup
27
- normalize_fluent_message!(normalized_response)
28
- normalize_droonga_message!(normalized_response[2])
27
+ normalize_droonga_message!(normalized_response)
29
28
  normalized_response
30
29
  end
31
30
 
32
31
  private
33
- def normalize_fluent_message!(fluent_message)
34
- normalized_start_time = 0
35
- fluent_message[1] = normalized_start_time
36
- end
37
-
38
32
  def normalize_droonga_message!(droonga_message)
39
33
  normalize_droonga_message_envelope!(droonga_message)
40
34
  normalize_droonga_message_body!(droonga_message["body"])
@@ -51,8 +45,13 @@ module Drntest
51
45
  GROONGA_COMMANDS = [
52
46
  "table_create",
53
47
  "table_remove",
48
+ "table_list",
54
49
  "column_create",
50
+ "column_remove",
51
+ "column_rename",
52
+ "column_list",
55
53
  "select",
54
+ "delete",
56
55
  ]
57
56
  def groonga_command?
58
57
  GROONGA_COMMANDS.include?(@request["type"])
@@ -82,6 +81,7 @@ module Drntest
82
81
 
83
82
  def normalize_groonga_command_response!(response)
84
83
  normalize_groonga_command_header!(response[0])
84
+ normalize_groonga_command_body!(response[1..-1])
85
85
  end
86
86
 
87
87
  def normalized_start_time
@@ -98,6 +98,39 @@ module Drntest
98
98
  header[2] = normalized_elapsed if valid_elapsed?(header[2])
99
99
  end
100
100
 
101
+ def normalize_groonga_command_body!(body)
102
+ return if not body.is_a?(Array) or body.empty?
103
+
104
+ case @request["type"]
105
+ when "table_list"
106
+ normalize_groonga_table_list_command_body!(body)
107
+ when "column_list"
108
+ normalize_groonga_column_list_command_body!(body)
109
+ end
110
+ end
111
+
112
+ TABLE_PATH_COLUMN_INDEX = 2
113
+ def normalize_groonga_table_list_command_body!(body)
114
+ tables = body[0][1..-1]
115
+ return unless tables.is_a?(Array)
116
+ tables.each do |table|
117
+ if table[TABLE_PATH_COLUMN_INDEX].is_a?(String)
118
+ table[TABLE_PATH_COLUMN_INDEX] = "/path/to/table"
119
+ end
120
+ end
121
+ end
122
+
123
+ COLUMN_PATH_COLUMN_INDEX = 2
124
+ def normalize_groonga_column_list_command_body!(body)
125
+ columns = body[0][1..-1]
126
+ return unless columns.is_a?(Array)
127
+ columns.each do |column|
128
+ if column[COLUMN_PATH_COLUMN_INDEX].is_a?(String)
129
+ column[COLUMN_PATH_COLUMN_INDEX] = "/path/to/column"
130
+ end
131
+ end
132
+ end
133
+
101
134
  def normalize_search_command_response!(response)
102
135
  response.each do |query_name, result|
103
136
  if valid_elapsed?(result["elapsedTime"])
@@ -29,12 +29,13 @@ module Drntest
29
29
  class TestRunner
30
30
  def initialize(config, target)
31
31
  @config = config
32
- @target_path = Pathname(target)
32
+ @target_path = Pathname(target).expand_path
33
33
  @engine = Engine.new(@config)
34
34
  end
35
35
 
36
36
  def run
37
- print "#{@target_path}: "
37
+ relative_target_path = @target_path.relative_path_from(@config.suite_path)
38
+ print "#{relative_target_path}: "
38
39
  @engine.start(@target_path)
39
40
  begin
40
41
  results = process_requests
@@ -95,16 +95,16 @@ module Drntest
95
95
  @config.engine_config = config
96
96
  end
97
97
 
98
- parser.on("--fluentd=PATH",
99
- "Path to the fluentd executable",
100
- "(#{@config.fluentd})") do |fluentd|
101
- @config.fluentd = fluentd
98
+ parser.on("--droonga-engine=PATH",
99
+ "Path to the droonga-engine executable",
100
+ "(#{@config.droonga_engine})") do |droonga_engine|
101
+ @config.droonga_engine = droonga_engine
102
102
  end
103
103
 
104
- parser.on("--fluentd-options=OPTIONS",
105
- "Options for fluentd",
104
+ parser.on("--droonga-engine-options=OPTIONS",
105
+ "Options for droonga-engine",
106
106
  "You can specify this option multiple times") do |options|
107
- @config.fluentd_options.concat(Shellwords.split(options))
107
+ @config.droonga_engine_options.concat(Shellwords.split(options))
108
108
  end
109
109
 
110
110
  parser.on("--test=PATTERN",
@@ -14,5 +14,5 @@
14
14
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
15
 
16
16
  module Drntest
17
- VERSION = "1.1.3"
17
+ VERSION = "1.1.4"
18
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drntest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-28 00:00:00.000000000 Z
12
+ date: 2014-04-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &87655010 !ruby/object:Gem::Requirement
16
+ requirement: &72113610 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *87655010
24
+ version_requirements: *72113610
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yajl-ruby
27
- requirement: &87654800 !ruby/object:Gem::Requirement
27
+ requirement: &72113400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *87654800
35
+ version_requirements: *72113400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: droonga-client
38
- requirement: &87654550 !ruby/object:Gem::Requirement
38
+ requirement: &72113150 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.1.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *87654550
46
+ version_requirements: *72113150
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &87654340 !ruby/object:Gem::Requirement
49
+ requirement: &72112940 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *87654340
57
+ version_requirements: *72112940
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &87654110 !ruby/object:Gem::Requirement
60
+ requirement: &72112710 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *87654110
68
+ version_requirements: *72112710
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: packnga
71
- requirement: &87653900 !ruby/object:Gem::Requirement
71
+ requirement: &72112500 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *87653900
79
+ version_requirements: *72112500
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: kramdown
82
- requirement: &87653690 !ruby/object:Gem::Requirement
82
+ requirement: &72112290 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *87653690
90
+ version_requirements: *72112290
91
91
  description: ''
92
92
  email:
93
93
  - droonga@groonga.org