couchbase 1.3.1-x86-mingw32 → 1.3.2-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,54 @@
3
3
  This document is a list of user visible feature changes and important
4
4
  bugfixes. Do not forget to update this doc in every important patch.
5
5
 
6
+ ## 1.3.2 (2013-07-10)
7
+
8
+ * [major] RCBC-133 Allow application to select the strategy of reading
9
+ from replica nodes. **This version requires libcouchbase >= 2.0.7.**
10
+ Now three strategies are available:
11
+
12
+ * `:first` - synonym to `true`, previous behaviour now the
13
+ default. It means that the library will sequentially iterate
14
+ over all replicas in the configuration supplied by the cluster
15
+ and will return as soon as it finds a successful response, or
16
+ report an error.
17
+
18
+ c.get("foo", :replica => true)
19
+ c.get("foo", :replica => :first)
20
+ #=> "bar"
21
+ c.get("foo", :replica => :first, :extended => true)
22
+ #=> ["bar", 0, 11218368683493556224]
23
+
24
+ * `:all` - query all replicas in parallel. In this case the method
25
+ will return the array of the values on the all replica nodes without
26
+ a particular order. Also if the key isn't on the node, it will be
27
+ skipped in the result array.
28
+
29
+ c.get("foo", :replica => :all)
30
+ #=> ["bar", "bar", "bar"]
31
+ c.get("foo", :replica => :all, :extended => true)
32
+ #=> [["bar", 0, 11218368683493556224],
33
+ # ["bar", 0, 11218368683493556224],
34
+ # ["bar", 0, 11218368683493556224]]
35
+
36
+ * `Fixnum` - you can also select specific replica node by its
37
+ index in the cluster configuration. It should be in interval
38
+ `0...c.num_replicas`
39
+
40
+ 0...c.num_replicas
41
+ #=> 0...3
42
+ c.get("foo", :replica => 1)
43
+ #=> "bar"
44
+ c.get("foo", :replica => 42)
45
+ #=> ArgumentError: replica index should be in interval 0...3
46
+
47
+ Note that applications should not assume the order of the
48
+ replicas indicates more recent data is at a lower index number.
49
+ It is up to the application to determine which version of a
50
+ document/item it may wish to use in the case of retrieving data
51
+ from a replica.
52
+
53
+
6
54
  ## 1.3.1 (2013-06-05)
7
55
 
8
56
  * [major] RCBC-131 Couchbase::Cluster instance shouldn't require
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
40
40
  s.add_runtime_dependency 'connection_pool', '~> 1.0.0'
41
41
 
42
42
  s.add_development_dependency 'rake'
43
- s.add_development_dependency 'minitest'
43
+ s.add_development_dependency 'minitest', '~> 5.0.4'
44
44
  s.add_development_dependency 'rake-compiler', '>= 0.7.5'
45
45
  s.add_development_dependency 'mini_portile'
46
46
  s.add_development_dependency 'yajl-ruby', '~> 1.1.0'
@@ -373,7 +373,7 @@ cb_params_store_parse_arguments(struct cb_params_st *params, int argc, VALUE arg
373
373
  static void
374
374
  cb_params_get_alloc(struct cb_params_st *params, lcb_size_t size)
375
375
  {
376
- if (params->cmd.get.replica) {
376
+ if (RTEST(params->cmd.get.replica)) {
377
377
  _alloc_data_for_s(get, lcb_get_replica_cmd_t, size, items_gr, ptr_gr);
378
378
  } else {
379
379
  _alloc_data_for(get, lcb_get_cmd_t);
@@ -386,9 +386,18 @@ cb_params_get_init_item(struct cb_params_st *params, lcb_size_t idx,
386
386
  {
387
387
  key_obj = cb_unify_key(params->bucket, key_obj, 1);
388
388
  rb_ary_push(params->ensurance, key_obj);
389
- if (params->cmd.get.replica) {
390
- params->cmd.get.items_gr[idx].v.v0.key = RSTRING_PTR(key_obj);
391
- params->cmd.get.items_gr[idx].v.v0.nkey = RSTRING_LEN(key_obj);
389
+ if (RTEST(params->cmd.get.replica)) {
390
+ params->cmd.get.items_gr[idx].version = 1;
391
+ params->cmd.get.items_gr[idx].v.v1.key = RSTRING_PTR(key_obj);
392
+ params->cmd.get.items_gr[idx].v.v1.nkey = RSTRING_LEN(key_obj);
393
+ if (params->cmd.get.replica == cb_sym_first || params->cmd.get.replica == Qtrue) {
394
+ params->cmd.get.items_gr[idx].v.v1.strategy = LCB_REPLICA_FIRST;
395
+ } else if (params->cmd.get.replica == cb_sym_all) {
396
+ params->cmd.get.items_gr[idx].v.v1.strategy = LCB_REPLICA_ALL;
397
+ } else {
398
+ params->cmd.get.items_gr[idx].v.v1.strategy = LCB_REPLICA_SELECT;
399
+ params->cmd.get.items_gr[idx].v.v1.index = FIX2INT(params->cmd.get.replica);
400
+ }
392
401
  } else {
393
402
  params->cmd.get.items[idx].v.v0.key = RSTRING_PTR(key_obj);
394
403
  params->cmd.get.items[idx].v.v0.nkey = RSTRING_LEN(key_obj);
@@ -416,7 +425,17 @@ cb_params_get_parse_options(struct cb_params_st *params, VALUE options)
416
425
  if (NIL_P(options)) {
417
426
  return;
418
427
  }
419
- params->cmd.get.replica = RTEST(rb_hash_aref(options, cb_sym_replica));
428
+ tmp = rb_hash_aref(options, cb_sym_replica);
429
+ if (tmp == Qtrue || tmp == cb_sym_all || tmp == cb_sym_first) {
430
+ params->cmd.get.replica = tmp;
431
+ } else if (TYPE(tmp) == T_FIXNUM) {
432
+ int nr = NUM2INT(tmp);
433
+ int max = lcb_get_num_replicas(params->bucket->handle);
434
+ if (nr < 0 || nr >= max) {
435
+ rb_raise(rb_eArgError, "replica index should be in interval 0...%d", max);
436
+ }
437
+ params->cmd.get.replica = tmp;
438
+ }
420
439
  params->cmd.get.extended = RTEST(rb_hash_aref(options, cb_sym_extended));
421
440
  params->cmd.get.assemble_hash = RTEST(rb_hash_aref(options, cb_sym_assemble_hash));
422
441
  tmp = rb_hash_lookup2(options, cb_sym_quiet, Qundef);
@@ -876,6 +895,7 @@ do_params_build(VALUE ptr)
876
895
  params->cmd.get.quiet = params->bucket->quiet;
877
896
  params->cmd.get.transcoder = params->bucket->transcoder;
878
897
  params->cmd.get.transcoder_opts = rb_hash_new();
898
+ params->cmd.get.replica = Qfalse;
879
899
  cb_params_get_parse_options(params, opts);
880
900
  cb_params_get_parse_arguments(params, argc, argv);
881
901
  break;
@@ -36,6 +36,7 @@ VALUE em_m;
36
36
 
37
37
  /* Symbols */
38
38
  ID cb_sym_add;
39
+ ID cb_sym_all;
39
40
  ID cb_sym_append;
40
41
  ID cb_sym_assemble_hash;
41
42
  ID cb_sym_async;
@@ -62,9 +63,10 @@ ID cb_sym_engine;
62
63
  ID cb_sym_environment;
63
64
  ID cb_sym_eventmachine;
64
65
  ID cb_sym_extended;
66
+ ID cb_sym_first;
65
67
  ID cb_sym_flags;
66
- ID cb_sym_format;
67
68
  ID cb_sym_forced;
69
+ ID cb_sym_format;
68
70
  ID cb_sym_found;
69
71
  ID cb_sym_get;
70
72
  ID cb_sym_hostname;
@@ -1151,6 +1153,7 @@ Init_couchbase_ext(void)
1151
1153
  cb_id_verify_observe_options = rb_intern("verify_observe_options");
1152
1154
 
1153
1155
  cb_sym_add = ID2SYM(rb_intern("add"));
1156
+ cb_sym_all = ID2SYM(rb_intern("all"));
1154
1157
  cb_sym_append = ID2SYM(rb_intern("append"));
1155
1158
  cb_sym_assemble_hash = ID2SYM(rb_intern("assemble_hash"));
1156
1159
  cb_sym_async = ID2SYM(rb_intern("async"));
@@ -1176,9 +1179,10 @@ Init_couchbase_ext(void)
1176
1179
  cb_sym_environment = ID2SYM(rb_intern("environment"));
1177
1180
  cb_sym_eventmachine = ID2SYM(rb_intern("eventmachine"));
1178
1181
  cb_sym_extended = ID2SYM(rb_intern("extended"));
1182
+ cb_sym_first = ID2SYM(rb_intern("first"));
1179
1183
  cb_sym_flags = ID2SYM(rb_intern("flags"));
1180
- cb_sym_format = ID2SYM(rb_intern("format"));
1181
1184
  cb_sym_forced = ID2SYM(rb_intern("forced"));
1185
+ cb_sym_format = ID2SYM(rb_intern("format"));
1182
1186
  cb_sym_found = ID2SYM(rb_intern("found"));
1183
1187
  cb_sym_get = ID2SYM(rb_intern("get"));
1184
1188
  cb_sym_hostname = ID2SYM(rb_intern("hostname"));
@@ -135,6 +135,7 @@ struct cb_context_st
135
135
  struct cb_http_request_st *request;
136
136
  int quiet;
137
137
  int arith; /* incr: +1, decr: -1, other: 0 */
138
+ int all_replicas; /* handle multiple responses from get_replica if non-zero */
138
139
  size_t nqueries;
139
140
  };
140
141
 
@@ -179,6 +180,7 @@ extern VALUE em_m;
179
180
 
180
181
  /* Symbols */
181
182
  extern ID cb_sym_add;
183
+ extern ID cb_sym_all;
182
184
  extern ID cb_sym_append;
183
185
  extern ID cb_sym_assemble_hash;
184
186
  extern ID cb_sym_async;
@@ -205,6 +207,7 @@ extern ID cb_sym_engine;
205
207
  extern ID cb_sym_environment;
206
208
  extern ID cb_sym_eventmachine;
207
209
  extern ID cb_sym_extended;
210
+ extern ID cb_sym_first;
208
211
  extern ID cb_sym_flags;
209
212
  extern ID cb_sym_forced;
210
213
  extern ID cb_sym_format;
@@ -509,13 +512,13 @@ struct cb_params_st
509
512
  const lcb_get_replica_cmd_t **ptr_gr;
510
513
  unsigned int array : 1;
511
514
  unsigned int lock : 1;
512
- unsigned int replica : 1;
513
515
  unsigned int assemble_hash : 1;
514
516
  unsigned int extended : 1;
515
517
  unsigned int quiet : 1;
516
518
  /* arguments given in form of hash key-ttl to "get and touch" */
517
519
  unsigned int gat : 1;
518
520
  lcb_time_t ttl;
521
+ VALUE replica;
519
522
  VALUE transcoder;
520
523
  VALUE transcoder_opts;
521
524
  VALUE keys_ary;
@@ -121,12 +121,24 @@ end
121
121
 
122
122
  def die(message)
123
123
  STDERR.puts "\n#{"*" * 70}"
124
- STDERR.puts "#{message}"
124
+ STDERR.puts "#{message.gsub(/^/, "* ")}"
125
125
  STDERR.puts "#{"*" * 70}\n\n"
126
126
  abort
127
127
  end
128
128
 
129
- have_library("couchbase", "lcb_verify_compiler_setup", "libcouchbase/couchbase.h") or die("You must install libcouchbase >= 2.0.0beta3. See http://www.couchbase.com/develop/ for more details")
129
+ unless try_compile(<<-SRC)
130
+ #include <libcouchbase/couchbase.h>
131
+
132
+ int main() {
133
+ lcb_get_replica_cmd_t cmd;
134
+ cmd.v.v1.strategy = 42;
135
+ return 0;
136
+ }
137
+ SRC
138
+ die("You must install libcouchbase >= 2.0.7\nSee http://www.couchbase.com/communities/c/ for more details")
139
+ end
140
+
141
+ have_library("couchbase", "lcb_verify_compiler_setup", "libcouchbase/couchbase.h") # just to add -lcouchbase properly
130
142
  have_header("mach/mach_time.h")
131
143
  have_header("stdint.h") or die("Failed to locate stdint.h")
132
144
  have_header("sys/time.h")
@@ -64,7 +64,15 @@ cb_get_callback(lcb_t handle, const void *cookie, lcb_error_t error, const lcb_g
64
64
  } else { /* synchronous */
65
65
  if (NIL_P(exc) && error != LCB_KEY_ENOENT) {
66
66
  if (ctx->extended) {
67
- rb_hash_aset(ctx->rv, key, rb_ary_new3(3, val, flags, cas));
67
+ val = rb_ary_new3(3, val, flags, cas);
68
+ }
69
+ if (ctx->all_replicas) {
70
+ VALUE ary = rb_hash_aref(ctx->rv, key);
71
+ if (NIL_P(ary)) {
72
+ ary = rb_ary_new();
73
+ rb_hash_aset(ctx->rv, key, ary);
74
+ }
75
+ rb_ary_push(ary, val);
68
76
  } else {
69
77
  rb_hash_aset(ctx->rv, key, val);
70
78
  }
@@ -115,8 +123,13 @@ cb_get_callback(lcb_t handle, const void *cookie, lcb_error_t error, const lcb_g
115
123
  * @option options [true, false] :assemble_hash (false) Assemble Hash for
116
124
  * results. Hash assembled automatically if +:extended+ option is true
117
125
  * or in case of "get and touch" multimple keys.
118
- * @option options [true, false] :replica (false) Read key from replica
119
- * node. Options +:ttl+ and +:lock+ are not compatible with +:replica+.
126
+ * @option options [true, false, :all, :first, Fixnum] :replica
127
+ * (false) Read key from replica node. Options +:ttl+ and +:lock+
128
+ * are not compatible with +:replica+. Value +true+ is a synonym to
129
+ * +:first+, which means sequentially iterate over all replicas
130
+ * and return first successful response, skipping all failures.
131
+ * It is also possible to query all replicas in parallel using
132
+ * the +:all+ option, or pass a replica index, starting from zero.
120
133
  *
121
134
  * @yieldparam ret [Result] the result of operation in asynchronous mode
122
135
  * (valid attributes: +error+, +operation+, +key+, +value+, +flags+,
@@ -236,7 +249,11 @@ cb_bucket_get(int argc, VALUE *argv, VALUE self)
236
249
  ctx->quiet = params.cmd.get.quiet;
237
250
  ctx->transcoder = params.cmd.get.transcoder;
238
251
  ctx->transcoder_opts = params.cmd.get.transcoder_opts;
239
- if (params.cmd.get.replica) {
252
+ if (RTEST(params.cmd.get.replica)) {
253
+ if (params.cmd.get.replica == cb_sym_all) {
254
+ ctx->nqueries = lcb_get_num_replicas(bucket->handle);
255
+ ctx->all_replicas = 1;
256
+ }
240
257
  err = lcb_get_replica(bucket->handle, (const void *)ctx,
241
258
  params.cmd.get.num, params.cmd.get.ptr_gr);
242
259
  } else {
@@ -59,8 +59,13 @@ module ActiveSupport
59
59
  args.push(options)
60
60
 
61
61
  if options[:connection_pool]
62
- @data = ::Couchbase::ConnectionPool.new(options[:connection_pool], *args)
63
- else
62
+ if RUBY_VERSION.to_f < 1.9
63
+ warn "connection_pool gem doesn't support ruby < 1.9"
64
+ else
65
+ @data = ::Couchbase::ConnectionPool.new(options[:connection_pool], *args)
66
+ end
67
+ end
68
+ unless @data
64
69
  @data = ::Couchbase::Bucket.new(*args)
65
70
  @data.extend(Threadsafe)
66
71
  end
@@ -32,7 +32,9 @@ require 'couchbase/cluster'
32
32
  # Couchbase ruby client
33
33
  module Couchbase
34
34
 
35
- autoload(:ConnectionPool, 'couchbase/connection_pool')
35
+ if RUBY_VERSION.to_f >= 1.9
36
+ autoload(:ConnectionPool, 'couchbase/connection_pool')
37
+ end
36
38
 
37
39
  class << self
38
40
  # The method +connect+ initializes new Bucket instance with all arguments passed.
@@ -15,6 +15,9 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
+ if RUBY_VERSION.to_f < 1.9
19
+ raise LoadError, "connection_pool gem doesn't support ruby < 1.9"
20
+ end
18
21
  require 'connection_pool'
19
22
 
20
23
  module Couchbase
@@ -17,5 +17,5 @@
17
17
 
18
18
  # Couchbase ruby client
19
19
  module Couchbase
20
- VERSION = "1.3.1"
20
+ VERSION = "1.3.2"
21
21
  end
@@ -31,7 +31,7 @@ version = begin
31
31
  MultiJson::VERSION
32
32
  rescue NameError
33
33
  MultiJson::Version.to_s
34
- end
34
+ end.dup # because Gem::Version modifies it
35
35
  if Gem::Version.new(version) < Gem::Version.new('1.3.3')
36
36
  class << MultiJson
37
37
  alias :dump :encode
@@ -43,7 +43,7 @@ if multi_json_engine.name =~ /JsonGem$/
43
43
  class << multi_json_engine
44
44
  alias _load_object load
45
45
  def load(string, options = {})
46
- if string.is_a?(StringIO)
46
+ if string.respond_to?(:read)
47
47
  string = string.read
48
48
  end
49
49
  if string =~ /\A\s*[{\[]/
@@ -84,7 +84,7 @@ namespace :ports do
84
84
  directory "ports"
85
85
 
86
86
  task :libcouchbase => ["ports"] do
87
- recipe = MiniPortile.new "libcouchbase", "2.0.6"
87
+ recipe = MiniPortile.new "libcouchbase", "2.0.7"
88
88
  recipe.files << "http://packages.couchbase.com/clients/c/libcouchbase-#{recipe.version}.tar.gz"
89
89
  recipe.configure_options.push("--disable-debug",
90
90
  "--disable-dependency-tracking",
@@ -132,7 +132,7 @@ class CouchbaseMock
132
132
  end
133
133
  end
134
134
 
135
- class MiniTest::Unit::TestCase
135
+ class MiniTest::Test
136
136
 
137
137
  def start_mock(params = {})
138
138
  mock = nil
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestArithmetic < MiniTest::Unit::TestCase
20
+ class TestArithmetic < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestAsync < MiniTest::Unit::TestCase
20
+ class TestAsync < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestBucket < MiniTest::Unit::TestCase
20
+ class TestBucket < MiniTest::Test
21
21
 
22
22
  def test_it_substitute_default_parts_to_url
23
23
  # with_mock(:host => 'localhost', :port => 8091, :buckets_spec => 'default,foo') do |mock|
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestCas < MiniTest::Unit::TestCase
20
+ class TestCas < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -18,7 +18,7 @@
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
  require 'minitest/mock'
20
20
 
21
- class TestCouchbase < MiniTest::Unit::TestCase
21
+ class TestCouchbase < MiniTest::Test
22
22
 
23
23
  def teardown
24
24
  Couchbase.reset_thread_storage!
@@ -15,59 +15,63 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
- require File.join(File.dirname(__FILE__), 'setup')
19
- require 'couchbase/connection_pool'
18
+ if RUBY_VERSION.to_f >= 1.9
20
19
 
21
- class TestCouchbaseConnectionPool < MiniTest::Unit::TestCase
20
+ require File.join(File.dirname(__FILE__), 'setup')
21
+ require 'couchbase/connection_pool'
22
22
 
23
- def setup
24
- @mock = start_mock
25
- @pool = ::Couchbase::ConnectionPool.new(5, :hostname => @mock.host, :port => @mock.port)
26
- end
23
+ class TestCouchbaseConnectionPool < MiniTest::Test
27
24
 
28
- def teardown
29
- stop_mock(@mock)
30
- end
25
+ def setup
26
+ @mock = start_mock
27
+ @pool = ::Couchbase::ConnectionPool.new(5, :hostname => @mock.host, :port => @mock.port)
28
+ end
31
29
 
32
- def test_basic_multithreaded_usage
33
- @pool.set('foo', 'bar')
30
+ def teardown
31
+ stop_mock(@mock)
32
+ end
33
+
34
+ def test_basic_multithreaded_usage
35
+ @pool.set('foo', 'bar')
36
+
37
+ threads = []
38
+ 15.times do
39
+ threads << Thread.new do
40
+ @pool.get('foo')
41
+ end
42
+ end
34
43
 
35
- threads = []
36
- 15.times do
37
- threads << Thread.new do
38
- @pool.get('foo')
44
+ result = threads.map(&:value)
45
+ result.each do |val|
46
+ assert_equal 'bar', val
39
47
  end
40
48
  end
41
49
 
42
- result = threads.map(&:value)
43
- result.each do |val|
44
- assert_equal 'bar', val
50
+ def test_set_and_get
51
+ @pool.set('fiz', 'buzz')
52
+ assert_equal 'buzz', @pool.get('fiz')
45
53
  end
46
- end
47
54
 
48
- def test_set_and_get
49
- @pool.set('fiz', 'buzz')
50
- assert_equal 'buzz', @pool.get('fiz')
51
- end
55
+ def test_set_and_delete
56
+ @pool.set('baz', 'bar')
57
+ @pool.delete('baz')
58
+ assert_raises Couchbase::Error::NotFound do
59
+ @pool.get('baz')
60
+ end
61
+ end
52
62
 
53
- def test_set_and_delete
54
- @pool.set('baz', 'bar')
55
- @pool.delete('baz')
56
- assert_raises Couchbase::Error::NotFound do
57
- @pool.get('baz')
63
+ def test_incr
64
+ @pool.set('counter', 0)
65
+ @pool.incr('counter', 1)
66
+ assert_equal 1, @pool.get('counter')
58
67
  end
59
- end
60
68
 
61
- def test_incr
62
- @pool.set('counter', 0)
63
- @pool.incr('counter', 1)
64
- assert_equal 1, @pool.get('counter')
65
- end
69
+ def test_decr
70
+ @pool.set('counter', 1)
71
+ @pool.decr('counter', 1)
72
+ assert_equal 0, @pool.get('counter')
73
+ end
66
74
 
67
- def test_decr
68
- @pool.set('counter', 1)
69
- @pool.decr('counter', 1)
70
- assert_equal 0, @pool.get('counter')
71
75
  end
72
76
 
73
77
  end
@@ -20,7 +20,7 @@ require 'active_support/cache/couchbase_store'
20
20
  require 'active_support/notifications'
21
21
  require 'ostruct'
22
22
 
23
- class TestCouchbaseRailsCacheStore < MiniTest::Unit::TestCase
23
+ class TestCouchbaseRailsCacheStore < MiniTest::Test
24
24
 
25
25
  def setup
26
26
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestStore < MiniTest::Unit::TestCase
20
+ class TestStore < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -18,7 +18,7 @@
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
  require 'digest/md5'
20
20
 
21
- class TestErrors < MiniTest::Unit::TestCase
21
+ class TestErrors < MiniTest::Test
22
22
 
23
23
  def setup
24
24
  @mock = start_mock
@@ -18,7 +18,7 @@
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
  require 'eventmachine'
20
20
 
21
- class TestEventmachine < MiniTest::Unit::TestCase
21
+ class TestEventmachine < MiniTest::Test
22
22
 
23
23
  def setup
24
24
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestFormat < MiniTest::Unit::TestCase
20
+ class TestFormat < MiniTest::Test
21
21
 
22
22
  ArbitraryClass = Struct.new(:name, :role)
23
23
  class SkinyClass < Struct.new(:name, :role)
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestGet < MiniTest::Unit::TestCase
20
+ class TestGet < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestStats < MiniTest::Unit::TestCase
20
+ class TestStats < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock(:num_nodes => 4)
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestStore < MiniTest::Unit::TestCase
20
+ class TestStore < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestTimer < MiniTest::Unit::TestCase
20
+ class TestTimer < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestTouch < MiniTest::Unit::TestCase
20
+ class TestTouch < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestTouch < MiniTest::Unit::TestCase
20
+ class TestTouch < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestUtils < MiniTest::Unit::TestCase
20
+ class TestUtils < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
@@ -17,7 +17,7 @@
17
17
 
18
18
  require File.join(File.dirname(__FILE__), 'setup')
19
19
 
20
- class TestVersion < MiniTest::Unit::TestCase
20
+ class TestVersion < MiniTest::Test
21
21
 
22
22
  def setup
23
23
  @mock = start_mock
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couchbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2
5
5
  prerelease:
6
6
  platform: x86-mingw32
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-05 00:00:00.000000000 Z
12
+ date: 2013-07-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yaji
@@ -80,17 +80,17 @@ dependencies:
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
- - - ! '>='
83
+ - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: '0'
85
+ version: 5.0.4
86
86
  type: :development
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
- - - ! '>='
91
+ - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: 5.0.4
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: rake-compiler
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -285,7 +285,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
285
285
  version: '0'
286
286
  segments:
287
287
  - 0
288
- hash: 2195573418213071980
288
+ hash: 786073145375983008
289
289
  required_rubygems_version: !ruby/object:Gem::Requirement
290
290
  none: false
291
291
  requirements:
@@ -294,7 +294,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
294
294
  version: '0'
295
295
  segments:
296
296
  - 0
297
- hash: 2195573418213071980
297
+ hash: 786073145375983008
298
298
  requirements: []
299
299
  rubyforge_project:
300
300
  rubygems_version: 1.8.23