switchman 1.2.10 → 1.2.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/switchman/shard.rb +2 -2
  3. data/lib/switchman/active_record/connection_handler.rb +18 -9
  4. data/lib/switchman/active_record/connection_pool.rb +3 -0
  5. data/lib/switchman/active_record/query_cache.rb +6 -1
  6. data/lib/switchman/active_record/query_methods.rb +1 -1
  7. data/lib/switchman/connection_pool_proxy.rb +1 -1
  8. data/lib/switchman/r_spec_helper.rb +73 -61
  9. data/lib/switchman/test_helper.rb +8 -2
  10. data/lib/switchman/version.rb +1 -1
  11. data/lib/tasks/switchman.rake +5 -0
  12. data/spec/dummy/config/database.yml +2 -4
  13. data/spec/dummy/config/environments/development.rb +0 -4
  14. data/spec/dummy/config/environments/test.rb +1 -1
  15. data/spec/dummy/db/schema.rb +12 -12
  16. data/spec/dummy/db/shard_120.sqlite3 +0 -0
  17. data/spec/dummy/db/shard_156.sqlite3 +0 -0
  18. data/spec/dummy/db/shard_193.sqlite3 +0 -0
  19. data/spec/dummy/db/shard_23.sqlite3 +0 -0
  20. data/spec/dummy/db/shard_234.sqlite3 +0 -0
  21. data/spec/dummy/db/shard_257.sqlite3 +0 -0
  22. data/spec/dummy/db/shard_277.sqlite3 +0 -0
  23. data/spec/dummy/db/shard_311.sqlite3 +0 -0
  24. data/spec/dummy/db/shard_324.sqlite3 +0 -0
  25. data/spec/dummy/db/shard_342.sqlite3 +0 -0
  26. data/spec/dummy/db/shard_375.sqlite3 +0 -0
  27. data/spec/dummy/db/shard_389.sqlite3 +0 -0
  28. data/spec/dummy/db/shard_428.sqlite3 +0 -0
  29. data/spec/dummy/db/shard_452.sqlite3 +0 -0
  30. data/spec/dummy/db/shard_462.sqlite3 +0 -0
  31. data/spec/dummy/db/shard_483.sqlite3 +0 -0
  32. data/spec/dummy/db/shard_508.sqlite3 +0 -0
  33. data/spec/dummy/db/shard_531.sqlite3 +0 -0
  34. data/spec/dummy/db/shard_554.sqlite3 +0 -0
  35. data/spec/dummy/db/shard_577.sqlite3 +0 -0
  36. data/spec/dummy/db/shard_58.sqlite3 +0 -0
  37. data/spec/dummy/db/shard_600.sqlite3 +0 -0
  38. data/spec/dummy/db/shard_623.sqlite3 +0 -0
  39. data/spec/dummy/db/shard_646.sqlite3 +0 -0
  40. data/spec/dummy/db/shard_668.sqlite3 +0 -0
  41. data/spec/dummy/db/shard_680.sqlite3 +0 -0
  42. data/spec/dummy/db/shard_708.sqlite3 +0 -0
  43. data/spec/dummy/db/shard_735.sqlite3 +0 -0
  44. data/spec/dummy/db/shard_753.sqlite3 +0 -0
  45. data/spec/dummy/db/shard_76.sqlite3 +0 -0
  46. data/spec/dummy/db/shard_802.sqlite3 +0 -0
  47. data/spec/dummy/db/test.sqlite3 +0 -0
  48. data/spec/dummy/log/development.log +7 -0
  49. data/spec/dummy/log/test.log +106293 -0
  50. data/spec/dummy/tmp/cache/313/970/shard%2F30 +1 -0
  51. data/spec/dummy/tmp/cache/316/980/shard%2F15 +1 -0
  52. data/spec/dummy/tmp/cache/317/9D0/shard%2F52 +1 -0
  53. data/spec/dummy/tmp/cache/31C/A40/shard%2F75 +1 -0
  54. data/spec/dummy/tmp/cache/345/E00/shard%2F500 +1 -0
  55. data/spec/dummy/tmp/cache/346/DF0/shard%2F321 +1 -0
  56. data/spec/dummy/tmp/cache/349/DE0/shard%2F126 +1 -0
  57. data/spec/dummy/tmp/cache/349/E10/shard%2F153 +0 -0
  58. data/spec/dummy/tmp/cache/349/E20/shard%2F243 +1 -0
  59. data/spec/dummy/tmp/cache/34A/E20/shard%2F154 +0 -0
  60. data/spec/dummy/tmp/cache/34A/E40/shard%2F172 +1 -0
  61. data/spec/dummy/tmp/cache/34A/E70/shard%2F523 +1 -0
  62. data/spec/dummy/tmp/cache/34A/EB0/shard%2F721 +1 -0
  63. data/spec/dummy/tmp/cache/34A/EC0/shard%2F730 +1 -0
  64. data/spec/dummy/tmp/cache/34B/E40/shard%2F245 +0 -0
  65. data/spec/dummy/tmp/cache/34B/E60/shard%2F425 +1 -0
  66. data/spec/dummy/tmp/cache/34B/EC0/shard%2F722 +1 -0
  67. data/spec/dummy/tmp/cache/34C/E50/shard%2F246 +0 -0
  68. data/spec/dummy/tmp/cache/34C/E80/shard%2F273 +1 -0
  69. data/spec/dummy/tmp/cache/34C/E90/shard%2F363 +0 -0
  70. data/spec/dummy/tmp/cache/34C/E90/shard%2F444 +1 -0
  71. data/spec/dummy/tmp/cache/34C/EA0/shard%2F615 +1 -0
  72. data/spec/dummy/tmp/cache/34C/F00/shard%2F750 +1 -0
  73. data/spec/dummy/tmp/cache/34D/E80/shard%2F265 +1 -0
  74. data/spec/dummy/tmp/cache/34D/ED0/shard%2F391 +1 -0
  75. data/spec/dummy/tmp/cache/34D/EE0/shard%2F724 +1 -0
  76. data/spec/dummy/tmp/cache/34E/ED0/shard%2F383 +1 -0
  77. data/spec/dummy/tmp/cache/34E/EF0/shard%2F725 +1 -0
  78. data/spec/dummy/tmp/cache/34E/F00/shard%2F653 +1 -0
  79. data/spec/dummy/tmp/cache/34F/EE0/shard%2F546 +1 -0
  80. data/spec/dummy/tmp/cache/34F/F00/shard%2F807 +1 -0
  81. data/spec/dummy/tmp/cache/34F/F30/shard%2F672 +1 -0
  82. data/spec/dummy/tmp/cache/350/EA0/shard%2F178 +1 -0
  83. data/spec/dummy/tmp/cache/350/EB0/shard%2F349 +1 -0
  84. data/spec/dummy/tmp/cache/350/F00/shard%2F718 +0 -0
  85. data/spec/dummy/tmp/cache/350/F40/shard%2F592 +1 -0
  86. data/spec/dummy/tmp/cache/351/F00/shard%2F386 +0 -0
  87. data/spec/dummy/tmp/cache/351/F10/shard%2F638 +1 -0
  88. data/spec/dummy/tmp/cache/351/F10/shard%2F719 +0 -0
  89. data/spec/dummy/tmp/cache/352/F10/shard%2F387 +0 -0
  90. data/spec/dummy/tmp/cache/352/F10/shard%2F468 +1 -0
  91. data/spec/dummy/tmp/cache/352/F30/shard%2F729 +1 -0
  92. data/spec/dummy/tmp/cache/353/F10/shard%2F298 +1 -0
  93. data/spec/dummy/tmp/cache/353/F50/shard%2F739 +1 -0
  94. data/spec/dummy/tmp/cache/354/F50/shard%2F569 +1 -0
  95. data/spec/dummy/tmp/cache/354/F80/shard%2F677 +1 -0
  96. data/spec/dummy/tmp/cache/354/F90/shard%2F767 +1 -0
  97. data/spec/dummy/tmp/cache/358/FE0/shard%2F699 +1 -0
  98. data/spec/dummy/tmp/cache/3A5/EA0/shard%2F10004 +1 -0
  99. data/spec/dummy/tmp/cache/3A6/F40/shard%2F10410 +1 -0
  100. data/spec/dummy/tmp/cache/3A7/F30/shard%2F10231 +1 -0
  101. data/spec/dummy/tmp/cache/3A8/F90/shard%2F10520 +1 -0
  102. data/spec/dummy/tmp/cache/3A9/F40/shard%2F10062 +1 -0
  103. data/spec/dummy/tmp/cache/3A9/F80/shard%2F10341 +1 -0
  104. data/spec/dummy/tmp/cache/3AA/F10/shard%2F10027 +1 -0
  105. data/spec/dummy/tmp/cache/3AA/F10/shard%2F10108 +1 -0
  106. data/spec/dummy/tmp/cache/3AA/FB0/shard%2F10441 +1 -0
  107. data/spec/dummy/tmp/cache/3AA/FC0/shard%2F10612 +1 -0
  108. data/spec/dummy/tmp/cache/3AB/010/shard%2F10730 +1 -0
  109. data/spec/dummy/tmp/cache/3AB/F70/shard%2F10154 +1 -0
  110. data/spec/dummy/tmp/cache/3AC/020/shard%2F10650 +1 -0
  111. data/spec/dummy/tmp/cache/3AC/FC0/shard%2F10272 +1 -0
  112. data/spec/dummy/tmp/cache/3AD/000/shard%2F10543 +1 -0
  113. data/spec/dummy/tmp/cache/3AD/F50/shard%2F10039 +1 -0
  114. data/spec/dummy/tmp/cache/3AD/F90/shard%2F10318 +1 -0
  115. data/spec/dummy/tmp/cache/3AD/FA0/shard%2F10246 +1 -0
  116. data/spec/dummy/tmp/cache/3AE/060/shard%2F10751 +1 -0
  117. data/spec/dummy/tmp/cache/3AE/FF0/shard%2F10364 +1 -0
  118. data/spec/dummy/tmp/cache/3AF/030/shard%2F10635 +1 -0
  119. data/spec/dummy/tmp/cache/3B0/FE0/shard%2F10177 +1 -0
  120. data/spec/dummy/tmp/cache/3B1/030/shard%2F10295 +1 -0
  121. data/spec/dummy/tmp/cache/3B1/040/shard%2F10466 +1 -0
  122. data/spec/dummy/tmp/cache/3B1/090/shard%2F10673 +1 -0
  123. data/spec/dummy/tmp/cache/3B2/070/shard%2F10566 +1 -0
  124. data/spec/dummy/tmp/cache/3B3/060/shard%2F10387 +1 -0
  125. data/spec/dummy/tmp/cache/3B5/0B0/shard%2F10497 +1 -0
  126. data/spec/dummy/tmp/cache/3B6/100/shard%2F10696 +1 -0
  127. data/spec/dummy/tmp/cache/3B7/0E0/shard%2F10589 +1 -0
  128. data/spec/dummy/tmp/cache/3BA/160/shard%2F10799 +1 -0
  129. data/spec/lib/action_controller/caching_spec.rb +4 -4
  130. data/spec/lib/active_record/abstract_adapter_spec.rb +1 -1
  131. data/spec/lib/active_record/association_spec.rb +83 -67
  132. data/spec/lib/active_record/attribute_methods_spec.rb +29 -29
  133. data/spec/lib/active_record/base_spec.rb +20 -20
  134. data/spec/lib/active_record/calculations_spec.rb +79 -59
  135. data/spec/lib/active_record/connection_handler_spec.rb +14 -14
  136. data/spec/lib/active_record/connection_pool_spec.rb +7 -7
  137. data/spec/lib/active_record/finder_methods_spec.rb +8 -8
  138. data/spec/lib/active_record/query_cache_spec.rb +38 -38
  139. data/spec/lib/active_record/query_methods_spec.rb +45 -45
  140. data/spec/lib/active_record/relation_spec.rb +8 -8
  141. data/spec/lib/active_record/spawn_methods_spec.rb +11 -11
  142. data/spec/lib/connection_pool_proxy_spec.rb +2 -2
  143. data/spec/lib/database_server_spec.rb +37 -37
  144. data/spec/lib/default_shard_spec.rb +3 -3
  145. data/spec/lib/r_spec_helper_spec.rb +33 -7
  146. data/spec/lib/rails_spec.rb +5 -5
  147. data/spec/lib/shackles_spec.rb +35 -35
  148. data/spec/models/shard_spec.rb +104 -104
  149. data/spec/spec_helper.rb +1 -1
  150. metadata +254 -29
@@ -6,52 +6,52 @@ module Switchman
6
6
 
7
7
  describe ".activate" do
8
8
  it "should activate a hash of shard categories" do
9
- Shard.current.should == Shard.default
10
- Shard.current(:other).should == Shard.default
9
+ expect(Shard.current).to eq Shard.default
10
+ expect(Shard.current(:other)).to eq Shard.default
11
11
  Shard.activate(:default => @shard1, :other => @shard2) do
12
- Shard.current.should == @shard1
13
- Shard.current(:other).should == @shard2
12
+ expect(Shard.current).to eq @shard1
13
+ expect(Shard.current(:other)).to eq @shard2
14
14
  end
15
- Shard.current.should == Shard.default
16
- Shard.current(:other).should == Shard.default
15
+ expect(Shard.current).to eq Shard.default
16
+ expect(Shard.current(:other)).to eq Shard.default
17
17
  end
18
18
 
19
19
  it "should not allow activating the unsharded category" do
20
- Shard.current(:unsharded).should == Shard.default
20
+ expect(Shard.current(:unsharded)).to eq Shard.default
21
21
  Shard.activate(:unsharded => @shard1) do
22
- Shard.current(:unsharded).should == Shard.default
22
+ expect(Shard.current(:unsharded)).to eq Shard.default
23
23
  end
24
- Shard.current(:unsharded).should == Shard.default
24
+ expect(Shard.current(:unsharded)).to eq Shard.default
25
25
  end
26
26
  end
27
27
 
28
28
  describe "#activate" do
29
29
  it "should activate the default category when no args are used" do
30
- Shard.current.should == Shard.default
30
+ expect(Shard.current).to eq Shard.default
31
31
  @shard1.activate do
32
- Shard.current.should == @shard1
32
+ expect(Shard.current).to eq @shard1
33
33
  end
34
- Shard.current.should == Shard.default
34
+ expect(Shard.current).to eq Shard.default
35
35
  end
36
36
 
37
37
  it "should activate other categories" do
38
- Shard.current(:other).should == Shard.default
38
+ expect(Shard.current(:other)).to eq Shard.default
39
39
  @shard1.activate(:other) do
40
- Shard.current(:other).should == @shard1
41
- Shard.current.should == Shard.default
40
+ expect(Shard.current(:other)).to eq @shard1
41
+ expect(Shard.current).to eq Shard.default
42
42
  end
43
- Shard.current(:other).should == Shard.default
43
+ expect(Shard.current(:other)).to eq Shard.default
44
44
  end
45
45
 
46
46
  it "should activate multiple categories" do
47
- Shard.current.should == Shard.default
48
- Shard.current(:other).should == Shard.default
47
+ expect(Shard.current).to eq Shard.default
48
+ expect(Shard.current(:other)).to eq Shard.default
49
49
  @shard1.activate(:default, :other) do
50
- Shard.current.should == @shard1
51
- Shard.current(:other).should == @shard1
50
+ expect(Shard.current).to eq @shard1
51
+ expect(Shard.current(:other)).to eq @shard1
52
52
  end
53
- Shard.current.should == Shard.default
54
- Shard.current(:other).should == Shard.default
53
+ expect(Shard.current).to eq Shard.default
54
+ expect(Shard.current(:other)).to eq Shard.default
55
55
  end
56
56
  end
57
57
 
@@ -60,9 +60,9 @@ module Switchman
60
60
  # i.e. the instance var would not be set if we got this back from a cache
61
61
  # that was populated pre-sharding
62
62
  a = User.new
63
- a.shard.should == Shard.default
63
+ expect(a.shard).to eq Shard.default
64
64
  a.instance_variable_set(:@shard, nil)
65
- a.shard.should == Shard.default
65
+ expect(a.shard).to eq Shard.default
66
66
  end
67
67
  end
68
68
 
@@ -73,57 +73,57 @@ module Switchman
73
73
  shard = server.create_new_shard
74
74
  shard.activate do
75
75
  User.create!
76
- User.count.should == 1
76
+ expect(User.count).to eq 1
77
77
  end
78
78
  shard.drop_database
79
79
  shard.activate do
80
- lambda { User.count }.should raise_error
80
+ expect { User.count }.to raise_error
81
81
  end
82
82
  end
83
83
  end
84
84
 
85
85
  describe ".lookup" do
86
86
  it "should work with pseudo-ids" do
87
- Shard.lookup('default').should == Shard.default
88
- Shard.lookup('self').should == Shard.current
87
+ expect(Shard.lookup('default')).to eq Shard.default
88
+ expect(Shard.lookup('self')).to eq Shard.current
89
89
  @shard1.activate do
90
- Shard.lookup('default').should == Shard.default
91
- Shard.lookup('self').should == Shard.current
90
+ expect(Shard.lookup('default')).to eq Shard.default
91
+ expect(Shard.lookup('self')).to eq Shard.current
92
92
  end
93
93
  end
94
94
 
95
95
  it "should work with string ids" do
96
- Shard.lookup(Shard.current.id.to_s).should == Shard.current
97
- Shard.lookup(@shard1.id.to_s).should == @shard1
96
+ expect(Shard.lookup(Shard.current.id.to_s)).to eq Shard.current
97
+ expect(Shard.lookup(@shard1.id.to_s)).to eq @shard1
98
98
  end
99
99
 
100
100
  it "should raise an error for non-ids" do
101
- lambda { Shard.lookup('jacob') }.should raise_error(ArgumentError)
101
+ expect { Shard.lookup('jacob') }.to raise_error(ArgumentError)
102
102
  end
103
103
  end
104
104
 
105
105
  describe ".with_each_shard" do
106
106
  describe ":exception" do
107
107
  it "should default to :raise" do
108
- lambda { Shard.with_each_shard { raise "error" } }.should raise_error
108
+ expect { Shard.with_each_shard { raise "error" } }.to raise_error
109
109
  end
110
110
 
111
111
  it "should :ignore" do
112
- Shard.with_each_shard(exception: :ignore) { raise "error" }.should == []
112
+ expect(Shard.with_each_shard(exception: :ignore) { raise "error" }).to eq []
113
113
  end
114
114
 
115
115
  it "should :defer" do
116
116
  counter = 0
117
- lambda { Shard.with_each_shard(exception: :defer) { counter += 1; raise "error" } }.should raise_error
117
+ expect { Shard.with_each_shard(exception: :defer) { counter += 1; raise "error" } }.to raise_error
118
118
  # called more than once
119
- counter.should > 1
119
+ expect(counter).to be > 1
120
120
  end
121
121
 
122
122
  it "should call a proc" do
123
123
  counter = 0
124
- Shard.with_each_shard(exception: -> { counter += 1 }) { raise "error" }.should == []
124
+ expect(Shard.with_each_shard(exception: -> { counter += 1 }) { raise "error" }).to eq []
125
125
  # called more than once
126
- counter.should > 1
126
+ expect(counter).to be > 1
127
127
  end
128
128
  end
129
129
 
@@ -132,23 +132,23 @@ module Switchman
132
132
 
133
133
  it "should disconnect when switching among different database servers" do
134
134
  User.connection
135
- User.connected?.should be_true
135
+ expect(User.connected?).to eq true
136
136
  Shard.with_each_shard([Shard.default, @shard2]) {}
137
- User.connected?.should be_false
137
+ expect(User.connected?).to eq false
138
138
  end
139
139
 
140
140
  it "should not disconnect when it's the current shard" do
141
141
  User.connection
142
- User.connected?.should be_true
142
+ expect(User.connected?).to eq true
143
143
  Shard.with_each_shard([Shard.default]) {}
144
- User.connected?.should be_true
144
+ expect(User.connected?).to eq true
145
145
  end
146
146
 
147
147
  it "should not disconnect for zero shards" do
148
148
  User.connection
149
- User.connected?.should be_true
149
+ expect(User.connected?).to eq true
150
150
  Shard.with_each_shard([]) {}
151
- User.connected?.should be_true
151
+ expect(User.connected?).to eq true
152
152
  end
153
153
  end
154
154
  end
@@ -157,35 +157,35 @@ module Switchman
157
157
  it "should work" do
158
158
  ids = [2, 48, Shard::IDS_PER_SHARD * @shard1.id + 6, Shard::IDS_PER_SHARD * @shard1.id + 8, 10, 12]
159
159
  results = Shard.partition_by_shard(ids) do |ids|
160
- (ids.length == 4 || ids.length == 2).should be_true
160
+ expect(ids.length == 4 || ids.length == 2).to eq true
161
161
  ids.map { |id| id + 1}
162
162
  end
163
163
 
164
164
  # could have done either shard first, but we can't sort, because we want to see the shards grouped together
165
- (results == [3, 49, 11, 13, 7, 9] ||
166
- results == [7, 9, 3, 49, 11, 13]).should be_true
165
+ expect(results == [3, 49, 11, 13, 7, 9] ||
166
+ results == [7, 9, 3, 49, 11, 13]).to eq true
167
167
  end
168
168
 
169
169
  it "should work for a partition_proc that returns a shard" do
170
170
  array = [{:id => 1, :shard => @shard1}, {:id => 2, :shard => @shard2}]
171
171
  results = Shard.partition_by_shard(array, lambda { |a| a[:shard] }) do |objects|
172
- objects.length.should == 1
173
- Shard.current.should == objects.first[:shard]
172
+ expect(objects.length).to eq 1
173
+ expect(Shard.current).to eq objects.first[:shard]
174
174
  objects.first[:id]
175
175
  end
176
- results.sort.should == [1, 2]
176
+ expect(results.sort).to eq [1, 2]
177
177
  end
178
178
 
179
179
  it "should support shortened id syntax, and strings" do
180
180
  ids = [@shard1.global_id_for(1), "#{@shard2.id}~2"]
181
181
  result = Shard.partition_by_shard(ids) do |ids|
182
- ids.length.should == 1
183
- [@shard1, @shard2].include?(Shard.current).should be_true
184
- ids.first.should == 1 if Shard.current == @shard1
185
- ids.first.should == 2 if Shard.current == @shard2
182
+ expect(ids.length).to eq 1
183
+ expect([@shard1, @shard2].include?(Shard.current)).to eq true
184
+ expect(ids.first).to eq 1 if Shard.current == @shard1
185
+ expect(ids.first).to eq 2 if Shard.current == @shard2
186
186
  ids.first
187
187
  end
188
- result.sort.should == [1, 2]
188
+ expect(result.sort).to eq [1, 2]
189
189
  end
190
190
 
191
191
  it "should partition unrecognized types unchanged into current shard" do
@@ -194,7 +194,7 @@ module Switchman
194
194
  result = Shard.partition_by_shard(items) do |shard_items|
195
195
  [Shard.current, shard_items]
196
196
  end
197
- result.should == [expected_shard, items]
197
+ expect(result).to eq [expected_shard, items]
198
198
  end
199
199
 
200
200
  it "should partition unrecognized strings unchanged into current shard" do
@@ -203,7 +203,7 @@ module Switchman
203
203
  result = Shard.partition_by_shard(items) do |shard_items|
204
204
  [Shard.current, shard_items]
205
205
  end
206
- result.should == [expected_shard, items]
206
+ expect(result).to eq [expected_shard, items]
207
207
  end
208
208
 
209
209
  it "should partition recognized ids with an invalid shard unchanged into current shard" do
@@ -213,28 +213,28 @@ module Switchman
213
213
  result = Shard.partition_by_shard(items) do |shard_items|
214
214
  [Shard.current, shard_items]
215
215
  end
216
- result.should == [expected_shard, items]
216
+ expect(result).to eq [expected_shard, items]
217
217
  end
218
218
  end
219
219
 
220
220
  describe "#name" do
221
221
  it "the default shard should not be marked as dirty after reading its name" do
222
222
  s = Shard.default
223
- s.should_not be_new_record
223
+ expect(s).not_to be_new_record
224
224
  s.name
225
- s.should_not be_changed
225
+ expect(s).not_to be_changed
226
226
  end
227
227
 
228
228
  it "should fall back to shard_name in the config if nil" do
229
229
  db = DatabaseServer.new(config: { adapter: 'mysql', database: 'canvas', shard_name: 'yoyoyo' })
230
230
  shard = Shard.new(database_server: db)
231
- shard.name.should == 'yoyoyo'
231
+ expect(shard.name).to eq 'yoyoyo'
232
232
  end
233
233
 
234
234
  it "should fall back to the database_server if nil" do
235
235
  db = DatabaseServer.new(config: { adapter: 'mysql', database: 'canvas' })
236
236
  shard = Shard.new(database_server: db)
237
- shard.name.should == 'canvas'
237
+ expect(shard.name).to eq 'canvas'
238
238
  end
239
239
 
240
240
  it "should get it from the postgres connection if not otherwise specified" do
@@ -251,7 +251,7 @@ module Switchman
251
251
  connection.stubs(:run_callbacks).returns(nil)
252
252
  ::ActiveRecord::ConnectionAdapters::ConnectionPool.any_instance.stubs(:checkout).returns(connection)
253
253
  begin
254
- shard.name.should == 'canvas'
254
+ expect(shard.name).to eq 'canvas'
255
255
  ensure
256
256
  shard.activate { ::ActiveRecord::Base.connection_pool.current_pool.disconnect! }
257
257
  end
@@ -260,12 +260,12 @@ module Switchman
260
260
 
261
261
  describe ".shard_for" do
262
262
  it "should work" do
263
- Shard.shard_for(1).should == Shard.default
264
- Shard.shard_for(1, @shard1).should == @shard1
265
- Shard.shard_for(@shard1.global_id_for(1)).should == @shard1
266
- Shard.shard_for(Shard.default.global_id_for(1)).should == Shard.default
267
- Shard.shard_for(@shard1.global_id_for(1), @shard1).should == @shard1
268
- Shard.shard_for(Shard.default.global_id_for(1), @shard1).should == Shard.default
263
+ expect(Shard.shard_for(1)).to eq Shard.default
264
+ expect(Shard.shard_for(1, @shard1)).to eq @shard1
265
+ expect(Shard.shard_for(@shard1.global_id_for(1))).to eq @shard1
266
+ expect(Shard.shard_for(Shard.default.global_id_for(1))).to eq Shard.default
267
+ expect(Shard.shard_for(@shard1.global_id_for(1), @shard1)).to eq @shard1
268
+ expect(Shard.shard_for(Shard.default.global_id_for(1), @shard1)).to eq Shard.default
269
269
  end
270
270
  end
271
271
 
@@ -274,36 +274,36 @@ module Switchman
274
274
  expected_id = 1
275
275
  expected_shard = @shard2
276
276
  id, shard = Shard.local_id_for("#{expected_shard.id}~#{expected_id}")
277
- id.should == expected_id
278
- shard.should == expected_shard
277
+ expect(id).to eq expected_id
278
+ expect(shard).to eq expected_shard
279
279
  end
280
280
 
281
281
  it "should recognize global ids" do
282
282
  expected_id = 1
283
283
  expected_shard = @shard2
284
284
  id, shard = Shard.local_id_for(Shard::IDS_PER_SHARD * expected_shard.id + expected_id)
285
- id.should == expected_id
286
- shard.should == expected_shard
285
+ expect(id).to eq expected_id
286
+ expect(shard).to eq expected_shard
287
287
  end
288
288
 
289
289
  it "should recognize local ids with no shard" do
290
290
  expected_id = 1
291
291
  id, shard = Shard.local_id_for(expected_id)
292
- id.should == expected_id
293
- shard.should be_nil
292
+ expect(id).to eq expected_id
293
+ expect(shard).to be_nil
294
294
  end
295
295
 
296
296
  it "should return nil for unrecognized input" do
297
297
  id, shard = Shard.local_id_for("not an id")
298
- id.should be_nil
299
- shard.should be_nil
298
+ expect(id).to be_nil
299
+ expect(shard).to be_nil
300
300
  end
301
301
 
302
302
  it "should return nil for ids with bad shard values" do
303
303
  bad_shard_id = @shard2.id + 10000
304
304
  id, shard = Shard.local_id_for("#{bad_shard_id}~1")
305
- id.should be_nil
306
- shard.should be_nil
305
+ expect(id).to be_nil
306
+ expect(shard).to be_nil
307
307
  end
308
308
  end
309
309
 
@@ -315,69 +315,69 @@ module Switchman
315
315
 
316
316
  describe ".integral_id" do
317
317
  it "should return recognized ids" do
318
- Shard.integral_id_for(@local_id).should == @local_id
319
- Shard.integral_id_for(@local_id.to_s).should == @local_id
320
- Shard.integral_id_for(@global_id).should == @global_id
321
- Shard.integral_id_for(@global_id.to_s).should == @global_id
322
- Shard.integral_id_for("#{@shard1.id}~#{@local_id}").should == @global_id
318
+ expect(Shard.integral_id_for(@local_id)).to eq @local_id
319
+ expect(Shard.integral_id_for(@local_id.to_s)).to eq @local_id
320
+ expect(Shard.integral_id_for(@global_id)).to eq @global_id
321
+ expect(Shard.integral_id_for(@global_id.to_s)).to eq @global_id
322
+ expect(Shard.integral_id_for("#{@shard1.id}~#{@local_id}")).to eq @global_id
323
323
  end
324
324
 
325
325
  it "should work even for shards that don't exist" do
326
326
  shard = Shard.create!
327
327
  shard.destroy
328
328
  global_id = shard.global_id_for(1)
329
- Shard.integral_id_for(global_id).should == global_id
330
- Shard.integral_id_for(global_id.to_s).should == global_id
331
- Shard.integral_id_for("#{shard.id}~1").should == global_id
329
+ expect(Shard.integral_id_for(global_id)).to eq global_id
330
+ expect(Shard.integral_id_for(global_id.to_s)).to eq global_id
331
+ expect(Shard.integral_id_for("#{shard.id}~1")).to eq global_id
332
332
  end
333
333
 
334
334
  it "should return nil for unrecognized ids" do
335
- Shard.integral_id_for('not an id').should == nil
335
+ expect(Shard.integral_id_for('not an id')).to eq nil
336
336
  end
337
337
  end
338
338
 
339
339
  describe ".local_id_for" do
340
340
  it "should return id without shard for local id" do
341
- Shard.local_id_for(@local_id).should == [@local_id, nil]
341
+ expect(Shard.local_id_for(@local_id)).to eq [@local_id, nil]
342
342
  end
343
343
 
344
344
  it "should return id with shard for global id" do
345
- Shard.local_id_for(@global_id).should == [@local_id, @shard1]
345
+ expect(Shard.local_id_for(@global_id)).to eq [@local_id, @shard1]
346
346
  end
347
347
 
348
348
  it "should return nil for shards that don't exist" do
349
349
  shard = Shard.create!
350
350
  shard.destroy
351
- Shard.local_id_for(shard.global_id_for(1)).should == [nil, nil]
351
+ expect(Shard.local_id_for(shard.global_id_for(1))).to eq [nil, nil]
352
352
  end
353
353
 
354
354
  it "should return nil for unrecognized ids" do
355
- Shard.local_id_for('not an id').should == [nil, nil]
355
+ expect(Shard.local_id_for('not an id')).to eq [nil, nil]
356
356
  end
357
357
  end
358
358
 
359
359
  describe ".relative_id_for" do
360
360
  it "should return recognized ids relative to the target shard" do
361
- Shard.relative_id_for(@local_id, @shard1, @shard2).should == @global_id
362
- Shard.relative_id_for(@local_id, @shard2, @shard2).should == @local_id
363
- Shard.relative_id_for(@global_id, @shard1, @shard2).should == @global_id
364
- Shard.relative_id_for(@global_id, @shard2, @shard2).should == @global_id
361
+ expect(Shard.relative_id_for(@local_id, @shard1, @shard2)).to eq @global_id
362
+ expect(Shard.relative_id_for(@local_id, @shard2, @shard2)).to eq @local_id
363
+ expect(Shard.relative_id_for(@global_id, @shard1, @shard2)).to eq @global_id
364
+ expect(Shard.relative_id_for(@global_id, @shard2, @shard2)).to eq @global_id
365
365
  end
366
366
 
367
367
  it "should return the original id for unrecognized ids" do
368
- Shard.relative_id_for('not an id', @shard1, @shard2).should == 'not an id'
368
+ expect(Shard.relative_id_for('not an id', @shard1, @shard2)).to eq 'not an id'
369
369
  end
370
370
  end
371
371
 
372
372
  describe ".short_id_for" do
373
373
  it "should return shorted strings for global ids" do
374
- Shard.short_id_for(@local_id).should == @local_id
375
- Shard.short_id_for("#{@local_id}").should == @local_id
376
- Shard.short_id_for(@global_id).should == "#{@shard1.id}~#{@local_id}"
374
+ expect(Shard.short_id_for(@local_id)).to eq @local_id
375
+ expect(Shard.short_id_for("#{@local_id}")).to eq @local_id
376
+ expect(Shard.short_id_for(@global_id)).to eq "#{@shard1.id}~#{@local_id}"
377
377
  end
378
378
 
379
379
  it "should return the original id for unrecognized ids" do
380
- Shard.short_id_for('not an id').should == 'not an id'
380
+ expect(Shard.short_id_for('not an id')).to eq 'not an id'
381
381
  end
382
382
  end
383
383
 
@@ -386,7 +386,7 @@ module Switchman
386
386
  local_id = 5
387
387
  Shard.with_each_shard do
388
388
  global_id = Shard.current.global_id_for(local_id)
389
- Shard.global_id_for(global_id).should == global_id
389
+ expect(Shard.global_id_for(global_id)).to eq global_id
390
390
  end
391
391
  end
392
392
 
@@ -394,7 +394,7 @@ module Switchman
394
394
  local_id = 5
395
395
  Shard.with_each_shard do
396
396
  next if Shard.current == Shard.default
397
- Shard.shard_for(Shard.global_id_for(local_id)).should == Shard.current
397
+ expect(Shard.shard_for(Shard.global_id_for(local_id))).to eq Shard.current
398
398
  end
399
399
  end
400
400
  end