mob-dalli 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,175 @@
1
+ require 'helper'
2
+ require 'memcached_mock'
3
+ if defined?(RUBY_ENGINE) && RUBY_ENGINE != 'jruby'
4
+ begin
5
+ require 'em-spec/test'
6
+
7
+ class TestSynchrony < Test::Unit::TestCase
8
+ include EM::TestHelper
9
+
10
+ context 'using a live server' do
11
+
12
+ should "support get/set" do
13
+ em do
14
+ memcached(19122,'',:async => true) do |dc|
15
+ dc.flush
16
+
17
+ val1 = "1234567890"*105000
18
+ assert_error Dalli::DalliError, /too large/ do
19
+ dc.set('a', val1)
20
+ val2 = dc.get('a')
21
+ assert_equal val1, val2
22
+ end
23
+
24
+ val1 = "1234567890"*100000
25
+ dc.set('a', val1)
26
+ val2 = dc.get('a')
27
+ assert_equal val1, val2
28
+
29
+ assert_equal true, dc.set('a', nil)
30
+ assert_nil dc.get('a')
31
+
32
+ done
33
+ end
34
+ end
35
+ end
36
+
37
+ should "support the fetch operation" do
38
+ em do
39
+ memcached(19122,'',:async => true) do |dc|
40
+ dc.flush
41
+
42
+ expected = { 'blah' => 'blerg!' }
43
+ executed = false
44
+ value = dc.fetch('fetch_key') do
45
+ executed = true
46
+ expected
47
+ end
48
+ assert_equal expected, value
49
+ assert_equal true, executed
50
+
51
+ executed = false
52
+ value = dc.fetch('fetch_key') do
53
+ executed = true
54
+ expected
55
+ end
56
+ assert_equal expected, value
57
+ assert_equal false, executed
58
+
59
+ done
60
+ end
61
+ end
62
+ end
63
+
64
+ should "support multi-get" do
65
+ em do
66
+ memcached(19122,'',:async => true) do |dc|
67
+ dc.close
68
+ dc.flush
69
+ resp = dc.get_multi(%w(a b c d e f))
70
+ assert_equal({}, resp)
71
+
72
+ dc.set('a', 'foo')
73
+ dc.set('b', 123)
74
+ dc.set('c', %w(a b c))
75
+ resp = dc.get_multi(%w(a b c d e f))
76
+ assert_equal({ 'a' => 'foo', 'b' => 123, 'c' => %w(a b c) }, resp)
77
+
78
+ # Perform a huge multi-get with 10,000 elements.
79
+ arr = []
80
+ dc.multi do
81
+ 10_000.times do |idx|
82
+ dc.set idx, idx
83
+ arr << idx
84
+ end
85
+ end
86
+
87
+ result = dc.get_multi(arr)
88
+ assert_equal(10_000, result.size)
89
+ assert_equal(1000, result['1000'])
90
+
91
+ done
92
+ end
93
+ end
94
+ end
95
+
96
+ should "pass a simple smoke test" do
97
+ em do
98
+ memcached(19122,'',:async => true) do |dc|
99
+ resp = dc.flush
100
+ assert_not_nil resp
101
+ assert_equal [true, true], resp
102
+
103
+ assert_equal true, dc.set(:foo, 'bar')
104
+ assert_equal 'bar', dc.get(:foo)
105
+
106
+ resp = dc.get('123')
107
+ assert_equal nil, resp
108
+
109
+ resp = dc.set('123', 'xyz')
110
+ assert_equal true, resp
111
+
112
+ resp = dc.get('123')
113
+ assert_equal 'xyz', resp
114
+
115
+ resp = dc.set('123', 'abc')
116
+ assert_equal true, resp
117
+
118
+ dc.prepend('123', '0')
119
+ dc.append('123', '0')
120
+
121
+ assert_raises Dalli::DalliError do
122
+ resp = dc.get('123')
123
+ end
124
+
125
+ dc.close
126
+ dc = nil
127
+
128
+ dc = Dalli::Client.new('localhost:19122', :async => true)
129
+
130
+ resp = dc.set('456', 'xyz', 0, :raw => true)
131
+ assert_equal true, resp
132
+
133
+ resp = dc.prepend '456', '0'
134
+ assert_equal true, resp
135
+
136
+ resp = dc.append '456', '9'
137
+ assert_equal true, resp
138
+
139
+ resp = dc.get('456', :raw => true)
140
+ assert_equal '0xyz9', resp
141
+
142
+ resp = dc.stats
143
+ assert_equal Hash, resp.class
144
+
145
+ dc.close
146
+
147
+ done
148
+ end
149
+ end
150
+ end
151
+
152
+ context 'with compression' do
153
+ should 'allow large values' do
154
+ em do
155
+ memcached(19122,'',:async => true) do |dc|
156
+ dalli = Dalli::Client.new(dc.instance_variable_get(:@servers), :compression => true, :async => true)
157
+
158
+ value = "0"*1024*1024
159
+ assert_raise Dalli::DalliError, /too large/ do
160
+ dc.set('verylarge', value)
161
+ end
162
+ dalli.set('verylarge', value)
163
+ end
164
+
165
+ done
166
+ end
167
+ end
168
+ end
169
+
170
+ end
171
+ end
172
+ rescue LoadError
173
+ puts "Skipping em-synchrony tests"
174
+ end
175
+ end
metadata ADDED
@@ -0,0 +1,172 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mob-dalli
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 1
9
+ - 4
10
+ version: 1.1.4
11
+ platform: ruby
12
+ authors:
13
+ - Mike Perham
14
+ - Aaron Daniel
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2011-11-28 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: shoulda
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: mocha
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: rails
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 7
58
+ segments:
59
+ - 3
60
+ - 0
61
+ - 0
62
+ version: 3.0.0
63
+ type: :development
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: memcache-client
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 61
74
+ segments:
75
+ - 1
76
+ - 8
77
+ - 5
78
+ version: 1.8.5
79
+ type: :development
80
+ version_requirements: *id004
81
+ description: High performance memcached client for Ruby
82
+ email: mperham@gmail.com
83
+ executables: []
84
+
85
+ extensions: []
86
+
87
+ extra_rdoc_files: []
88
+
89
+ files:
90
+ - lib/action_dispatch/middleware/session/dalli_store.rb
91
+ - lib/active_support/cache/dalli_store.rb
92
+ - lib/active_support/cache/dalli_store23.rb
93
+ - lib/dalli/client.rb
94
+ - lib/dalli/compatibility.rb
95
+ - lib/dalli/memcache-client.rb
96
+ - lib/dalli/options.rb
97
+ - lib/dalli/ring.rb
98
+ - lib/dalli/server.rb
99
+ - lib/dalli/socket.rb
100
+ - lib/dalli/version.rb
101
+ - lib/mob-dalli.rb
102
+ - lib/rack/session/dalli.rb
103
+ - LICENSE
104
+ - README.md
105
+ - History.md
106
+ - Rakefile
107
+ - Gemfile
108
+ - mob-dalli.gemspec
109
+ - Performance.md
110
+ - Upgrade.md
111
+ - test/abstract_unit.rb
112
+ - test/benchmark_test.rb
113
+ - test/helper.rb
114
+ - test/memcached_mock.rb
115
+ - test/test_active_support.rb
116
+ - test/test_compatibility.rb
117
+ - test/test_dalli.rb
118
+ - test/test_encoding.rb
119
+ - test/test_failover.rb
120
+ - test/test_network.rb
121
+ - test/test_ring.rb
122
+ - test/test_sasl.rb
123
+ - test/test_session_store.rb
124
+ - test/test_synchrony.rb
125
+ homepage: http://github.com/amdtech/dalli
126
+ licenses: []
127
+
128
+ post_install_message:
129
+ rdoc_options:
130
+ - --charset=UTF-8
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ hash: 3
139
+ segments:
140
+ - 0
141
+ version: "0"
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ hash: 3
148
+ segments:
149
+ - 0
150
+ version: "0"
151
+ requirements: []
152
+
153
+ rubyforge_project:
154
+ rubygems_version: 1.8.6
155
+ signing_key:
156
+ specification_version: 3
157
+ summary: High performance memcached client for Ruby
158
+ test_files:
159
+ - test/abstract_unit.rb
160
+ - test/benchmark_test.rb
161
+ - test/helper.rb
162
+ - test/memcached_mock.rb
163
+ - test/test_active_support.rb
164
+ - test/test_compatibility.rb
165
+ - test/test_dalli.rb
166
+ - test/test_encoding.rb
167
+ - test/test_failover.rb
168
+ - test/test_network.rb
169
+ - test/test_ring.rb
170
+ - test/test_sasl.rb
171
+ - test/test_session_store.rb
172
+ - test/test_synchrony.rb