kyototycoon-client 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f7e73da497ce6d2c925987e974083238447360b5
4
+ data.tar.gz: a9f89abc3fdf1998926a2e8a8e62ad9c86cdc3f9
5
+ SHA512:
6
+ metadata.gz: b8654438189056f4f5f7bc2080c7bb36fdd05b66487abe6c8d4b7c4d25b9c4c93830cf7b19204f251fb860c0d096179ce530063294b2023081c5420e74a706d7
7
+ data.tar.gz: 94bae80a1a18b9bd7fe5ccbd8ec0992e89f89f76b193f3b5da9ea8505794bcae6dd1e2a501a1586a15c98c31a2a6354d5c266f8cb287719adc775eb284bc5421
data/README.md CHANGED
@@ -5,6 +5,10 @@ KyotoTycoon ruby client with TCP connection and binary protocol.
5
5
  ## Changelog
6
6
 
7
7
  * 0.0.2: Add dbid parameter to remove_bulk
8
+ * 0.0.3: Do nothing if record is empty
9
+ * 0.0.4: Support multibyte characters
10
+ * 0.0.5: Fixed empty key bug
11
+ * 0.0.6: Fixed script protocol bug
8
12
 
9
13
 
10
14
  ## Installation
@@ -75,3 +79,8 @@ Client receives response as key-value set format.
75
79
  => {"keyX" => "valueX", "keyY" => "valueY", ... }
76
80
 
77
81
  Number of key sent and number of key received are depend on LUA function definition.
82
+
83
+ You can test script protocol as below:
84
+
85
+ ktserver -port [your port] -scr test/lua/echo.lua
86
+ rake test HOST=localhost PORT=[your port] SCRIPT=1
@@ -84,7 +84,7 @@ module Kyototycoon
84
84
  keyvalues.each do |k, v|
85
85
  records.push(Record.new(k, v))
86
86
  end
87
- results = @connection.script(records)
87
+ results = @connection.script(method, records)
88
88
  return {} if results == nil
89
89
  results.inject({}) {|map, rec| map[rec.key] = rec.value; map;}
90
90
  end
@@ -95,9 +95,10 @@ module Kyototycoon
95
95
  count.to_i # number of registerd
96
96
  end
97
97
 
98
- def script(records)
99
- header_entries = [Magic::PLAY_SCRIPT, Flag::RESERVED, records.length]
100
- request = header_entries.pack("CNN")
98
+ def script(method, records)
99
+ header_entries = [Magic::PLAY_SCRIPT, Flag::RESERVED, method.length, records.length]
100
+ request = header_entries.pack("CNNN")
101
+ request << method.dup.force_encoding("binary")
101
102
 
102
103
  records.each do |r|
103
104
  k = r.key.dup.force_encoding("binary")
@@ -1,5 +1,5 @@
1
1
  module Kyototycoon
2
2
  class Client
3
- VERSION = "0.0.5"
3
+ VERSION = "0.0.6"
4
4
  end
5
5
  end
@@ -147,14 +147,15 @@ class ClientTest < Test::Unit::TestCase
147
147
  end
148
148
 
149
149
 
150
- # def test_script
151
- # return unless @client
152
-
153
- # @client.open
154
- # assert_equal( @client.script("dummy", "key", "value"), {} )
155
- # assert_equal( @client.script_bulk("dummy", {}), {} )
156
- # @client.close
157
- # end
150
+ def test_script
151
+ return unless ENV["SCRIPT"].to_i == 1
152
+ return unless @client
153
+
154
+ @client.open
155
+ assert_equal( @client.script("echo", "key", "value"), {"key" => "value"} )
156
+ assert_equal( @client.script_bulk("echo", {"key" => "value", "foo" => "bar"}), {"key" => "value", "foo" => "bar"} )
157
+ @client.close
158
+ end
158
159
  end
159
160
 
160
161
  class MockConnection
data/test/lua/echo.lua ADDED
@@ -0,0 +1,12 @@
1
+ kt = __kyototycoon__
2
+ db = kt.db
3
+
4
+ function echo(inmap, outmap)
5
+
6
+ for k, v in pairs(inmap) do
7
+ outmap[k] = v
8
+ end
9
+
10
+ return kt.RVSUCCESS
11
+
12
+ end
metadata CHANGED
@@ -1,46 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kyototycoon-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
5
- prerelease:
4
+ version: 0.0.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - imasho
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-03-04 00:00:00.000000000 Z
11
+ date: 2015-03-18 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.3'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.3'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  description: KyotoTycoon binary access module, supports get(bulk), set(bulk), remove(bulk),
@@ -51,7 +46,7 @@ executables: []
51
46
  extensions: []
52
47
  extra_rdoc_files: []
53
48
  files:
54
- - .gitignore
49
+ - ".gitignore"
55
50
  - Gemfile
56
51
  - LICENSE.txt
57
52
  - README.md
@@ -66,32 +61,33 @@ files:
66
61
  - test/benchmark.rb
67
62
  - test/helper.rb
68
63
  - test/kyototycoon/client/test_client.rb
64
+ - test/lua/echo.lua
69
65
  homepage: ''
70
66
  licenses:
71
67
  - MIT
68
+ metadata: {}
72
69
  post_install_message:
73
70
  rdoc_options: []
74
71
  require_paths:
75
72
  - lib
76
73
  required_ruby_version: !ruby/object:Gem::Requirement
77
- none: false
78
74
  requirements:
79
- - - ! '>='
75
+ - - ">="
80
76
  - !ruby/object:Gem::Version
81
77
  version: '0'
82
78
  required_rubygems_version: !ruby/object:Gem::Requirement
83
- none: false
84
79
  requirements:
85
- - - ! '>='
80
+ - - ">="
86
81
  - !ruby/object:Gem::Version
87
82
  version: '0'
88
83
  requirements: []
89
84
  rubyforge_project:
90
- rubygems_version: 1.8.23
85
+ rubygems_version: 2.2.2
91
86
  signing_key:
92
- specification_version: 3
87
+ specification_version: 4
93
88
  summary: KyotoTycoon binary access module
94
89
  test_files:
95
90
  - test/benchmark.rb
96
91
  - test/helper.rb
97
92
  - test/kyototycoon/client/test_client.rb
93
+ - test/lua/echo.lua