File: cluster_abnormal_state_test.rb

package info (click to toggle)
ruby-redis 4.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,168 kB
  • sloc: ruby: 12,820; makefile: 107; sh: 24
file content (56 lines) | stat: -rw-r--r-- 1,468 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# frozen_string_literal: true

require_relative 'helper'

# ruby -w -Itest test/cluster_abnormal_state_test.rb
class TestClusterAbnormalState < Minitest::Test
  include Helper::Cluster

  def test_the_state_of_cluster_down
    redis_cluster_down do
      assert_raises(Redis::CommandError, 'CLUSTERDOWN Hash slot not served') do
        redis.set('key1', 1)
      end

      assert_equal 'fail', redis.cluster(:info).fetch('cluster_state')
    end
  end

  def test_the_state_of_cluster_failover
    redis_cluster_failover do
      10.times do |i|
        assert_equal 'OK', r.set("key#{i}", i)
      end

      10.times do |i|
        assert_equal i.to_s, r.get("key#{i}")
      end

      assert_equal 'ok', redis.cluster(:info).fetch('cluster_state')
    end
  end

  def test_the_state_of_cluster_node_failure
    redis_cluster_fail_master do
      assert_raises(Redis::CannotConnectError, 'Error connecting to Redis on 127.0.0.1:7002') do
        r.set('key0', 0)
      end

      10.times do |i|
        assert_equal 'OK', r.set("key#{i}", i)
      end

      10.times do |i|
        assert_equal i.to_s, r.get("key#{i}")
      end

      assert_equal 'ok', redis.cluster(:info).fetch('cluster_state')
    end
  end

  def test_raising_error_when_nodes_are_not_cluster_mode
    assert_raises(Redis::CannotConnectError, 'Redis client could not connect to any cluster nodes') do
      build_another_client(cluster: %W[redis://127.0.0.1:#{PORT}])
    end
  end
end