memcache 1.2.0 → 1.2.1

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.
@@ -1,34 +1,74 @@
1
1
  require File.dirname(__FILE__) + '/test_helper'
2
2
 
3
3
  module MemcacheServerTestHelper
4
- def m
5
- @memcache
4
+ def test_prefix
5
+ assert_equal nil, m.prefix = nil
6
+ assert_equal nil, m.prefix
7
+
8
+ m.set('1', 'baz', 0)
9
+ m.set('2', 'bar', 0)
10
+
11
+ assert_equal nil, m.prefix
12
+ assert_equal 'foo', m.prefix = 'foo'
13
+ assert_equal 'foo', m.prefix
14
+
15
+ m.set('2', 'foo', 0)
16
+ assert_equal nil, m.get('1')
17
+ assert_equal 'foo', m.get('2')
18
+ assert_equal({'2'=>'foo'}, m.get(['1', '2']))
19
+
20
+ assert_equal 'bar:', m.prefix = 'bar:'
21
+ assert_equal 'bar:', m.prefix
22
+
23
+ assert_equal nil, m.prefix = nil
24
+ assert_equal nil, m.prefix
25
+
26
+ assert_equal 'baz', m.get('1')
27
+ assert_equal 'bar', m.get('2')
28
+ assert_equal({'1'=>'baz','2'=>'bar'}, m.get(['1', '2']))
6
29
  end
7
30
 
8
31
  def test_set_and_get
9
- m.set(2, 'foo', 0)
10
-
32
+ assert_equal 'foo', m.set('2', 'foo', 0)
33
+
11
34
  assert_equal 'foo', m.get('2')
12
35
  assert_equal 'foo', m.get('2')
13
36
 
14
- m.set(2, 'bar', 0)
37
+ assert_equal 'bar', m.set('2', 'bar', 0)
15
38
 
16
39
  assert_equal 'bar', m.get('2')
17
40
  assert_equal 'bar', m.get('2')
18
41
  end
19
42
 
43
+ def test_spaces_in_keys
44
+ assert_equal '1', m.set('foo bar', '1', 0)
45
+
46
+ assert_equal '1', m.get('foo bar')
47
+ assert_equal '1', m.get('foo bar')
48
+
49
+ assert_equal '2', m.set('foo bar', '2', 0)
50
+
51
+ assert_equal '2', m.get('foo bar')
52
+ assert_equal '2', m.get('foo bar')
53
+
54
+ assert_equal '8', m.set('foo baz', '8', 0)
55
+
56
+ expected = { 'foo bar' => '2', 'foo baz' => '8' }
57
+ assert_equal expected, m.get(['foo bar','foo baz'])
58
+ end
59
+
20
60
  def test_expiry
21
- m.set('foo', 'foo', 1)
61
+ assert_equal 'foo', m.set('foo', 'foo', 1)
22
62
  assert_equal 'foo', m.get('foo')
23
63
 
24
- m.add('bar', 'bar', 1)
64
+ assert_equal 'bar', m.add('bar', 'bar', 1)
25
65
  assert_equal 'bar', m.get('bar')
26
66
 
27
- m.set('baz', '')
28
- m.replace('baz', 'baz', '1')
67
+ assert_equal '', m.set('baz', '')
68
+ assert_equal 'baz', m.replace('baz', 'baz', 1)
29
69
  assert_equal 'baz', m.get('baz')
30
70
 
31
- m.set('bam', 'bap', Time.now + 1)
71
+ assert_equal 'bap', m.set('bam', 'bap', (Time.now + 1).to_i)
32
72
  assert_equal 'bap', m.get('bam')
33
73
 
34
74
  sleep 2
@@ -41,114 +81,114 @@ module MemcacheServerTestHelper
41
81
 
42
82
  def test_add_and_replace
43
83
  # Replace should do nothing if key doesn't exist.
44
- m.replace('foo', 'bar')
84
+ assert_equal nil, m.replace('foo', 'bar')
45
85
  assert_equal nil, m.get('foo')
46
86
 
47
87
  # Add should only work if key doesn't exist.
48
- m.add('foo', 'foo')
88
+ assert_equal 'foo', m.add('foo', 'foo')
49
89
  assert_equal 'foo', m.get('foo')
50
90
  assert_equal nil, m.add('foo', 'bar')
51
91
  assert_equal 'foo', m.get('foo')
52
-
92
+
53
93
  # Replace should only work if key doesn't exist.
54
- m.replace('foo', 'bar')
94
+ assert_equal 'bar', m.replace('foo', 'bar')
55
95
  assert_equal 'bar', m.get('foo')
56
96
  end
57
97
 
58
98
  def test_append_and_prepend
59
- m.append('foo', 'bar')
99
+ assert_equal false, m.append('foo', 'bar')
60
100
  assert_equal nil, m.get('foo')
61
101
 
62
102
  m.set('foo', 'foo')
63
- m.append('foo', 'bar')
103
+ assert_equal true, m.append('foo', 'bar')
64
104
  assert_equal 'foobar', m.get('foo')
65
105
 
66
- m.prepend('foo', 'baz')
106
+ assert_equal true, m.prepend('foo', 'baz')
67
107
  assert_equal 'bazfoobar', m.get('foo')
68
108
  end
69
109
 
70
110
  def test_incr
71
111
  # incr does nothing if value doesn't exist
72
- m.incr('foo')
112
+ assert_equal nil, m.incr('foo')
73
113
  assert_equal nil, m.get('foo')
74
114
 
75
- m.decr('foo', 1)
115
+ assert_equal nil, m.decr('foo', 1)
76
116
  assert_equal nil, m.get('foo')
77
117
 
78
118
  m.set('foo', '0')
79
- m.incr('foo')
119
+ assert_equal 1, m.incr('foo')
80
120
  assert_equal '1', m.get('foo')
81
121
 
82
- m.incr('foo', 52)
122
+ assert_equal 53, m.incr('foo', 52)
83
123
  assert_equal '53', m.get('foo')
84
124
 
85
- m.decr('foo', 43)
125
+ assert_equal 10, m.decr('foo', 43)
86
126
  assert_equal '10', m.get('foo')
87
127
 
88
128
  # Cannot go below zero.
89
- m.decr('foo', 100)
129
+ assert_equal 0, m.decr('foo', 100)
90
130
  assert_equal '0', m.get('foo').strip
91
131
  end
92
132
 
93
133
  def test_multi_get
94
- m.set(2, '1,2,3')
95
- m.set(3, '4,5')
96
-
134
+ m.set('2', '1,2,3')
135
+ m.set('3', '4,5')
136
+
97
137
  expected = { '2' => '1,2,3', '3' => '4,5' }
98
- assert_equal expected, m.get([2,3])
138
+ assert_equal expected, m.get(['2','3'])
139
+ assert_equal '4,5', m.get(['3'])['3']
140
+ assert_equal({}, m.get([]))
99
141
  end
100
-
142
+
101
143
  def test_delete
102
- m.set(2, '1,2,3')
103
-
104
- assert_equal '1,2,3', m.get(2)
144
+ m.set('2', '1,2,3')
105
145
 
106
- m.delete(2)
107
-
108
- assert_equal nil, m.get(2)
146
+ assert_equal '1,2,3', m.get('2')
147
+ assert_equal true, m.delete('2')
148
+ assert_equal nil, m.get('2')
109
149
  end
110
150
 
111
151
  def test_flush_all
112
- m.set(2, 'bar')
113
-
114
- assert_equal 'bar', m.get(2)
152
+ m.set('2', 'bar')
153
+
154
+ assert_equal 'bar', m.get('2')
115
155
 
116
156
  m.flush_all
117
-
118
- assert_equal nil, m.get(2)
157
+
158
+ assert_equal nil, m.get('2')
119
159
  end
120
-
160
+
121
161
  module AdvancedMethods
122
162
  def test_flags
123
163
  m.set('thom', 'hartmann', 0)
124
164
  value = m.gets('thom')
125
165
  assert_equal 0, value.memcache_flags
126
-
166
+
127
167
  m.set('thom', 'hartmann', 0, 0b11110001)
128
168
  value = m.gets('thom')
129
169
  assert_equal 0b11110001, value.memcache_flags
130
-
170
+
131
171
  value = m.get('thom')
132
172
  assert_equal 0b11110001, value.memcache_flags
133
-
173
+
134
174
  m.set('thom', 'hartmann', 0, 0b10101010)
135
175
  value = m.get('thom')
136
176
  assert_equal 0b10101010, value.memcache_flags
137
177
  end
138
-
178
+
139
179
  def test_gets_and_cas
140
180
  m.set('thom', 'hartmann')
141
-
142
- value = m.gets('thom')
181
+
182
+ value = m.gets('thom')
143
183
  assert_equal 'hartmann', value
144
- m.cas('thom', 'thompson', value.memcache_cas)
184
+ assert_equal 'thompson', m.cas('thom', 'thompson', value.memcache_cas)
145
185
  assert_equal 'thompson', m.get('thom')
146
-
186
+
147
187
  value = m.gets('thom')
148
188
  m.delete('thom')
149
189
  assert_nil m.cas('thom', 'hartson', value.memcache_cas)
150
190
  assert_equal nil, m.get('thom')
151
-
191
+
152
192
  m.add('thom', 'hartmann')
153
193
  value = m.gets('thom')
154
194
  m.set('thom', 'foo')
@@ -3,33 +3,25 @@ require File.dirname(__FILE__) + '/test_helper'
3
3
 
4
4
  class MemcacheTest < Test::Unit::TestCase
5
5
  PORTS = [11212, 11213, 11214, 11215, 11216, 11217]
6
-
7
- def m
8
- @memcache
9
- end
10
-
11
6
  def setup
12
- start_memcache(*PORTS)
13
- @memcache = Memcache.new(:servers => PORTS.collect {|p| "localhost:#{p}"})
14
- end
15
-
16
- def teardown
17
- stop_memcache(*PORTS)
7
+ init_memcache(*PORTS) do
8
+ Memcache.new(:servers => PORTS.collect {|p| "localhost:#{p}"})
9
+ end
18
10
  end
19
11
 
20
- def test_get_and_set
12
+ def test_get_and_set
21
13
  100.times do |i|
22
14
  m.set(i.to_s, i)
23
15
  assert_equal i, m.get(i.to_s)
24
16
  end
25
17
 
26
- keys = (0..200).to_a
18
+ keys = (0..200).collect {|key| key.to_s}
27
19
  results = m.get(keys)
28
20
  assert_equal 100, results.size
29
21
  results.each do |key, value|
30
22
  assert_equal key.to_i, value
31
23
  end
32
-
24
+
33
25
  100.times do |i|
34
26
  m.set(i.to_s, i.to_s, :raw => true)
35
27
  assert_equal i.to_s, m.get(i.to_s, :raw => true)
@@ -68,7 +60,7 @@ class MemcacheTest < Test::Unit::TestCase
68
60
  assert_equal nil, m.get(i.to_s, :raw => true)
69
61
 
70
62
  m.add(i.to_s, 'homerun', :raw => true)
71
- assert_equal 'homerun', m.get(i.to_s, :raw => true)
63
+ assert_equal 'homerun', m.get(i.to_s, :raw => true)
72
64
  end
73
65
  end
74
66
 
@@ -92,7 +84,7 @@ class MemcacheTest < Test::Unit::TestCase
92
84
  assert_equal [i, :foo], m["foo#{i}"]
93
85
 
94
86
  m.get_or_set("foo#{i}") {raise}
95
- assert_equal [i, :foo], m["foo#{i}"]
87
+ assert_equal [i, :foo], m["foo#{i}"]
96
88
 
97
89
  # Overwrite if changed.
98
90
  m.get_or_set("bar#{i}") do
@@ -109,7 +101,7 @@ class MemcacheTest < Test::Unit::TestCase
109
101
  assert_equal [:foo, i], m["foo#{i}"]
110
102
 
111
103
  m.get_or_add("foo#{i}") {raise}
112
- assert_equal [:foo, i], m["foo#{i}"]
104
+ assert_equal [:foo, i], m["foo#{i}"]
113
105
 
114
106
  # Don't overwrite if changed.
115
107
  m.get_or_add("bar#{i}") do
@@ -141,7 +133,7 @@ class MemcacheTest < Test::Unit::TestCase
141
133
  assert_equal i, m.get(i.to_s)
142
134
  end
143
135
 
144
- keys = (0...200).to_a
136
+ keys = (0...200).collect {|key| key.to_s}
145
137
  results = m.get_some(keys) do |missing_keys|
146
138
  assert_equal 100, missing_keys.size
147
139
  r = {}
@@ -160,7 +152,7 @@ class MemcacheTest < Test::Unit::TestCase
160
152
  def test_get_with_reset_expiry
161
153
  m.add('foo', 'quick brown fox', :expiry => 1)
162
154
  assert_equal 'quick brown fox', m.get('foo', :expiry => 2)
163
- sleep(1)
155
+ sleep(1)
164
156
  assert_equal 'quick brown fox', m.get('foo')
165
157
  end
166
158
 
data/test/test_helper.rb CHANGED
@@ -7,20 +7,45 @@ require 'pp'
7
7
  $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
8
8
  require 'memcache'
9
9
 
10
- system 'killall memcached 2> /dev/null'
11
-
12
10
  class Test::Unit::TestCase
13
- def start_memcache(*ports)
11
+ @@servers ||= {}
12
+ def init_memcache(*ports)
14
13
  ports.each do |port|
15
- system("memcached -p #{port} -U 0 -d -P /tmp/memcached_#{port}.pid")
14
+ @@servers[port] ||= start_memcache(port)
16
15
  end
17
- sleep 0.1
16
+
17
+ @memcache = yield
18
+ @memcache.flush_all
18
19
  end
19
20
 
20
- def stop_memcache(*ports)
21
- ports.each do |port|
22
- pid = File.read("/tmp/memcached_#{port}.pid").to_i
23
- Process.kill('TERM', pid)
21
+ def m
22
+ @memcache
23
+ end
24
+
25
+ def start_memcache(port)
26
+ system("memcached -p #{port} -U 0 -d -P /tmp/memcached_#{port}.pid")
27
+ sleep 1
28
+ File.read("/tmp/memcached_#{port}.pid")
29
+ end
30
+
31
+ def self.with_prefixes(*prefixes)
32
+ # Define new test_* methods that calls super for every prefix. This only works for
33
+ # methods that are mixed in, and should be called before you define custom test methods.
34
+ opts = prefixes.last.is_a?(Hash) ? prefixes.last : {}
35
+ instance_methods.each do |method_name|
36
+ next unless method_name =~ /^test_/
37
+ next if opts[:except] and opts[:except].include?(method_name)
38
+ next if opts[:only] and not opts[:only].include?(method_name)
39
+
40
+ define_method(method_name) do |*args|
41
+ prefixes.each do |prefix|
42
+ assert_equal prefix, m.prefix = prefix
43
+ assert_equal prefix, m.prefix
44
+ super
45
+ assert_equal nil, m.prefix = nil
46
+ assert_equal nil, m.prefix
47
+ end
48
+ end
24
49
  end
25
50
  end
26
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memcache
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Balthrop
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-17 00:00:00 -08:00
12
+ date: 2010-03-17 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -28,17 +28,23 @@ files:
28
28
  - README.rdoc
29
29
  - Rakefile
30
30
  - VERSION.yml
31
+ - bench/benchmark.rb
32
+ - ext/extconf.rb
33
+ - ext/libmemcached-0.38.tar.gz
34
+ - ext/native_server.c
31
35
  - lib/memcache.rb
36
+ - lib/memcache/base.rb
32
37
  - lib/memcache/local_server.rb
33
38
  - lib/memcache/migration.rb
34
39
  - lib/memcache/null_server.rb
35
40
  - lib/memcache/pg_server.rb
36
- - lib/memcache/segmented_server.rb
41
+ - lib/memcache/segmented.rb
37
42
  - lib/memcache/server.rb
38
- - memcache.gemspec
39
43
  - test/memcache_local_server_test.rb
44
+ - test/memcache_native_server_test.rb
40
45
  - test/memcache_null_server_test.rb
41
46
  - test/memcache_pg_server_test.rb
47
+ - test/memcache_segmented_native_server_test.rb
42
48
  - test/memcache_segmented_server_test.rb
43
49
  - test/memcache_server_test.rb
44
50
  - test/memcache_server_test_helper.rb
@@ -74,8 +80,10 @@ specification_version: 3
74
80
  summary: Advanced ruby memcache client
75
81
  test_files:
76
82
  - test/memcache_local_server_test.rb
83
+ - test/memcache_native_server_test.rb
77
84
  - test/memcache_null_server_test.rb
78
85
  - test/memcache_pg_server_test.rb
86
+ - test/memcache_segmented_native_server_test.rb
79
87
  - test/memcache_segmented_server_test.rb
80
88
  - test/memcache_server_test.rb
81
89
  - test/memcache_server_test_helper.rb
data/memcache.gemspec DELETED
@@ -1,69 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{memcache}
8
- s.version = "1.2.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Justin Balthrop"]
12
- s.date = %q{2009-12-17}
13
- s.description = %q{Ruby client for memcached supporting advanced protocol features and pluggable architecture.}
14
- s.email = %q{code@justinbalthrop.com}
15
- s.extensions = ["ext/extconf.rb"]
16
- s.extra_rdoc_files = [
17
- "LICENSE",
18
- "README.rdoc"
19
- ]
20
- s.files = [
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION.yml",
26
- "lib/memcache.rb",
27
- "lib/memcache/local_server.rb",
28
- "lib/memcache/migration.rb",
29
- "lib/memcache/null_server.rb",
30
- "lib/memcache/pg_server.rb",
31
- "lib/memcache/segmented_server.rb",
32
- "lib/memcache/server.rb",
33
- "memcache.gemspec",
34
- "test/memcache_local_server_test.rb",
35
- "test/memcache_null_server_test.rb",
36
- "test/memcache_pg_server_test.rb",
37
- "test/memcache_segmented_server_test.rb",
38
- "test/memcache_server_test.rb",
39
- "test/memcache_server_test_helper.rb",
40
- "test/memcache_test.rb",
41
- "test/test_helper.rb"
42
- ]
43
- s.homepage = %q{http://github.com/ninjudd/memcache}
44
- s.rdoc_options = ["--charset=UTF-8"]
45
- s.require_paths = ["lib"]
46
- s.rubygems_version = %q{1.3.5}
47
- s.summary = %q{Advanced ruby memcache client}
48
- s.test_files = [
49
- "test/memcache_local_server_test.rb",
50
- "test/memcache_null_server_test.rb",
51
- "test/memcache_pg_server_test.rb",
52
- "test/memcache_segmented_server_test.rb",
53
- "test/memcache_server_test.rb",
54
- "test/memcache_server_test_helper.rb",
55
- "test/memcache_test.rb",
56
- "test/test_helper.rb"
57
- ]
58
-
59
- if s.respond_to? :specification_version then
60
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
61
- s.specification_version = 3
62
-
63
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
64
- else
65
- end
66
- else
67
- end
68
- end
69
-