Skip to content

Commit 36c5e7f

Browse files
committed
ActiveSupport::Cache, fix race conditions on test/cache - part IV
1 parent 9606aa7 commit 36c5e7f

File tree

2 files changed

+87
-43
lines changed

2 files changed

+87
-43
lines changed

activesupport/test/cache/behaviors/failure_raising_behavior.rb

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,109 +2,130 @@
22

33
module FailureRaisingBehavior
44
def test_fetch_read_failure_raises
5-
@cache.write("foo", "bar")
5+
key = SecureRandom.uuid
6+
@cache.write(key, SecureRandom.alphanumeric)
67

78
assert_raise Redis::BaseError do
89
emulating_unavailability do |cache|
9-
cache.fetch("foo")
10+
cache.fetch(key)
1011
end
1112
end
1213
end
1314

1415
def test_fetch_with_block_read_failure_raises
15-
@cache.write("foo", "bar")
16+
key = SecureRandom.uuid
17+
value = SecureRandom.alphanumeric
18+
@cache.write(key, value)
1619

1720
assert_raise Redis::BaseError do
1821
emulating_unavailability do |cache|
19-
cache.fetch("foo") { "1" }
22+
cache.fetch(key) { SecureRandom.alphanumeric }
2023
end
2124
end
2225

23-
assert_equal "bar", @cache.read("foo")
26+
assert_equal value, @cache.read(key)
2427
end
2528

2629
def test_read_failure_raises
27-
@cache.write("foo", "bar")
30+
key = SecureRandom.uuid
31+
@cache.write(key, SecureRandom.alphanumeric)
2832

2933
assert_raise Redis::BaseError do
3034
emulating_unavailability do |cache|
31-
cache.read("foo")
35+
cache.read(key)
3236
end
3337
end
3438
end
3539

3640
def test_read_multi_failure_raises
37-
@cache.write_multi("foo" => "bar", "baz" => "quux")
41+
key = SecureRandom.uuid
42+
other_key = SecureRandom.uuid
43+
@cache.write_multi(
44+
key => SecureRandom.alphanumeric,
45+
other_key => SecureRandom.alphanumeric
46+
)
3847

3948
assert_raise Redis::BaseError do
4049
emulating_unavailability do |cache|
41-
cache.read_multi("foo", "baz")
50+
cache.read_multi(key, other_key)
4251
end
4352
end
4453
end
4554

4655
def test_write_failure_raises
4756
assert_raise Redis::BaseError do
4857
emulating_unavailability do |cache|
49-
cache.write("foo", "bar")
58+
cache.write(SecureRandom.uuid, SecureRandom.alphanumeric)
5059
end
5160
end
5261
end
5362

5463
def test_write_multi_failure_raises
5564
assert_raise Redis::BaseError do
5665
emulating_unavailability do |cache|
57-
cache.write_multi("foo" => "bar", "baz" => "quux")
66+
cache.write_multi(
67+
SecureRandom.uuid => SecureRandom.alphanumeric,
68+
SecureRandom.uuid => SecureRandom.alphanumeric
69+
)
5870
end
5971
end
6072
end
6173

6274
def test_fetch_multi_failure_raises
63-
@cache.write_multi("foo" => "bar", "baz" => "quux")
75+
key = SecureRandom.uuid
76+
other_key = SecureRandom.uuid
77+
@cache.write_multi(
78+
key => SecureRandom.alphanumeric,
79+
other_key => SecureRandom.alphanumeric
80+
)
6481

6582
assert_raise Redis::BaseError do
6683
emulating_unavailability do |cache|
67-
cache.fetch_multi("foo", "baz") { |k| "unavailable" }
84+
cache.fetch_multi(key, other_key) { |k| "unavailable" }
6885
end
6986
end
7087
end
7188

7289
def test_delete_failure_raises
73-
@cache.write("foo", "bar")
90+
key = SecureRandom.uuid
91+
@cache.write(key, SecureRandom.alphanumeric)
7492

7593
assert_raise Redis::BaseError do
7694
emulating_unavailability do |cache|
77-
cache.delete("foo")
95+
cache.delete(key)
7896
end
7997
end
8098
end
8199

82100
def test_exist_failure_raises
83-
@cache.write("foo", "bar")
101+
key = SecureRandom.uuid
102+
@cache.write(key, SecureRandom.alphanumeric)
84103

85104
assert_raise Redis::BaseError do
86105
emulating_unavailability do |cache|
87-
cache.exist?("foo")
106+
cache.exist?(key)
88107
end
89108
end
90109
end
91110

92111
def test_increment_failure_raises
93-
@cache.write("foo", 1, raw: true)
112+
key = SecureRandom.uuid
113+
@cache.write(key, 1, raw: true)
94114

95115
assert_raise Redis::BaseError do
96116
emulating_unavailability do |cache|
97-
cache.increment("foo")
117+
cache.increment(key)
98118
end
99119
end
100120
end
101121

102122
def test_decrement_failure_raises
103-
@cache.write("foo", 1, raw: true)
123+
key = SecureRandom.uuid
124+
@cache.write(key, 1, raw: true)
104125

105126
assert_raise Redis::BaseError do
106127
emulating_unavailability do |cache|
107-
cache.decrement("foo")
128+
cache.decrement(key)
108129
end
109130
end
110131
end

activesupport/test/cache/behaviors/failure_safety_behavior.rb

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,96 +2,119 @@
22

33
module FailureSafetyBehavior
44
def test_fetch_read_failure_returns_nil
5-
@cache.write("foo", "bar")
5+
key = SecureRandom.uuid
6+
@cache.write(key, SecureRandom.alphanumeric)
67

78
emulating_unavailability do |cache|
8-
assert_nil cache.fetch("foo")
9+
assert_nil cache.fetch(key)
910
end
1011
end
1112

1213
def test_fetch_read_failure_does_not_attempt_to_write
13-
@cache.write("foo", "bar")
14+
key = SecureRandom.uuid
15+
value = SecureRandom.alphanumeric
16+
@cache.write(key, value)
1417

1518
emulating_unavailability do |cache|
16-
val = cache.fetch("foo") { "1" }
19+
val = cache.fetch(key) { "1" }
1720

1821
##
1922
# Though the `write` part of fetch fails for the same reason
2023
# `read` will, the block result is still executed and returned.
2124
assert_equal "1", val
2225
end
2326

24-
assert_equal "bar", @cache.read("foo")
27+
assert_equal value, @cache.read(key)
2528
end
2629

2730
def test_read_failure_returns_nil
28-
@cache.write("foo", "bar")
31+
key = SecureRandom.uuid
32+
@cache.write(key, SecureRandom.alphanumeric)
2933

3034
emulating_unavailability do |cache|
31-
assert_nil cache.read("foo")
35+
assert_nil cache.read(key)
3236
end
3337
end
3438

3539
def test_read_multi_failure_returns_empty_hash
36-
@cache.write_multi("foo" => "bar", "baz" => "quux")
40+
key = SecureRandom.uuid
41+
other_key = SecureRandom.uuid
42+
@cache.write_multi(
43+
key => SecureRandom.alphanumeric,
44+
other_key => SecureRandom.alphanumeric
45+
)
3746

3847
emulating_unavailability do |cache|
39-
assert_equal Hash.new, cache.read_multi("foo", "baz")
48+
assert_equal Hash.new, cache.read_multi(key, other_key)
4049
end
4150
end
4251

4352
def test_write_failure_returns_false
53+
key = SecureRandom.uuid
4454
emulating_unavailability do |cache|
45-
assert_equal false, cache.write("foo", "bar")
55+
assert_equal false, cache.write(key, SecureRandom.alphanumeric)
4656
end
4757
end
4858

4959
def test_write_multi_failure_not_raises
5060
emulating_unavailability do |cache|
5161
assert_nothing_raised do
52-
cache.write_multi("foo" => "bar", "baz" => "quux")
62+
cache.write_multi(
63+
SecureRandom.uuid => SecureRandom.alphanumeric,
64+
SecureRandom.uuid => SecureRandom.alphanumeric
65+
)
5366
end
5467
end
5568
end
5669

5770
def test_fetch_multi_failure_returns_fallback_results
58-
@cache.write_multi("foo" => "bar", "baz" => "quux")
71+
key = SecureRandom.uuid
72+
other_key = SecureRandom.uuid
73+
@cache.write_multi(
74+
key => SecureRandom.alphanumeric,
75+
other_key => SecureRandom.alphanumeric
76+
)
77+
5978

6079
emulating_unavailability do |cache|
61-
fetched = cache.fetch_multi("foo", "baz") { |k| "unavailable" }
62-
assert_equal Hash["foo" => "unavailable", "baz" => "unavailable"], fetched
80+
fetched = cache.fetch_multi(key, other_key) { |k| "unavailable" }
81+
assert_equal Hash[key => "unavailable", other_key => "unavailable"], fetched
6382
end
6483
end
6584

6685
def test_delete_failure_returns_false
67-
@cache.write("foo", "bar")
86+
key = SecureRandom.uuid
87+
@cache.write(key, SecureRandom.alphanumeric)
6888

6989
emulating_unavailability do |cache|
70-
assert_equal false, cache.delete("foo")
90+
assert_equal false, cache.delete(key)
7191
end
7292
end
7393

7494
def test_exist_failure_returns_false
75-
@cache.write("foo", "bar")
95+
key = SecureRandom.uuid
96+
@cache.write(key, SecureRandom.alphanumeric)
7697

7798
emulating_unavailability do |cache|
78-
assert_not cache.exist?("foo")
99+
assert_not cache.exist?(key)
79100
end
80101
end
81102

82103
def test_increment_failure_returns_nil
83-
@cache.write("foo", 1, raw: true)
104+
key = SecureRandom.uuid
105+
@cache.write(key, 1, raw: true)
84106

85107
emulating_unavailability do |cache|
86-
assert_nil cache.increment("foo")
108+
assert_nil cache.increment(key)
87109
end
88110
end
89111

90112
def test_decrement_failure_returns_nil
91-
@cache.write("foo", 1, raw: true)
113+
key = SecureRandom.uuid
114+
@cache.write(key, 1, raw: true)
92115

93116
emulating_unavailability do |cache|
94-
assert_nil cache.decrement("foo")
117+
assert_nil cache.decrement(key)
95118
end
96119
end
97120

0 commit comments

Comments
 (0)