kyototycoon-client 0.0.5 → 0.0.6

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 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