redis 4.0.1 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +38 -0
 - data/README.md +46 -1
 - data/lib/redis/client.rb +29 -12
 - data/lib/redis/cluster/command.rb +81 -0
 - data/lib/redis/cluster/command_loader.rb +34 -0
 - data/lib/redis/cluster/key_slot_converter.rb +72 -0
 - data/lib/redis/cluster/node.rb +104 -0
 - data/lib/redis/cluster/node_key.rb +35 -0
 - data/lib/redis/cluster/node_loader.rb +37 -0
 - data/lib/redis/cluster/option.rb +77 -0
 - data/lib/redis/cluster/slot.rb +69 -0
 - data/lib/redis/cluster/slot_loader.rb +49 -0
 - data/lib/redis/cluster.rb +286 -0
 - data/lib/redis/connection/ruby.rb +5 -2
 - data/lib/redis/distributed.rb +13 -6
 - data/lib/redis/errors.rb +46 -0
 - data/lib/redis/pipeline.rb +9 -1
 - data/lib/redis/version.rb +1 -1
 - data/lib/redis.rb +692 -25
 - metadata +27 -184
 - data/.gitignore +0 -16
 - data/.travis/Gemfile +0 -13
 - data/.travis.yml +0 -73
 - data/.yardopts +0 -3
 - data/Gemfile +0 -3
 - data/benchmarking/logging.rb +0 -71
 - data/benchmarking/pipeline.rb +0 -51
 - data/benchmarking/speed.rb +0 -21
 - data/benchmarking/suite.rb +0 -24
 - data/benchmarking/worker.rb +0 -71
 - data/bors.toml +0 -14
 - data/examples/basic.rb +0 -15
 - data/examples/consistency.rb +0 -114
 - data/examples/dist_redis.rb +0 -43
 - data/examples/incr-decr.rb +0 -17
 - data/examples/list.rb +0 -26
 - data/examples/pubsub.rb +0 -37
 - data/examples/sentinel/sentinel.conf +0 -9
 - data/examples/sentinel/start +0 -49
 - data/examples/sentinel.rb +0 -41
 - data/examples/sets.rb +0 -36
 - data/examples/unicorn/config.ru +0 -3
 - data/examples/unicorn/unicorn.rb +0 -20
 - data/makefile +0 -42
 - data/redis.gemspec +0 -42
 - data/test/bitpos_test.rb +0 -63
 - data/test/blocking_commands_test.rb +0 -40
 - data/test/client_test.rb +0 -59
 - data/test/command_map_test.rb +0 -28
 - data/test/commands_on_hashes_test.rb +0 -19
 - data/test/commands_on_hyper_log_log_test.rb +0 -19
 - data/test/commands_on_lists_test.rb +0 -18
 - data/test/commands_on_sets_test.rb +0 -75
 - data/test/commands_on_sorted_sets_test.rb +0 -150
 - data/test/commands_on_strings_test.rb +0 -99
 - data/test/commands_on_value_types_test.rb +0 -171
 - data/test/connection_handling_test.rb +0 -275
 - data/test/connection_test.rb +0 -57
 - data/test/db/.gitkeep +0 -0
 - data/test/distributed_blocking_commands_test.rb +0 -44
 - data/test/distributed_commands_on_hashes_test.rb +0 -8
 - data/test/distributed_commands_on_hyper_log_log_test.rb +0 -31
 - data/test/distributed_commands_on_lists_test.rb +0 -20
 - data/test/distributed_commands_on_sets_test.rb +0 -106
 - data/test/distributed_commands_on_sorted_sets_test.rb +0 -16
 - data/test/distributed_commands_on_strings_test.rb +0 -69
 - data/test/distributed_commands_on_value_types_test.rb +0 -93
 - data/test/distributed_commands_requiring_clustering_test.rb +0 -162
 - data/test/distributed_connection_handling_test.rb +0 -21
 - data/test/distributed_internals_test.rb +0 -68
 - data/test/distributed_key_tags_test.rb +0 -50
 - data/test/distributed_persistence_control_commands_test.rb +0 -24
 - data/test/distributed_publish_subscribe_test.rb +0 -90
 - data/test/distributed_remote_server_control_commands_test.rb +0 -64
 - data/test/distributed_scripting_test.rb +0 -100
 - data/test/distributed_sorting_test.rb +0 -18
 - data/test/distributed_test.rb +0 -56
 - data/test/distributed_transactions_test.rb +0 -30
 - data/test/encoding_test.rb +0 -14
 - data/test/error_replies_test.rb +0 -57
 - data/test/fork_safety_test.rb +0 -60
 - data/test/helper.rb +0 -201
 - data/test/helper_test.rb +0 -22
 - data/test/internals_test.rb +0 -389
 - data/test/lint/blocking_commands.rb +0 -150
 - data/test/lint/hashes.rb +0 -162
 - data/test/lint/hyper_log_log.rb +0 -60
 - data/test/lint/lists.rb +0 -143
 - data/test/lint/sets.rb +0 -140
 - data/test/lint/sorted_sets.rb +0 -316
 - data/test/lint/strings.rb +0 -246
 - data/test/lint/value_types.rb +0 -130
 - data/test/persistence_control_commands_test.rb +0 -24
 - data/test/pipelining_commands_test.rb +0 -238
 - data/test/publish_subscribe_test.rb +0 -280
 - data/test/remote_server_control_commands_test.rb +0 -175
 - data/test/scanning_test.rb +0 -407
 - data/test/scripting_test.rb +0 -76
 - data/test/sentinel_command_test.rb +0 -78
 - data/test/sentinel_test.rb +0 -253
 - data/test/sorting_test.rb +0 -57
 - data/test/ssl_test.rb +0 -69
 - data/test/support/connection/hiredis.rb +0 -1
 - data/test/support/connection/ruby.rb +0 -1
 - data/test/support/connection/synchrony.rb +0 -17
 - data/test/support/redis_mock.rb +0 -130
 - data/test/support/ssl/gen_certs.sh +0 -31
 - data/test/support/ssl/trusted-ca.crt +0 -25
 - data/test/support/ssl/trusted-ca.key +0 -27
 - data/test/support/ssl/trusted-cert.crt +0 -81
 - data/test/support/ssl/trusted-cert.key +0 -28
 - data/test/support/ssl/untrusted-ca.crt +0 -26
 - data/test/support/ssl/untrusted-ca.key +0 -27
 - data/test/support/ssl/untrusted-cert.crt +0 -82
 - data/test/support/ssl/untrusted-cert.key +0 -28
 - data/test/support/wire/synchrony.rb +0 -24
 - data/test/support/wire/thread.rb +0 -5
 - data/test/synchrony_driver.rb +0 -85
 - data/test/test.conf.erb +0 -9
 - data/test/thread_safety_test.rb +0 -60
 - data/test/transactions_test.rb +0 -262
 - data/test/unknown_commands_test.rb +0 -12
 - data/test/url_param_test.rb +0 -136
 
| 
         @@ -1,19 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative "helper"
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative "lint/hashes"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class TestCommandsOnHashes < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              include Helper::Client
         
     | 
| 
       7 
     | 
    
         
            -
              include Lint::Hashes
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def test_mapped_hmget_in_a_pipeline_returns_hash
         
     | 
| 
       10 
     | 
    
         
            -
                r.hset("foo", "f1", "s1")
         
     | 
| 
       11 
     | 
    
         
            -
                r.hset("foo", "f2", "s2")
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                result = r.pipelined do
         
     | 
| 
       14 
     | 
    
         
            -
                  r.mapped_hmget("foo", "f1", "f2")
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                assert_equal result[0], { "f1" => "s1", "f2" => "s2" }
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,19 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative "helper"
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative "lint/hyper_log_log"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class TestCommandsOnHyperLogLog < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              include Helper::Client
         
     | 
| 
       7 
     | 
    
         
            -
              include Lint::HyperLogLog
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def test_pfmerge
         
     | 
| 
       10 
     | 
    
         
            -
                target_version "2.8.9" do
         
     | 
| 
       11 
     | 
    
         
            -
                  r.pfadd "foo", "s1"
         
     | 
| 
       12 
     | 
    
         
            -
                  r.pfadd "bar", "s2"
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                  assert_equal true, r.pfmerge("res", "foo", "bar")
         
     | 
| 
       15 
     | 
    
         
            -
                  assert_equal 2, r.pfcount("res")
         
     | 
| 
       16 
     | 
    
         
            -
                end
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,18 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative "helper"
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative "lint/lists"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class TestCommandsOnLists < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              include Helper::Client
         
     | 
| 
       7 
     | 
    
         
            -
              include Lint::Lists
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def test_rpoplpush
         
     | 
| 
       10 
     | 
    
         
            -
                r.rpush "foo", "s1"
         
     | 
| 
       11 
     | 
    
         
            -
                r.rpush "foo", "s2"
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                assert_equal "s2", r.rpoplpush("foo", "bar")
         
     | 
| 
       14 
     | 
    
         
            -
                assert_equal ["s2"], r.lrange("bar", 0, -1)
         
     | 
| 
       15 
     | 
    
         
            -
                assert_equal "s1", r.rpoplpush("foo", "bar")
         
     | 
| 
       16 
     | 
    
         
            -
                assert_equal ["s1", "s2"], r.lrange("bar", 0, -1)
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
       18 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,75 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative "helper"
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative "lint/sets"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class TestCommandsOnSets < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              include Helper::Client
         
     | 
| 
       7 
     | 
    
         
            -
              include Lint::Sets
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def test_smove
         
     | 
| 
       10 
     | 
    
         
            -
                r.sadd "foo", "s1"
         
     | 
| 
       11 
     | 
    
         
            -
                r.sadd "bar", "s2"
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                assert r.smove("foo", "bar", "s1")
         
     | 
| 
       14 
     | 
    
         
            -
                assert r.sismember("bar", "s1")
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              def test_sinter
         
     | 
| 
       18 
     | 
    
         
            -
                r.sadd "foo", "s1"
         
     | 
| 
       19 
     | 
    
         
            -
                r.sadd "foo", "s2"
         
     | 
| 
       20 
     | 
    
         
            -
                r.sadd "bar", "s2"
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                assert_equal ["s2"], r.sinter("foo", "bar")
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              def test_sinterstore
         
     | 
| 
       26 
     | 
    
         
            -
                r.sadd "foo", "s1"
         
     | 
| 
       27 
     | 
    
         
            -
                r.sadd "foo", "s2"
         
     | 
| 
       28 
     | 
    
         
            -
                r.sadd "bar", "s2"
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                r.sinterstore("baz", "foo", "bar")
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                assert_equal ["s2"], r.smembers("baz")
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
              def test_sunion
         
     | 
| 
       36 
     | 
    
         
            -
                r.sadd "foo", "s1"
         
     | 
| 
       37 
     | 
    
         
            -
                r.sadd "foo", "s2"
         
     | 
| 
       38 
     | 
    
         
            -
                r.sadd "bar", "s2"
         
     | 
| 
       39 
     | 
    
         
            -
                r.sadd "bar", "s3"
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                assert_equal ["s1", "s2", "s3"], r.sunion("foo", "bar").sort
         
     | 
| 
       42 
     | 
    
         
            -
              end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
              def test_sunionstore
         
     | 
| 
       45 
     | 
    
         
            -
                r.sadd "foo", "s1"
         
     | 
| 
       46 
     | 
    
         
            -
                r.sadd "foo", "s2"
         
     | 
| 
       47 
     | 
    
         
            -
                r.sadd "bar", "s2"
         
     | 
| 
       48 
     | 
    
         
            -
                r.sadd "bar", "s3"
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                r.sunionstore("baz", "foo", "bar")
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                assert_equal ["s1", "s2", "s3"], r.smembers("baz").sort
         
     | 
| 
       53 
     | 
    
         
            -
              end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
              def test_sdiff
         
     | 
| 
       56 
     | 
    
         
            -
                r.sadd "foo", "s1"
         
     | 
| 
       57 
     | 
    
         
            -
                r.sadd "foo", "s2"
         
     | 
| 
       58 
     | 
    
         
            -
                r.sadd "bar", "s2"
         
     | 
| 
       59 
     | 
    
         
            -
                r.sadd "bar", "s3"
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                assert_equal ["s1"], r.sdiff("foo", "bar")
         
     | 
| 
       62 
     | 
    
         
            -
                assert_equal ["s3"], r.sdiff("bar", "foo")
         
     | 
| 
       63 
     | 
    
         
            -
              end
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
              def test_sdiffstore
         
     | 
| 
       66 
     | 
    
         
            -
                r.sadd "foo", "s1"
         
     | 
| 
       67 
     | 
    
         
            -
                r.sadd "foo", "s2"
         
     | 
| 
       68 
     | 
    
         
            -
                r.sadd "bar", "s2"
         
     | 
| 
       69 
     | 
    
         
            -
                r.sadd "bar", "s3"
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                r.sdiffstore("baz", "foo", "bar")
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                assert_equal ["s1"], r.smembers("baz")
         
     | 
| 
       74 
     | 
    
         
            -
              end
         
     | 
| 
       75 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,150 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative "helper"
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative "lint/sorted_sets"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class TestCommandsOnSortedSets < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              include Helper::Client
         
     | 
| 
       7 
     | 
    
         
            -
              include Lint::SortedSets
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def test_zlexcount
         
     | 
| 
       10 
     | 
    
         
            -
                target_version "2.8.9" do
         
     | 
| 
       11 
     | 
    
         
            -
                  r.zadd "foo", 0, "aaren"
         
     | 
| 
       12 
     | 
    
         
            -
                  r.zadd "foo", 0, "abagael"
         
     | 
| 
       13 
     | 
    
         
            -
                  r.zadd "foo", 0, "abby"
         
     | 
| 
       14 
     | 
    
         
            -
                  r.zadd "foo", 0, "abbygail"
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  assert_equal 4, r.zlexcount("foo", "[a", "[a\xff")
         
     | 
| 
       17 
     | 
    
         
            -
                  assert_equal 4, r.zlexcount("foo", "[aa", "[ab\xff")
         
     | 
| 
       18 
     | 
    
         
            -
                  assert_equal 3, r.zlexcount("foo", "(aaren", "[ab\xff")
         
     | 
| 
       19 
     | 
    
         
            -
                  assert_equal 2, r.zlexcount("foo", "[aba", "(abbygail")
         
     | 
| 
       20 
     | 
    
         
            -
                  assert_equal 1, r.zlexcount("foo", "(aaren", "(abby")
         
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
       22 
     | 
    
         
            -
              end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
              def test_zrangebylex
         
     | 
| 
       25 
     | 
    
         
            -
                target_version "2.8.9" do
         
     | 
| 
       26 
     | 
    
         
            -
                  r.zadd "foo", 0, "aaren"
         
     | 
| 
       27 
     | 
    
         
            -
                  r.zadd "foo", 0, "abagael"
         
     | 
| 
       28 
     | 
    
         
            -
                  r.zadd "foo", 0, "abby"
         
     | 
| 
       29 
     | 
    
         
            -
                  r.zadd "foo", 0, "abbygail"
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  assert_equal ["aaren", "abagael", "abby", "abbygail"], r.zrangebylex("foo", "[a", "[a\xff")
         
     | 
| 
       32 
     | 
    
         
            -
                  assert_equal ["aaren", "abagael"], r.zrangebylex("foo", "[a", "[a\xff", :limit => [0, 2])
         
     | 
| 
       33 
     | 
    
         
            -
                  assert_equal ["abby", "abbygail"], r.zrangebylex("foo", "(abb", "(abb\xff")
         
     | 
| 
       34 
     | 
    
         
            -
                  assert_equal ["abbygail"], r.zrangebylex("foo", "(abby", "(abby\xff")
         
     | 
| 
       35 
     | 
    
         
            -
                end
         
     | 
| 
       36 
     | 
    
         
            -
              end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
              def test_zrevrangebylex
         
     | 
| 
       39 
     | 
    
         
            -
                target_version "2.9.9" do
         
     | 
| 
       40 
     | 
    
         
            -
                  r.zadd "foo", 0, "aaren"
         
     | 
| 
       41 
     | 
    
         
            -
                  r.zadd "foo", 0, "abagael"
         
     | 
| 
       42 
     | 
    
         
            -
                  r.zadd "foo", 0, "abby"
         
     | 
| 
       43 
     | 
    
         
            -
                  r.zadd "foo", 0, "abbygail"
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                  assert_equal ["abbygail", "abby", "abagael", "aaren"], r.zrevrangebylex("foo", "[a\xff", "[a")
         
     | 
| 
       46 
     | 
    
         
            -
                  assert_equal ["abbygail", "abby"], r.zrevrangebylex("foo", "[a\xff", "[a", :limit => [0, 2])
         
     | 
| 
       47 
     | 
    
         
            -
                  assert_equal ["abbygail", "abby"], r.zrevrangebylex("foo", "(abb\xff", "(abb")
         
     | 
| 
       48 
     | 
    
         
            -
                  assert_equal ["abbygail"], r.zrevrangebylex("foo", "(abby\xff", "(abby")
         
     | 
| 
       49 
     | 
    
         
            -
                end
         
     | 
| 
       50 
     | 
    
         
            -
              end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
              def test_zcount
         
     | 
| 
       53 
     | 
    
         
            -
                r.zadd "foo", 1, "s1"
         
     | 
| 
       54 
     | 
    
         
            -
                r.zadd "foo", 2, "s2"
         
     | 
| 
       55 
     | 
    
         
            -
                r.zadd "foo", 3, "s3"
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                assert_equal 2, r.zcount("foo", 2, 3)
         
     | 
| 
       58 
     | 
    
         
            -
              end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
              def test_zunionstore
         
     | 
| 
       61 
     | 
    
         
            -
                r.zadd "foo", 1, "s1"
         
     | 
| 
       62 
     | 
    
         
            -
                r.zadd "bar", 2, "s2"
         
     | 
| 
       63 
     | 
    
         
            -
                r.zadd "foo", 3, "s3"
         
     | 
| 
       64 
     | 
    
         
            -
                r.zadd "bar", 4, "s4"
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                assert_equal 4, r.zunionstore("foobar", ["foo", "bar"])
         
     | 
| 
       67 
     | 
    
         
            -
                assert_equal ["s1", "s2", "s3", "s4"], r.zrange("foobar", 0, -1)
         
     | 
| 
       68 
     | 
    
         
            -
              end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
              def test_zunionstore_with_weights
         
     | 
| 
       71 
     | 
    
         
            -
                r.zadd "foo", 1, "s1"
         
     | 
| 
       72 
     | 
    
         
            -
                r.zadd "foo", 3, "s3"
         
     | 
| 
       73 
     | 
    
         
            -
                r.zadd "bar", 20, "s2"
         
     | 
| 
       74 
     | 
    
         
            -
                r.zadd "bar", 40, "s4"
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
                assert_equal 4, r.zunionstore("foobar", ["foo", "bar"])
         
     | 
| 
       77 
     | 
    
         
            -
                assert_equal ["s1", "s3", "s2", "s4"], r.zrange("foobar", 0, -1)
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                assert_equal 4, r.zunionstore("foobar", ["foo", "bar"], :weights => [10, 1])
         
     | 
| 
       80 
     | 
    
         
            -
                assert_equal ["s1", "s2", "s3", "s4"], r.zrange("foobar", 0, -1)
         
     | 
| 
       81 
     | 
    
         
            -
              end
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
              def test_zunionstore_with_aggregate
         
     | 
| 
       84 
     | 
    
         
            -
                r.zadd "foo", 1, "s1"
         
     | 
| 
       85 
     | 
    
         
            -
                r.zadd "foo", 2, "s2"
         
     | 
| 
       86 
     | 
    
         
            -
                r.zadd "bar", 4, "s2"
         
     | 
| 
       87 
     | 
    
         
            -
                r.zadd "bar", 3, "s3"
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
                assert_equal 3, r.zunionstore("foobar", ["foo", "bar"])
         
     | 
| 
       90 
     | 
    
         
            -
                assert_equal ["s1", "s3", "s2"], r.zrange("foobar", 0, -1)
         
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
                assert_equal 3, r.zunionstore("foobar", ["foo", "bar"], :aggregate => :min)
         
     | 
| 
       93 
     | 
    
         
            -
                assert_equal ["s1", "s2", "s3"], r.zrange("foobar", 0, -1)
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
                assert_equal 3, r.zunionstore("foobar", ["foo", "bar"], :aggregate => :max)
         
     | 
| 
       96 
     | 
    
         
            -
                assert_equal ["s1", "s3", "s2"], r.zrange("foobar", 0, -1)
         
     | 
| 
       97 
     | 
    
         
            -
              end
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
              def test_zinterstore
         
     | 
| 
       100 
     | 
    
         
            -
                r.zadd "foo", 1, "s1"
         
     | 
| 
       101 
     | 
    
         
            -
                r.zadd "bar", 2, "s1"
         
     | 
| 
       102 
     | 
    
         
            -
                r.zadd "foo", 3, "s3"
         
     | 
| 
       103 
     | 
    
         
            -
                r.zadd "bar", 4, "s4"
         
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
                assert_equal 1, r.zinterstore("foobar", ["foo", "bar"])
         
     | 
| 
       106 
     | 
    
         
            -
                assert_equal ["s1"], r.zrange("foobar", 0, -1)
         
     | 
| 
       107 
     | 
    
         
            -
              end
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
              def test_zinterstore_with_weights
         
     | 
| 
       110 
     | 
    
         
            -
                r.zadd "foo", 1, "s1"
         
     | 
| 
       111 
     | 
    
         
            -
                r.zadd "foo", 2, "s2"
         
     | 
| 
       112 
     | 
    
         
            -
                r.zadd "foo", 3, "s3"
         
     | 
| 
       113 
     | 
    
         
            -
                r.zadd "bar", 20, "s2"
         
     | 
| 
       114 
     | 
    
         
            -
                r.zadd "bar", 30, "s3"
         
     | 
| 
       115 
     | 
    
         
            -
                r.zadd "bar", 40, "s4"
         
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
                assert_equal 2, r.zinterstore("foobar", ["foo", "bar"])
         
     | 
| 
       118 
     | 
    
         
            -
                assert_equal ["s2", "s3"], r.zrange("foobar", 0, -1)
         
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
                assert_equal 2, r.zinterstore("foobar", ["foo", "bar"], :weights => [10, 1])
         
     | 
| 
       121 
     | 
    
         
            -
                assert_equal ["s2", "s3"], r.zrange("foobar", 0, -1)
         
     | 
| 
       122 
     | 
    
         
            -
             
     | 
| 
       123 
     | 
    
         
            -
                assert_equal 40.0, r.zscore("foobar", "s2")
         
     | 
| 
       124 
     | 
    
         
            -
                assert_equal 60.0, r.zscore("foobar", "s3")
         
     | 
| 
       125 
     | 
    
         
            -
              end
         
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
              def test_zinterstore_with_aggregate
         
     | 
| 
       128 
     | 
    
         
            -
                r.zadd "foo", 1, "s1"
         
     | 
| 
       129 
     | 
    
         
            -
                r.zadd "foo", 2, "s2"
         
     | 
| 
       130 
     | 
    
         
            -
                r.zadd "foo", 3, "s3"
         
     | 
| 
       131 
     | 
    
         
            -
                r.zadd "bar", 20, "s2"
         
     | 
| 
       132 
     | 
    
         
            -
                r.zadd "bar", 30, "s3"
         
     | 
| 
       133 
     | 
    
         
            -
                r.zadd "bar", 40, "s4"
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
                assert_equal 2, r.zinterstore("foobar", ["foo", "bar"])
         
     | 
| 
       136 
     | 
    
         
            -
                assert_equal ["s2", "s3"], r.zrange("foobar", 0, -1)
         
     | 
| 
       137 
     | 
    
         
            -
                assert_equal 22.0, r.zscore("foobar", "s2")
         
     | 
| 
       138 
     | 
    
         
            -
                assert_equal 33.0, r.zscore("foobar", "s3")
         
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
       140 
     | 
    
         
            -
                assert_equal 2, r.zinterstore("foobar", ["foo", "bar"], :aggregate => :min)
         
     | 
| 
       141 
     | 
    
         
            -
                assert_equal ["s2", "s3"], r.zrange("foobar", 0, -1)
         
     | 
| 
       142 
     | 
    
         
            -
                assert_equal 2.0, r.zscore("foobar", "s2")
         
     | 
| 
       143 
     | 
    
         
            -
                assert_equal 3.0, r.zscore("foobar", "s3")
         
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
       145 
     | 
    
         
            -
                assert_equal 2, r.zinterstore("foobar", ["foo", "bar"], :aggregate => :max)
         
     | 
| 
       146 
     | 
    
         
            -
                assert_equal ["s2", "s3"], r.zrange("foobar", 0, -1)
         
     | 
| 
       147 
     | 
    
         
            -
                assert_equal 20.0, r.zscore("foobar", "s2")
         
     | 
| 
       148 
     | 
    
         
            -
                assert_equal 30.0, r.zscore("foobar", "s3")
         
     | 
| 
       149 
     | 
    
         
            -
              end
         
     | 
| 
       150 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,99 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative "helper"
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative "lint/strings"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class TestCommandsOnStrings < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              include Helper::Client
         
     | 
| 
       7 
     | 
    
         
            -
              include Lint::Strings
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def test_mget
         
     | 
| 
       10 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       11 
     | 
    
         
            -
                r.set("bar", "s2")
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                assert_equal ["s1", "s2"]     , r.mget("foo", "bar")
         
     | 
| 
       14 
     | 
    
         
            -
                assert_equal ["s1", "s2", nil], r.mget("foo", "bar", "baz")
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              def test_mget_mapped
         
     | 
| 
       18 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       19 
     | 
    
         
            -
                r.set("bar", "s2")
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                response = r.mapped_mget("foo", "bar")
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                assert_equal "s1", response["foo"]
         
     | 
| 
       24 
     | 
    
         
            -
                assert_equal "s2", response["bar"]
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                response = r.mapped_mget("foo", "bar", "baz")
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                assert_equal "s1", response["foo"]
         
     | 
| 
       29 
     | 
    
         
            -
                assert_equal "s2", response["bar"]
         
     | 
| 
       30 
     | 
    
         
            -
                assert_equal nil , response["baz"]
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
              def test_mapped_mget_in_a_pipeline_returns_hash
         
     | 
| 
       34 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       35 
     | 
    
         
            -
                r.set("bar", "s2")
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                result = r.pipelined do
         
     | 
| 
       38 
     | 
    
         
            -
                  r.mapped_mget("foo", "bar")
         
     | 
| 
       39 
     | 
    
         
            -
                end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                assert_equal result[0], { "foo" => "s1", "bar" => "s2" }
         
     | 
| 
       42 
     | 
    
         
            -
              end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
              def test_mset
         
     | 
| 
       45 
     | 
    
         
            -
                r.mset(:foo, "s1", :bar, "s2")
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                assert_equal "s1", r.get("foo")
         
     | 
| 
       48 
     | 
    
         
            -
                assert_equal "s2", r.get("bar")
         
     | 
| 
       49 
     | 
    
         
            -
              end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
              def test_mset_mapped
         
     | 
| 
       52 
     | 
    
         
            -
                r.mapped_mset(:foo => "s1", :bar => "s2")
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                assert_equal "s1", r.get("foo")
         
     | 
| 
       55 
     | 
    
         
            -
                assert_equal "s2", r.get("bar")
         
     | 
| 
       56 
     | 
    
         
            -
              end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
              def test_msetnx
         
     | 
| 
       59 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       60 
     | 
    
         
            -
                assert_equal false, r.msetnx(:foo, "s2", :bar, "s3")
         
     | 
| 
       61 
     | 
    
         
            -
                assert_equal "s1", r.get("foo")
         
     | 
| 
       62 
     | 
    
         
            -
                assert_equal nil, r.get("bar")
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                r.del("foo")
         
     | 
| 
       65 
     | 
    
         
            -
                assert_equal true, r.msetnx(:foo, "s2", :bar, "s3")
         
     | 
| 
       66 
     | 
    
         
            -
                assert_equal "s2", r.get("foo")
         
     | 
| 
       67 
     | 
    
         
            -
                assert_equal "s3", r.get("bar")
         
     | 
| 
       68 
     | 
    
         
            -
              end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
              def test_msetnx_mapped
         
     | 
| 
       71 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       72 
     | 
    
         
            -
                assert_equal false, r.mapped_msetnx(:foo => "s2", :bar => "s3")
         
     | 
| 
       73 
     | 
    
         
            -
                assert_equal "s1", r.get("foo")
         
     | 
| 
       74 
     | 
    
         
            -
                assert_equal nil, r.get("bar")
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
                r.del("foo")
         
     | 
| 
       77 
     | 
    
         
            -
                assert_equal true, r.mapped_msetnx(:foo => "s2", :bar => "s3")
         
     | 
| 
       78 
     | 
    
         
            -
                assert_equal "s2", r.get("foo")
         
     | 
| 
       79 
     | 
    
         
            -
                assert_equal "s3", r.get("bar")
         
     | 
| 
       80 
     | 
    
         
            -
              end
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
              def test_bitop
         
     | 
| 
       83 
     | 
    
         
            -
                with_external_encoding("UTF-8") do
         
     | 
| 
       84 
     | 
    
         
            -
                  target_version "2.5.10" do
         
     | 
| 
       85 
     | 
    
         
            -
                    r.set("foo", "a")
         
     | 
| 
       86 
     | 
    
         
            -
                    r.set("bar", "b")
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                    r.bitop(:and, "foo&bar", "foo", "bar")
         
     | 
| 
       89 
     | 
    
         
            -
                    assert_equal "\x60", r.get("foo&bar")
         
     | 
| 
       90 
     | 
    
         
            -
                    r.bitop(:or, "foo|bar", "foo", "bar")
         
     | 
| 
       91 
     | 
    
         
            -
                    assert_equal "\x63", r.get("foo|bar")
         
     | 
| 
       92 
     | 
    
         
            -
                    r.bitop(:xor, "foo^bar", "foo", "bar")
         
     | 
| 
       93 
     | 
    
         
            -
                    assert_equal "\x03", r.get("foo^bar")
         
     | 
| 
       94 
     | 
    
         
            -
                    r.bitop(:not, "~foo", "foo")
         
     | 
| 
       95 
     | 
    
         
            -
                    assert_equal "\x9E", r.get("~foo")
         
     | 
| 
       96 
     | 
    
         
            -
                  end
         
     | 
| 
       97 
     | 
    
         
            -
                end
         
     | 
| 
       98 
     | 
    
         
            -
              end
         
     | 
| 
       99 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,171 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative "helper"
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative "lint/value_types"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class TestCommandsOnValueTypes < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              include Helper::Client
         
     | 
| 
       7 
     | 
    
         
            -
              include Lint::ValueTypes
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def test_del
         
     | 
| 
       10 
     | 
    
         
            -
                r.set "foo", "s1"
         
     | 
| 
       11 
     | 
    
         
            -
                r.set "bar", "s2"
         
     | 
| 
       12 
     | 
    
         
            -
                r.set "baz", "s3"
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                assert_equal ["bar", "baz", "foo"], r.keys("*").sort
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                assert_equal 1, r.del("foo")
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                assert_equal ["bar", "baz"], r.keys("*").sort
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                assert_equal 2, r.del("bar", "baz")
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                assert_equal [], r.keys("*").sort
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              def test_del_with_array_argument
         
     | 
| 
       26 
     | 
    
         
            -
                r.set "foo", "s1"
         
     | 
| 
       27 
     | 
    
         
            -
                r.set "bar", "s2"
         
     | 
| 
       28 
     | 
    
         
            -
                r.set "baz", "s3"
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                assert_equal ["bar", "baz", "foo"], r.keys("*").sort
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                assert_equal 1, r.del(["foo"])
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                assert_equal ["bar", "baz"], r.keys("*").sort
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                assert_equal 2, r.del(["bar", "baz"])
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                assert_equal [], r.keys("*").sort
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              def test_randomkey
         
     | 
| 
       42 
     | 
    
         
            -
                assert r.randomkey.to_s.empty?
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                assert_equal "foo", r.randomkey
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                r.set("bar", "s2")
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                4.times do
         
     | 
| 
       51 
     | 
    
         
            -
                  assert ["foo", "bar"].include?(r.randomkey)
         
     | 
| 
       52 
     | 
    
         
            -
                end
         
     | 
| 
       53 
     | 
    
         
            -
              end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
              def test_rename
         
     | 
| 
       56 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       57 
     | 
    
         
            -
                r.rename "foo", "bar"
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                assert_equal "s1", r.get("bar")
         
     | 
| 
       60 
     | 
    
         
            -
                assert_equal nil, r.get("foo")
         
     | 
| 
       61 
     | 
    
         
            -
              end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
              def test_renamenx
         
     | 
| 
       64 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       65 
     | 
    
         
            -
                r.set("bar", "s2")
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                assert_equal false, r.renamenx("foo", "bar")
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                assert_equal "s1", r.get("foo")
         
     | 
| 
       70 
     | 
    
         
            -
                assert_equal "s2", r.get("bar")
         
     | 
| 
       71 
     | 
    
         
            -
              end
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
              def test_dbsize
         
     | 
| 
       74 
     | 
    
         
            -
                assert_equal 0, r.dbsize
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
                assert_equal 1, r.dbsize
         
     | 
| 
       79 
     | 
    
         
            -
              end
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
              def test_flushdb
         
     | 
| 
       82 
     | 
    
         
            -
                # Test defaults
         
     | 
| 
       83 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       84 
     | 
    
         
            -
                r.set("bar", "s2")
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
                assert_equal 2, r.dbsize
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                r.flushdb
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
                assert_equal 0, r.dbsize
         
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
                # Test sync
         
     | 
| 
       93 
     | 
    
         
            -
                r.set("foo", "s1")
         
     | 
| 
       94 
     | 
    
         
            -
                r.set("bar", "s2")
         
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
                assert_equal 2, r.dbsize
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
                r.flushdb(:async => false)
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
                assert_equal 0, r.dbsize
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
                # Test async
         
     | 
| 
       103 
     | 
    
         
            -
                target_version "3.9.101" do
         
     | 
| 
       104 
     | 
    
         
            -
                  r.set("foo", "s1")
         
     | 
| 
       105 
     | 
    
         
            -
                  r.set("bar", "s2")
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
                  assert_equal 2, r.dbsize
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
                  r.flushdb(:async => true)
         
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
                  assert_equal 0, r.dbsize
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
                  redis_mock(:flushdb => lambda { |args| "+FLUSHDB #{args.upcase}" }) do |redis|
         
     | 
| 
       114 
     | 
    
         
            -
                    assert_equal "FLUSHDB ASYNC", redis.flushdb(:async => true)
         
     | 
| 
       115 
     | 
    
         
            -
                  end
         
     | 
| 
       116 
     | 
    
         
            -
                end
         
     | 
| 
       117 
     | 
    
         
            -
              end
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
              def test_flushall
         
     | 
| 
       120 
     | 
    
         
            -
                # Test defaults
         
     | 
| 
       121 
     | 
    
         
            -
                redis_mock(:flushall => lambda { "+FLUSHALL" }) do |redis|
         
     | 
| 
       122 
     | 
    
         
            -
                  assert_equal "FLUSHALL", redis.flushall
         
     | 
| 
       123 
     | 
    
         
            -
                end
         
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
                # Test sync
         
     | 
| 
       126 
     | 
    
         
            -
                redis_mock(:flushall => lambda { "+FLUSHALL" }) do |redis|
         
     | 
| 
       127 
     | 
    
         
            -
                  assert_equal "FLUSHALL", redis.flushall(:async => false)
         
     | 
| 
       128 
     | 
    
         
            -
                end
         
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
       130 
     | 
    
         
            -
                # Test async
         
     | 
| 
       131 
     | 
    
         
            -
                target_version "3.9.101" do
         
     | 
| 
       132 
     | 
    
         
            -
                  redis_mock(:flushall => lambda { |args| "+FLUSHALL #{args.upcase}" }) do |redis|
         
     | 
| 
       133 
     | 
    
         
            -
                    assert_equal "FLUSHALL ASYNC", redis.flushall(:async => true)
         
     | 
| 
       134 
     | 
    
         
            -
                  end
         
     | 
| 
       135 
     | 
    
         
            -
                end
         
     | 
| 
       136 
     | 
    
         
            -
              end
         
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
              def test_migrate
         
     | 
| 
       139 
     | 
    
         
            -
                redis_mock(:migrate => lambda { |*args| args }) do |redis|
         
     | 
| 
       140 
     | 
    
         
            -
                  options = { :host => "127.0.0.1", :port => 1234 }
         
     | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
       142 
     | 
    
         
            -
                  ex = assert_raise(RuntimeError) do
         
     | 
| 
       143 
     | 
    
         
            -
                    redis.migrate("foo", options.reject { |key, _| key == :host })
         
     | 
| 
       144 
     | 
    
         
            -
                  end
         
     | 
| 
       145 
     | 
    
         
            -
                  assert ex.message =~ /host not specified/
         
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
                  ex = assert_raise(RuntimeError) do
         
     | 
| 
       148 
     | 
    
         
            -
                    redis.migrate("foo", options.reject { |key, _| key == :port })
         
     | 
| 
       149 
     | 
    
         
            -
                  end
         
     | 
| 
       150 
     | 
    
         
            -
                  assert ex.message =~ /port not specified/
         
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
                  default_db = redis._client.db.to_i
         
     | 
| 
       153 
     | 
    
         
            -
                  default_timeout = redis._client.timeout.to_i
         
     | 
| 
       154 
     | 
    
         
            -
             
     | 
| 
       155 
     | 
    
         
            -
                  # Test defaults
         
     | 
| 
       156 
     | 
    
         
            -
                  actual = redis.migrate("foo", options)
         
     | 
| 
       157 
     | 
    
         
            -
                  expected = ["127.0.0.1", "1234", "foo", default_db.to_s, default_timeout.to_s]
         
     | 
| 
       158 
     | 
    
         
            -
                  assert_equal expected, actual
         
     | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
       160 
     | 
    
         
            -
                  # Test db override
         
     | 
| 
       161 
     | 
    
         
            -
                  actual = redis.migrate("foo", options.merge(:db => default_db + 1))
         
     | 
| 
       162 
     | 
    
         
            -
                  expected = ["127.0.0.1", "1234", "foo", (default_db + 1).to_s, default_timeout.to_s]
         
     | 
| 
       163 
     | 
    
         
            -
                  assert_equal expected, actual
         
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
                  # Test timeout override
         
     | 
| 
       166 
     | 
    
         
            -
                  actual = redis.migrate("foo", options.merge(:timeout => default_timeout + 1))
         
     | 
| 
       167 
     | 
    
         
            -
                  expected = ["127.0.0.1", "1234", "foo", default_db.to_s, (default_timeout + 1).to_s]
         
     | 
| 
       168 
     | 
    
         
            -
                  assert_equal expected, actual
         
     | 
| 
       169 
     | 
    
         
            -
                end
         
     | 
| 
       170 
     | 
    
         
            -
              end
         
     | 
| 
       171 
     | 
    
         
            -
            end
         
     |