groonga-client 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +1 -0
- data/README.md +1 -0
- data/doc/text/news.md +16 -3
- data/groonga-client.gemspec +1 -1
- data/lib/groonga/client.rb +69 -7
- data/lib/groonga/client/command.rb +1 -2
- data/lib/groonga/client/connection/error.rb +31 -0
- data/lib/groonga/client/{protocol → connection}/gqtp.rb +41 -1
- data/lib/groonga/client/connection/http.rb +83 -0
- data/lib/groonga/client/{protocol/http.rb → connection/request.rb} +5 -18
- data/lib/groonga/client/response/base.rb +38 -8
- data/lib/groonga/client/response/column_list.rb +3 -2
- data/lib/groonga/client/response/select.rb +46 -14
- data/lib/groonga/client/response/table_create.rb +12 -0
- data/lib/groonga/client/response/table_list.rb +3 -2
- data/lib/groonga/client/version.rb +1 -1
- data/test/connection/test-gqtp.rb +105 -0
- data/test/connection/test-http.rb +97 -0
- data/test/response/helper.rb +4 -0
- data/test/response/test-column-list.rb +2 -11
- data/test/response/test-select.rb +127 -12
- data/test/response/test-table-list.rb +2 -11
- data/test/results/test-column-list.rb +2 -1
- data/test/results/test-table-list.rb +2 -1
- data/test/test-client.rb +43 -27
- data/test/test-command.rb +36 -3
- metadata +36 -31
- data/test/results/test-select.rb +0 -63
@@ -1,5 +1,3 @@
|
|
1
|
-
require "test/unit/rr"
|
2
|
-
|
3
1
|
require "response/helper"
|
4
2
|
|
5
3
|
class TestResponseTableList < Test::Unit::TestCase
|
@@ -9,16 +7,9 @@ class TestResponseTableList < Test::Unit::TestCase
|
|
9
7
|
header = [0,1372430096.70991,0.000522851943969727]
|
10
8
|
body = [[["id","UInt32"],["name","ShortText"],["path","ShortText"],["flags","ShortText"],["domain","ShortText"],["range","ShortText"],["default_tokenizer","ShortText"],["normalizer","ShortText"]],
|
11
9
|
[256,"Test","/tmp/test.db.0000100","TABLE_HASH_KEY|PERSISTENT",nil,nil,nil,nil]]
|
10
|
+
raw_response = [header, body].to_json
|
12
11
|
|
13
|
-
|
14
|
-
stub(connection).send.with_any_args.yields([header, body].to_json) do
|
15
|
-
request = Object.new
|
16
|
-
stub(request).wait do
|
17
|
-
true
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
response = make_command("table_list").execute(connection)
|
12
|
+
response = parse_raw_response("table_list", raw_response)
|
22
13
|
assert_equal(Groonga::Client::Response::TableList, response.class)
|
23
14
|
end
|
24
15
|
end
|
@@ -3,12 +3,13 @@ require "test/unit/rr"
|
|
3
3
|
class TestResultsColumnList < Test::Unit::TestCase
|
4
4
|
class TestResults < self
|
5
5
|
def setup
|
6
|
+
command = nil
|
6
7
|
header = [0,1372430096.70991,0.000522851943969727]
|
7
8
|
body = [[["id","UInt32"],["name","ShortText"],["path","ShortText"],["type","ShortText"],["flags","ShortText"],["domain","ShortText"],["range","ShortText"],["source","ShortText"]],
|
8
9
|
[259,"_key","","","COLUMN_SCALAR","Bigram","ShortText",[]],
|
9
10
|
[278,"comment_index","/tmp/db.db.0000116","index","COLUMN_INDEX|WITH_POSITION|PERSISTENT","Bigram","Comments",["Comments.comment"]],
|
10
11
|
[277,"users_index","/tmp/db.db.0000115","index","COLUMN_INDEX|WITH_SECTION|WITH_POSITION|PERSISTENT","Bigram","Users",["Users.name","Users.location_str","Users.description"]]]
|
11
|
-
@column_list = Groonga::Client::Response::ColumnList.new(header, body)
|
12
|
+
@column_list = Groonga::Client::Response::ColumnList.new(command, header, body)
|
12
13
|
end
|
13
14
|
|
14
15
|
def test_column_list
|
@@ -2,12 +2,13 @@ require "test/unit/rr"
|
|
2
2
|
|
3
3
|
class TestResultsTableList < Test::Unit::TestCase
|
4
4
|
def setup
|
5
|
+
command = nil
|
5
6
|
header = [0,1372430096.70991,0.000522851943969727]
|
6
7
|
body = [[["id","UInt32"],["name","ShortText"],["path","ShortText"],["flags","ShortText"],["domain","ShortText"],["range","ShortText"],["default_tokenizer","ShortText"],["normalizer","ShortText"]],
|
7
8
|
[257,"Ages","/tmp/test.db.0000101","TABLE_DAT_KEY|PERSISTENT","UInt32",nil,nil,nil],
|
8
9
|
[256,"Lexicon","/tmp/test.db.0000100","TABLE_PAT_KEY|PERSISTENT","ShortText",nil,"TokenBigram","NormalizerAuto"],
|
9
10
|
[258,"Logs","/tmp/test.db.0000102","TABLE_NO_KEY|PERSISTENT",nil,nil,nil,nil]]
|
10
|
-
@table_list = Groonga::Client::Response::TableList.new(header, body)
|
11
|
+
@table_list = Groonga::Client::Response::TableList.new(command, header, body)
|
11
12
|
end
|
12
13
|
|
13
14
|
def test_table_list
|
data/test/test-client.rb
CHANGED
@@ -152,30 +152,29 @@ class TestClient < Test::Unit::TestCase
|
|
152
152
|
XML
|
153
153
|
response = client.table_list(:output_type => :xml)
|
154
154
|
expected_body = [
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
155
|
+
[
|
156
|
+
["id", "UInt32"],
|
157
|
+
["name", "ShortText"],
|
158
|
+
["path", "ShortText"],
|
159
|
+
["flags", "ShortText"],
|
160
|
+
["domain", "ShortText"],
|
161
|
+
["range", "ShortText"],
|
162
|
+
["default_tokenizer", "ShortText"],
|
163
|
+
["normalizer", "ShortText"],
|
164
|
+
],
|
165
|
+
[
|
166
|
+
256,
|
167
|
+
"Users",
|
168
|
+
"/tmp/db/db.0000100",
|
169
|
+
"TABLE_HASH_KEY|PERSISTENT",
|
170
|
+
nil,
|
171
|
+
nil,
|
172
|
+
nil,
|
173
|
+
nil,
|
174
|
+
],
|
163
175
|
]
|
164
176
|
assert_response(expected_body, response)
|
165
177
|
end
|
166
|
-
|
167
|
-
private
|
168
|
-
def table(id, name, path, flags, domain, range, default_tokenizer,
|
169
|
-
normalizer)
|
170
|
-
Groonga::Client::Response::TableList::Table.new(id,
|
171
|
-
name,
|
172
|
-
path,
|
173
|
-
flags,
|
174
|
-
domain,
|
175
|
-
range,
|
176
|
-
default_tokenizer,
|
177
|
-
normalizer)
|
178
|
-
end
|
179
178
|
end
|
180
179
|
|
181
180
|
module ColumnsTests
|
@@ -213,6 +212,16 @@ JSON
|
|
213
212
|
end
|
214
213
|
end
|
215
214
|
|
215
|
+
module OpenTests
|
216
|
+
def test_return_value
|
217
|
+
stub_response("['not-used']")
|
218
|
+
response = open_client do |client|
|
219
|
+
"response"
|
220
|
+
end
|
221
|
+
assert_equal("response", response)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
216
225
|
module Tests
|
217
226
|
include Utils
|
218
227
|
include Assertions
|
@@ -220,6 +229,7 @@ JSON
|
|
220
229
|
include OutputTypeTests
|
221
230
|
include ColumnsTests
|
222
231
|
include ParametersTests
|
232
|
+
include OpenTests
|
223
233
|
end
|
224
234
|
|
225
235
|
class TestGQTP < self
|
@@ -237,14 +247,20 @@ JSON
|
|
237
247
|
client = @server.accept
|
238
248
|
@server.close
|
239
249
|
|
240
|
-
|
241
|
-
|
250
|
+
loop do
|
251
|
+
raw_header = client.read(GQTP::Header.size)
|
252
|
+
break if raw_header.nil?
|
253
|
+
|
254
|
+
header = GQTP::Header.parse(raw_header)
|
255
|
+
client.read(header.size)
|
242
256
|
|
243
|
-
|
244
|
-
|
257
|
+
response_header = GQTP::Header.new
|
258
|
+
response_header.size = @response_body.bytesize
|
259
|
+
|
260
|
+
client.write(response_header.pack)
|
261
|
+
client.write(@response_body)
|
262
|
+
end
|
245
263
|
|
246
|
-
client.write(response_header.pack)
|
247
|
-
client.write(@response_body)
|
248
264
|
client.close
|
249
265
|
end
|
250
266
|
end
|
data/test/test-command.rb
CHANGED
@@ -3,23 +3,56 @@ class TestCommand < Test::Unit::TestCase
|
|
3
3
|
@client = Groonga::Client.open(:protocol => :http)
|
4
4
|
end
|
5
5
|
|
6
|
+
def test_column_create
|
7
|
+
response = Object.new
|
8
|
+
mock(@client).execute_command("column_create", :table => :Test, :name => :Body, :type => :ShortText) do
|
9
|
+
response
|
10
|
+
end
|
11
|
+
@client.column_create(:table => :Test, :name => :Body, :type => :ShortText)
|
12
|
+
end
|
13
|
+
|
6
14
|
def test_column_list
|
15
|
+
response = Object.new
|
7
16
|
mock(@client).execute_command("column_list", :table => :Test) do
|
8
|
-
|
17
|
+
response
|
9
18
|
end
|
10
19
|
@client.column_list(:table => :Test)
|
11
20
|
end
|
12
21
|
|
22
|
+
def test_load
|
23
|
+
values = [
|
24
|
+
{
|
25
|
+
:_key => "Groonga",
|
26
|
+
:body => "It's very fast!!"
|
27
|
+
}
|
28
|
+
]
|
29
|
+
response = Object.new
|
30
|
+
mock(@client).execute_command("load", :table => :Test, :values => values.to_json) do
|
31
|
+
response
|
32
|
+
end
|
33
|
+
@client.load(:table => :Test, :values => values.to_json)
|
34
|
+
end
|
35
|
+
|
13
36
|
def test_select
|
37
|
+
response = Object.new
|
14
38
|
mock(@client).execute_command("select", :table => :Test) do
|
15
|
-
|
39
|
+
response
|
16
40
|
end
|
17
41
|
@client.select(:table => :Test)
|
18
42
|
end
|
19
43
|
|
44
|
+
def test_table_create
|
45
|
+
response = Object.new
|
46
|
+
mock(@client).execute_command("table_create", :name => :Test) do
|
47
|
+
response
|
48
|
+
end
|
49
|
+
@client.table_create(:name => :Test)
|
50
|
+
end
|
51
|
+
|
20
52
|
def test_table_list
|
53
|
+
response = Object.new
|
21
54
|
mock(@client).execute_command("table_list", {}) do
|
22
|
-
|
55
|
+
response
|
23
56
|
end
|
24
57
|
@client.table_list
|
25
58
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groonga-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-09-18 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: gqtp
|
@@ -36,7 +36,7 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - ! '>='
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 1.0.
|
39
|
+
version: 1.0.4
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.0.
|
47
|
+
version: 1.0.4
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: bundler
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -179,43 +179,47 @@ files:
|
|
179
179
|
- Gemfile
|
180
180
|
- groonga-client.gemspec
|
181
181
|
- .yardopts
|
182
|
-
- lib/groonga/client/
|
183
|
-
- lib/groonga/client/
|
184
|
-
- lib/groonga/client/version.rb
|
185
|
-
- lib/groonga/client/response/cache_limit.rb
|
186
|
-
- lib/groonga/client/response/register.rb
|
187
|
-
- lib/groonga/client/response/column_list.rb
|
188
|
-
- lib/groonga/client/response/status.rb
|
182
|
+
- lib/groonga/client/response.rb
|
183
|
+
- lib/groonga/client/response/clearlock.rb
|
189
184
|
- lib/groonga/client/response/column_remove.rb
|
190
185
|
- lib/groonga/client/response/quit.rb
|
186
|
+
- lib/groonga/client/response/log_put.rb
|
191
187
|
- lib/groonga/client/response/load.rb
|
192
188
|
- lib/groonga/client/response/delete.rb
|
189
|
+
- lib/groonga/client/response/base.rb
|
190
|
+
- lib/groonga/client/response/status.rb
|
191
|
+
- lib/groonga/client/response/table_create.rb
|
192
|
+
- lib/groonga/client/response/register.rb
|
193
193
|
- lib/groonga/client/response/column_create.rb
|
194
|
-
- lib/groonga/client/response/
|
194
|
+
- lib/groonga/client/response/check.rb
|
195
|
+
- lib/groonga/client/response/cache_limit.rb
|
195
196
|
- lib/groonga/client/response/column_rename.rb
|
196
|
-
- lib/groonga/client/response/log_level.rb
|
197
197
|
- lib/groonga/client/response/defrag.rb
|
198
|
-
- lib/groonga/client/response/base.rb
|
199
|
-
- lib/groonga/client/response/dump.rb
|
200
198
|
- lib/groonga/client/response/table_list.rb
|
199
|
+
- lib/groonga/client/response/log_level.rb
|
200
|
+
- lib/groonga/client/response/log_reopen.rb
|
201
|
+
- lib/groonga/client/response/dump.rb
|
201
202
|
- lib/groonga/client/response/select.rb
|
202
|
-
- lib/groonga/client/response/
|
203
|
-
- lib/groonga/client/
|
204
|
-
- lib/groonga/client/response/check.rb
|
203
|
+
- lib/groonga/client/response/column_list.rb
|
204
|
+
- lib/groonga/client/version.rb
|
205
205
|
- lib/groonga/client/command.rb
|
206
|
-
- lib/groonga/client/
|
206
|
+
- lib/groonga/client/connection/request.rb
|
207
|
+
- lib/groonga/client/connection/error.rb
|
208
|
+
- lib/groonga/client/connection/gqtp.rb
|
209
|
+
- lib/groonga/client/connection/http.rb
|
207
210
|
- lib/groonga/client.rb
|
208
211
|
- doc/text/news.md
|
209
|
-
- test/
|
210
|
-
- test/
|
212
|
+
- test/run-test.rb
|
213
|
+
- test/test-client.rb
|
211
214
|
- test/response/helper.rb
|
212
215
|
- test/response/test-select.rb
|
213
|
-
- test/
|
216
|
+
- test/response/test-table-list.rb
|
217
|
+
- test/response/test-column-list.rb
|
218
|
+
- test/test-command.rb
|
214
219
|
- test/results/test-table-list.rb
|
215
220
|
- test/results/test-column-list.rb
|
216
|
-
- test/
|
217
|
-
- test/test-
|
218
|
-
- test/test-client.rb
|
221
|
+
- test/connection/test-gqtp.rb
|
222
|
+
- test/connection/test-http.rb
|
219
223
|
homepage: https://github.com/ranguba/groonga-client
|
220
224
|
licenses:
|
221
225
|
- LGPLv2.1 or later
|
@@ -243,14 +247,15 @@ specification_version: 3
|
|
243
247
|
summary: Groonga-client is a client for groonga (http://groonga.org/) implemented
|
244
248
|
with pure ruby.
|
245
249
|
test_files:
|
246
|
-
- test/
|
247
|
-
- test/
|
250
|
+
- test/run-test.rb
|
251
|
+
- test/test-client.rb
|
248
252
|
- test/response/helper.rb
|
249
253
|
- test/response/test-select.rb
|
250
|
-
- test/
|
254
|
+
- test/response/test-table-list.rb
|
255
|
+
- test/response/test-column-list.rb
|
256
|
+
- test/test-command.rb
|
251
257
|
- test/results/test-table-list.rb
|
252
258
|
- test/results/test-column-list.rb
|
253
|
-
- test/
|
254
|
-
- test/test-
|
255
|
-
- test/test-client.rb
|
259
|
+
- test/connection/test-gqtp.rb
|
260
|
+
- test/connection/test-http.rb
|
256
261
|
has_rdoc:
|
data/test/results/test-select.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
require "test/unit/rr"
|
2
|
-
|
3
|
-
class TestResultsSelect < Test::Unit::TestCase
|
4
|
-
class TestResults < self
|
5
|
-
def setup
|
6
|
-
header = [0,1372430096.70991,0.000522851943969727]
|
7
|
-
body = [[[6],[["_id","UInt32"],["country","Country"],["domain","Domain"]],[1,"japan",".com"],[2,"brazil",".com"],[3,"japan",".org"],[4,"usa",".com"],[5,"japan",".org"],[6,"usa",".com"]],
|
8
|
-
[[3],[["_key","ShortText"],["_nsubrecs","Int32"]],["japan",3],["brazil",1],["usa",2]],
|
9
|
-
[[2],[["_key","ShortText"],["_nsubrecs","Int32"]],[".com",4],[".org",2]]]
|
10
|
-
@select = Groonga::Client::Response::Select.new(header, body)
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_n_records
|
14
|
-
assert_equal(6, @select.n_records)
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_records
|
18
|
-
expected_records = [
|
19
|
-
{"_id"=>1, "country"=>"japan", "domain"=>".com"},
|
20
|
-
{"_id"=>2, "country"=>"brazil", "domain"=>".com"},
|
21
|
-
{"_id"=>3, "country"=>"japan", "domain"=>".org"},
|
22
|
-
{"_id"=>4, "country"=>"usa", "domain"=>".com"},
|
23
|
-
{"_id"=>5, "country"=>"japan", "domain"=>".org"},
|
24
|
-
{"_id"=>6, "country"=>"usa", "domain"=>".com"},
|
25
|
-
]
|
26
|
-
assert_equal(expected_records, @select.records)
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_drilldowns
|
30
|
-
expected_drilldowns = [
|
31
|
-
Drilldown.new(3, [
|
32
|
-
{"_key"=>"japan", "_nsubrecs"=>3},
|
33
|
-
{"_key"=>"brazil", "_nsubrecs"=>1},
|
34
|
-
{"_key"=>"usa", "_nsubrecs"=>2},]),
|
35
|
-
Drilldown.new(2, [
|
36
|
-
{"_key"=>".com", "_nsubrecs"=>4},
|
37
|
-
{"_key"=>".org", "_nsubrecs"=>2}]),
|
38
|
-
]
|
39
|
-
assert_equal(expected_drilldowns, @select.drilldowns.collect{|drilldown|
|
40
|
-
Drilldown.new(drilldown.n_hits, drilldown.items)
|
41
|
-
})
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
class TestNoRecordsBody < self
|
46
|
-
def setup
|
47
|
-
header = [0,1372430096.70991,0.000522851943969727]
|
48
|
-
body = [[[6],[["_id","UInt32"],["country","Country"]]]]
|
49
|
-
@select = Groonga::Client::Response::Select.new(header, body)
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_n_records
|
53
|
-
assert_equal(6, @select.n_records)
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_records
|
57
|
-
assert_equal([], @select.records)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
Drilldown = Struct.new(:n_hits, :items)
|
62
|
-
end
|
63
|
-
|