redis 3.2.2 → 4.4.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 +5 -5
- data/CHANGELOG.md +175 -13
- data/README.md +223 -76
- data/lib/redis.rb +1360 -445
- data/lib/redis/client.rb +183 -103
- data/lib/redis/cluster.rb +291 -0
- 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 +108 -0
- data/lib/redis/cluster/node_key.rb +31 -0
- data/lib/redis/cluster/node_loader.rb +37 -0
- data/lib/redis/cluster/option.rb +93 -0
- data/lib/redis/cluster/slot.rb +86 -0
- data/lib/redis/cluster/slot_loader.rb +49 -0
- data/lib/redis/connection.rb +4 -2
- data/lib/redis/connection/command_helper.rb +5 -10
- data/lib/redis/connection/hiredis.rb +9 -6
- data/lib/redis/connection/registry.rb +2 -1
- data/lib/redis/connection/ruby.rb +168 -63
- data/lib/redis/connection/synchrony.rb +29 -7
- data/lib/redis/distributed.rb +156 -74
- data/lib/redis/errors.rb +48 -0
- data/lib/redis/hash_ring.rb +30 -73
- data/lib/redis/pipeline.rb +55 -15
- data/lib/redis/subscribe.rb +20 -13
- data/lib/redis/version.rb +3 -1
- metadata +41 -170
- data/.gitignore +0 -16
- data/.travis.yml +0 -59
- data/.travis/Gemfile +0 -11
- data/.yardopts +0 -3
- data/Gemfile +0 -4
- data/Rakefile +0 -87
- 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/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.rb +0 -41
- data/examples/sentinel/sentinel.conf +0 -9
- data/examples/sentinel/start +0 -49
- data/examples/sets.rb +0 -36
- data/examples/unicorn/config.ru +0 -3
- data/examples/unicorn/unicorn.rb +0 -20
- data/redis.gemspec +0 -44
- data/test/bitpos_test.rb +0 -69
- data/test/blocking_commands_test.rb +0 -42
- data/test/command_map_test.rb +0 -30
- data/test/commands_on_hashes_test.rb +0 -21
- data/test/commands_on_hyper_log_log_test.rb +0 -21
- data/test/commands_on_lists_test.rb +0 -20
- data/test/commands_on_sets_test.rb +0 -77
- data/test/commands_on_sorted_sets_test.rb +0 -137
- data/test/commands_on_strings_test.rb +0 -101
- data/test/commands_on_value_types_test.rb +0 -133
- data/test/connection_handling_test.rb +0 -250
- data/test/db/.gitkeep +0 -0
- data/test/distributed_blocking_commands_test.rb +0 -46
- data/test/distributed_commands_on_hashes_test.rb +0 -10
- data/test/distributed_commands_on_hyper_log_log_test.rb +0 -33
- data/test/distributed_commands_on_lists_test.rb +0 -22
- data/test/distributed_commands_on_sets_test.rb +0 -83
- data/test/distributed_commands_on_sorted_sets_test.rb +0 -18
- data/test/distributed_commands_on_strings_test.rb +0 -59
- data/test/distributed_commands_on_value_types_test.rb +0 -95
- data/test/distributed_commands_requiring_clustering_test.rb +0 -164
- data/test/distributed_connection_handling_test.rb +0 -23
- data/test/distributed_internals_test.rb +0 -79
- data/test/distributed_key_tags_test.rb +0 -52
- data/test/distributed_persistence_control_commands_test.rb +0 -26
- data/test/distributed_publish_subscribe_test.rb +0 -92
- data/test/distributed_remote_server_control_commands_test.rb +0 -66
- data/test/distributed_scripting_test.rb +0 -102
- data/test/distributed_sorting_test.rb +0 -20
- data/test/distributed_test.rb +0 -58
- data/test/distributed_transactions_test.rb +0 -32
- data/test/encoding_test.rb +0 -18
- data/test/error_replies_test.rb +0 -59
- data/test/fork_safety_test.rb +0 -65
- data/test/helper.rb +0 -232
- data/test/helper_test.rb +0 -24
- data/test/internals_test.rb +0 -437
- 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 -125
- data/test/lint/sorted_sets.rb +0 -316
- data/test/lint/strings.rb +0 -260
- data/test/lint/value_types.rb +0 -122
- data/test/persistence_control_commands_test.rb +0 -26
- data/test/pipelining_commands_test.rb +0 -242
- data/test/publish_subscribe_test.rb +0 -254
- data/test/remote_server_control_commands_test.rb +0 -118
- data/test/scanning_test.rb +0 -413
- data/test/scripting_test.rb +0 -78
- data/test/sentinel_command_test.rb +0 -80
- data/test/sentinel_test.rb +0 -255
- data/test/sorting_test.rb +0 -59
- 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 -119
- data/test/support/wire/synchrony.rb +0 -24
- data/test/support/wire/thread.rb +0 -5
- data/test/synchrony_driver.rb +0 -88
- data/test/test.conf.erb +0 -9
- data/test/thread_safety_test.rb +0 -32
- data/test/transactions_test.rb +0 -264
- data/test/unknown_commands_test.rb +0 -14
- data/test/url_param_test.rb +0 -138
| @@ -1,150 +0,0 @@ | |
| 1 | 
            -
            module Lint
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              module BlockingCommands
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def setup
         | 
| 6 | 
            -
                  super
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  r.rpush("{zap}foo", "s1")
         | 
| 9 | 
            -
                  r.rpush("{zap}foo", "s2")
         | 
| 10 | 
            -
                  r.rpush("{zap}bar", "s1")
         | 
| 11 | 
            -
                  r.rpush("{zap}bar", "s2")
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                def to_protocol(obj)
         | 
| 15 | 
            -
                  case obj
         | 
| 16 | 
            -
                  when String
         | 
| 17 | 
            -
                    "$#{obj.length}\r\n#{obj}\r\n"
         | 
| 18 | 
            -
                  when Array
         | 
| 19 | 
            -
                    "*#{obj.length}\r\n" + obj.map { |e| to_protocol(e) }.join
         | 
| 20 | 
            -
                  else
         | 
| 21 | 
            -
                    fail
         | 
| 22 | 
            -
                  end
         | 
| 23 | 
            -
                end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                def mock(options = {}, &blk)
         | 
| 26 | 
            -
                  commands = {
         | 
| 27 | 
            -
                    :blpop => lambda do |*args|
         | 
| 28 | 
            -
                      sleep options[:delay] if options.has_key?(:delay)
         | 
| 29 | 
            -
                      to_protocol([args.first, args.last])
         | 
| 30 | 
            -
                    end,
         | 
| 31 | 
            -
                    :brpop => lambda do |*args|
         | 
| 32 | 
            -
                      sleep options[:delay] if options.has_key?(:delay)
         | 
| 33 | 
            -
                      to_protocol([args.first, args.last])
         | 
| 34 | 
            -
                    end,
         | 
| 35 | 
            -
                    :brpoplpush => lambda do |*args|
         | 
| 36 | 
            -
                      sleep options[:delay] if options.has_key?(:delay)
         | 
| 37 | 
            -
                      to_protocol(args.last)
         | 
| 38 | 
            -
                    end,
         | 
| 39 | 
            -
                  }
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                  redis_mock(commands, &blk)
         | 
| 42 | 
            -
                end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                def test_blpop
         | 
| 45 | 
            -
                  assert_equal ["{zap}foo", "s1"], r.blpop("{zap}foo")
         | 
| 46 | 
            -
                  assert_equal ["{zap}foo", "s2"], r.blpop(["{zap}foo"])
         | 
| 47 | 
            -
                  assert_equal ["{zap}bar", "s1"], r.blpop(["{zap}bar", "{zap}foo"])
         | 
| 48 | 
            -
                  assert_equal ["{zap}bar", "s2"], r.blpop(["{zap}foo", "{zap}bar"])
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                def test_blpop_timeout
         | 
| 52 | 
            -
                  mock do |r|
         | 
| 53 | 
            -
                    assert_equal ["{zap}foo", "0"], r.blpop("{zap}foo")
         | 
| 54 | 
            -
                    assert_equal ["{zap}foo", "1"], r.blpop("{zap}foo", :timeout => 1)
         | 
| 55 | 
            -
                  end
         | 
| 56 | 
            -
                end
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                def test_blpop_with_old_prototype
         | 
| 59 | 
            -
                  assert_equal ["{zap}foo", "s1"], r.blpop("{zap}foo", 0)
         | 
| 60 | 
            -
                  assert_equal ["{zap}foo", "s2"], r.blpop("{zap}foo", 0)
         | 
| 61 | 
            -
                  assert_equal ["{zap}bar", "s1"], r.blpop("{zap}bar", "{zap}foo", 0)
         | 
| 62 | 
            -
                  assert_equal ["{zap}bar", "s2"], r.blpop("{zap}foo", "{zap}bar", 0)
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                def test_blpop_timeout_with_old_prototype
         | 
| 66 | 
            -
                  mock do |r|
         | 
| 67 | 
            -
                    assert_equal ["{zap}foo", "0"], r.blpop("{zap}foo", 0)
         | 
| 68 | 
            -
                    assert_equal ["{zap}foo", "1"], r.blpop("{zap}foo", 1)
         | 
| 69 | 
            -
                  end
         | 
| 70 | 
            -
                end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                def test_brpop
         | 
| 73 | 
            -
                  assert_equal ["{zap}foo", "s2"], r.brpop("{zap}foo")
         | 
| 74 | 
            -
                  assert_equal ["{zap}foo", "s1"], r.brpop(["{zap}foo"])
         | 
| 75 | 
            -
                  assert_equal ["{zap}bar", "s2"], r.brpop(["{zap}bar", "{zap}foo"])
         | 
| 76 | 
            -
                  assert_equal ["{zap}bar", "s1"], r.brpop(["{zap}foo", "{zap}bar"])
         | 
| 77 | 
            -
                end
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                def test_brpop_timeout
         | 
| 80 | 
            -
                  mock do |r|
         | 
| 81 | 
            -
                    assert_equal ["{zap}foo", "0"], r.brpop("{zap}foo")
         | 
| 82 | 
            -
                    assert_equal ["{zap}foo", "1"], r.brpop("{zap}foo", :timeout => 1)
         | 
| 83 | 
            -
                  end
         | 
| 84 | 
            -
                end
         | 
| 85 | 
            -
             | 
| 86 | 
            -
                def test_brpop_with_old_prototype
         | 
| 87 | 
            -
                  assert_equal ["{zap}foo", "s2"], r.brpop("{zap}foo", 0)
         | 
| 88 | 
            -
                  assert_equal ["{zap}foo", "s1"], r.brpop("{zap}foo", 0)
         | 
| 89 | 
            -
                  assert_equal ["{zap}bar", "s2"], r.brpop("{zap}bar", "{zap}foo", 0)
         | 
| 90 | 
            -
                  assert_equal ["{zap}bar", "s1"], r.brpop("{zap}foo", "{zap}bar", 0)
         | 
| 91 | 
            -
                end
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                def test_brpop_timeout_with_old_prototype
         | 
| 94 | 
            -
                  mock do |r|
         | 
| 95 | 
            -
                    assert_equal ["{zap}foo", "0"], r.brpop("{zap}foo", 0)
         | 
| 96 | 
            -
                    assert_equal ["{zap}foo", "1"], r.brpop("{zap}foo", 1)
         | 
| 97 | 
            -
                  end
         | 
| 98 | 
            -
                end
         | 
| 99 | 
            -
             | 
| 100 | 
            -
                def test_brpoplpush
         | 
| 101 | 
            -
                  assert_equal "s2", r.brpoplpush("{zap}foo", "{zap}qux")
         | 
| 102 | 
            -
                  assert_equal ["s2"], r.lrange("{zap}qux", 0, -1)
         | 
| 103 | 
            -
                end
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                def test_brpoplpush_timeout
         | 
| 106 | 
            -
                  mock do |r|
         | 
| 107 | 
            -
                    assert_equal "0", r.brpoplpush("{zap}foo", "{zap}bar")
         | 
| 108 | 
            -
                    assert_equal "1", r.brpoplpush("{zap}foo", "{zap}bar", :timeout => 1)
         | 
| 109 | 
            -
                  end
         | 
| 110 | 
            -
                end
         | 
| 111 | 
            -
             | 
| 112 | 
            -
                def test_brpoplpush_with_old_prototype
         | 
| 113 | 
            -
                  assert_equal "s2", r.brpoplpush("{zap}foo", "{zap}qux", 0)
         | 
| 114 | 
            -
                  assert_equal ["s2"], r.lrange("{zap}qux", 0, -1)
         | 
| 115 | 
            -
                end
         | 
| 116 | 
            -
             | 
| 117 | 
            -
                def test_brpoplpush_timeout_with_old_prototype
         | 
| 118 | 
            -
                  mock do |r|
         | 
| 119 | 
            -
                    assert_equal "0", r.brpoplpush("{zap}foo", "{zap}bar", 0)
         | 
| 120 | 
            -
                    assert_equal "1", r.brpoplpush("{zap}foo", "{zap}bar", 1)
         | 
| 121 | 
            -
                  end
         | 
| 122 | 
            -
                end
         | 
| 123 | 
            -
             | 
| 124 | 
            -
                driver(:ruby, :hiredis) do
         | 
| 125 | 
            -
                  def test_blpop_socket_timeout
         | 
| 126 | 
            -
                    mock(:delay => 1 + OPTIONS[:timeout] * 2) do |r|
         | 
| 127 | 
            -
                      assert_raises(Redis::TimeoutError) do
         | 
| 128 | 
            -
                        r.blpop("{zap}foo", :timeout => 1)
         | 
| 129 | 
            -
                      end
         | 
| 130 | 
            -
                    end
         | 
| 131 | 
            -
                  end
         | 
| 132 | 
            -
             | 
| 133 | 
            -
                  def test_brpop_socket_timeout
         | 
| 134 | 
            -
                    mock(:delay => 1 + OPTIONS[:timeout] * 2) do |r|
         | 
| 135 | 
            -
                      assert_raises(Redis::TimeoutError) do
         | 
| 136 | 
            -
                        r.brpop("{zap}foo", :timeout => 1)
         | 
| 137 | 
            -
                      end
         | 
| 138 | 
            -
                    end
         | 
| 139 | 
            -
                  end
         | 
| 140 | 
            -
             | 
| 141 | 
            -
                  def test_brpoplpush_socket_timeout
         | 
| 142 | 
            -
                    mock(:delay => 1 + OPTIONS[:timeout] * 2) do |r|
         | 
| 143 | 
            -
                      assert_raises(Redis::TimeoutError) do
         | 
| 144 | 
            -
                        r.brpoplpush("{zap}foo", "{zap}bar", :timeout => 1)
         | 
| 145 | 
            -
                      end
         | 
| 146 | 
            -
                    end
         | 
| 147 | 
            -
                  end
         | 
| 148 | 
            -
                end
         | 
| 149 | 
            -
              end
         | 
| 150 | 
            -
            end
         | 
    
        data/test/lint/hashes.rb
    DELETED
    
    | @@ -1,162 +0,0 @@ | |
| 1 | 
            -
            module Lint
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              module Hashes
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def test_hset_and_hget
         | 
| 6 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  assert_equal "s1", r.hget("foo", "f1")
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                def test_hsetnx
         | 
| 12 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 13 | 
            -
                  r.hsetnx("foo", "f1", "s2")
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                  assert_equal "s1", r.hget("foo", "f1")
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                  r.del("foo")
         | 
| 18 | 
            -
                  r.hsetnx("foo", "f1", "s2")
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                  assert_equal "s2", r.hget("foo", "f1")
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                def test_hdel
         | 
| 24 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  assert_equal "s1", r.hget("foo", "f1")
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                  assert_equal 1, r.hdel("foo", "f1")
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                  assert_equal nil, r.hget("foo", "f1")
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                def test_variadic_hdel
         | 
| 34 | 
            -
                  target_version "2.3.9" do
         | 
| 35 | 
            -
                    r.hset("foo", "f1", "s1")
         | 
| 36 | 
            -
                    r.hset("foo", "f2", "s2")
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                    assert_equal "s1", r.hget("foo", "f1")
         | 
| 39 | 
            -
                    assert_equal "s2", r.hget("foo", "f2")
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                    assert_equal 2, r.hdel("foo", ["f1", "f2"])
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                    assert_equal nil, r.hget("foo", "f1")
         | 
| 44 | 
            -
                    assert_equal nil, r.hget("foo", "f2")
         | 
| 45 | 
            -
                  end
         | 
| 46 | 
            -
                end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                def test_hexists
         | 
| 49 | 
            -
                  assert_equal false, r.hexists("foo", "f1")
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                  assert r.hexists("foo", "f1")
         | 
| 54 | 
            -
                end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                def test_hlen
         | 
| 57 | 
            -
                  assert_equal 0, r.hlen("foo")
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 60 | 
            -
             | 
| 61 | 
            -
                  assert_equal 1, r.hlen("foo")
         | 
| 62 | 
            -
             | 
| 63 | 
            -
                  r.hset("foo", "f2", "s2")
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                  assert_equal 2, r.hlen("foo")
         | 
| 66 | 
            -
                end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                def test_hkeys
         | 
| 69 | 
            -
                  assert_equal [], r.hkeys("foo")
         | 
| 70 | 
            -
             | 
| 71 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 72 | 
            -
                  r.hset("foo", "f2", "s2")
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                  assert_equal ["f1", "f2"], r.hkeys("foo")
         | 
| 75 | 
            -
                end
         | 
| 76 | 
            -
             | 
| 77 | 
            -
                def test_hvals
         | 
| 78 | 
            -
                  assert_equal [], r.hvals("foo")
         | 
| 79 | 
            -
             | 
| 80 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 81 | 
            -
                  r.hset("foo", "f2", "s2")
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                  assert_equal ["s1", "s2"], r.hvals("foo")
         | 
| 84 | 
            -
                end
         | 
| 85 | 
            -
             | 
| 86 | 
            -
                def test_hgetall
         | 
| 87 | 
            -
                  assert({} == r.hgetall("foo"))
         | 
| 88 | 
            -
             | 
| 89 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 90 | 
            -
                  r.hset("foo", "f2", "s2")
         | 
| 91 | 
            -
             | 
| 92 | 
            -
                  assert({"f1" => "s1", "f2" => "s2"} == r.hgetall("foo"))
         | 
| 93 | 
            -
                end
         | 
| 94 | 
            -
             | 
| 95 | 
            -
                def test_hmset
         | 
| 96 | 
            -
                  r.hmset("hash", "foo1", "bar1", "foo2", "bar2")
         | 
| 97 | 
            -
             | 
| 98 | 
            -
                  assert_equal "bar1", r.hget("hash", "foo1")
         | 
| 99 | 
            -
                  assert_equal "bar2", r.hget("hash", "foo2")
         | 
| 100 | 
            -
                end
         | 
| 101 | 
            -
             | 
| 102 | 
            -
                def test_hmset_with_invalid_arguments
         | 
| 103 | 
            -
                  assert_raise(Redis::CommandError) do
         | 
| 104 | 
            -
                    r.hmset("hash", "foo1", "bar1", "foo2", "bar2", "foo3")
         | 
| 105 | 
            -
                  end
         | 
| 106 | 
            -
                end
         | 
| 107 | 
            -
             | 
| 108 | 
            -
                def test_mapped_hmset
         | 
| 109 | 
            -
                  r.mapped_hmset("foo", :f1 => "s1", :f2 => "s2")
         | 
| 110 | 
            -
             | 
| 111 | 
            -
                  assert_equal "s1", r.hget("foo", "f1")
         | 
| 112 | 
            -
                  assert_equal "s2", r.hget("foo", "f2")
         | 
| 113 | 
            -
                end
         | 
| 114 | 
            -
             | 
| 115 | 
            -
                def test_hmget
         | 
| 116 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 117 | 
            -
                  r.hset("foo", "f2", "s2")
         | 
| 118 | 
            -
                  r.hset("foo", "f3", "s3")
         | 
| 119 | 
            -
             | 
| 120 | 
            -
                  assert_equal ["s2", "s3"], r.hmget("foo", "f2", "f3")
         | 
| 121 | 
            -
                end
         | 
| 122 | 
            -
             | 
| 123 | 
            -
                def test_hmget_mapped
         | 
| 124 | 
            -
                  r.hset("foo", "f1", "s1")
         | 
| 125 | 
            -
                  r.hset("foo", "f2", "s2")
         | 
| 126 | 
            -
                  r.hset("foo", "f3", "s3")
         | 
| 127 | 
            -
             | 
| 128 | 
            -
                  assert({"f1" => "s1"} == r.mapped_hmget("foo", "f1"))
         | 
| 129 | 
            -
                  assert({"f1" => "s1", "f2" => "s2"} == r.mapped_hmget("foo", "f1", "f2"))
         | 
| 130 | 
            -
                end
         | 
| 131 | 
            -
             | 
| 132 | 
            -
                def test_hincrby
         | 
| 133 | 
            -
                  r.hincrby("foo", "f1", 1)
         | 
| 134 | 
            -
             | 
| 135 | 
            -
                  assert_equal "1", r.hget("foo", "f1")
         | 
| 136 | 
            -
             | 
| 137 | 
            -
                  r.hincrby("foo", "f1", 2)
         | 
| 138 | 
            -
             | 
| 139 | 
            -
                  assert_equal "3", r.hget("foo", "f1")
         | 
| 140 | 
            -
             | 
| 141 | 
            -
                  r.hincrby("foo", "f1", -1)
         | 
| 142 | 
            -
             | 
| 143 | 
            -
                  assert_equal "2", r.hget("foo", "f1")
         | 
| 144 | 
            -
                end
         | 
| 145 | 
            -
             | 
| 146 | 
            -
                def test_hincrbyfloat
         | 
| 147 | 
            -
                  target_version "2.5.4" do
         | 
| 148 | 
            -
                    r.hincrbyfloat("foo", "f1", 1.23)
         | 
| 149 | 
            -
             | 
| 150 | 
            -
                    assert_equal "1.23", r.hget("foo", "f1")
         | 
| 151 | 
            -
             | 
| 152 | 
            -
                    r.hincrbyfloat("foo", "f1", 0.77)
         | 
| 153 | 
            -
             | 
| 154 | 
            -
                    assert_equal "2", r.hget("foo", "f1")
         | 
| 155 | 
            -
             | 
| 156 | 
            -
                    r.hincrbyfloat("foo", "f1", -0.1)
         | 
| 157 | 
            -
             | 
| 158 | 
            -
                    assert_equal "1.9", r.hget("foo", "f1")
         | 
| 159 | 
            -
                  end
         | 
| 160 | 
            -
                end
         | 
| 161 | 
            -
              end
         | 
| 162 | 
            -
            end
         | 
    
        data/test/lint/hyper_log_log.rb
    DELETED
    
    | @@ -1,60 +0,0 @@ | |
| 1 | 
            -
            module Lint
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              module HyperLogLog
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def test_pfadd
         | 
| 6 | 
            -
                  target_version "2.8.9" do
         | 
| 7 | 
            -
                    assert_equal true, r.pfadd("foo", "s1")
         | 
| 8 | 
            -
                    assert_equal true, r.pfadd("foo", "s2")
         | 
| 9 | 
            -
                    assert_equal false, r.pfadd("foo", "s1")
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                    assert_equal 2, r.pfcount("foo")
         | 
| 12 | 
            -
                  end
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def test_variadic_pfadd
         | 
| 16 | 
            -
                  target_version "2.8.9" do
         | 
| 17 | 
            -
                    assert_equal true, r.pfadd("foo", ["s1", "s2"])
         | 
| 18 | 
            -
                    assert_equal true, r.pfadd("foo", ["s1", "s2", "s3"])
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                    assert_equal 3, r.pfcount("foo")
         | 
| 21 | 
            -
                  end
         | 
| 22 | 
            -
                end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                def test_pfcount
         | 
| 25 | 
            -
                  target_version "2.8.9" do
         | 
| 26 | 
            -
                    assert_equal 0, r.pfcount("foo")
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                    assert_equal true, r.pfadd("foo", "s1")
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                    assert_equal 1, r.pfcount("foo")
         | 
| 31 | 
            -
                  end
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                def test_variadic_pfcount
         | 
| 35 | 
            -
                  target_version "2.8.9" do
         | 
| 36 | 
            -
                    assert_equal 0, r.pfcount(["{1}foo", "{1}bar"])
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                    assert_equal true, r.pfadd("{1}foo", "s1")
         | 
| 39 | 
            -
                    assert_equal true, r.pfadd("{1}bar", "s1")
         | 
| 40 | 
            -
                    assert_equal true, r.pfadd("{1}bar", "s2")
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                    assert_equal 2, r.pfcount("{1}foo", "{1}bar")
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
                end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                def test_variadic_pfcount_expanded
         | 
| 47 | 
            -
                  target_version "2.8.9" do
         | 
| 48 | 
            -
                    assert_equal 0, r.pfcount("{1}foo", "{1}bar")
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                    assert_equal true, r.pfadd("{1}foo", "s1")
         | 
| 51 | 
            -
                    assert_equal true, r.pfadd("{1}bar", "s1")
         | 
| 52 | 
            -
                    assert_equal true, r.pfadd("{1}bar", "s2")
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                    assert_equal 2, r.pfcount("{1}foo", "{1}bar")
         | 
| 55 | 
            -
                  end
         | 
| 56 | 
            -
                end
         | 
| 57 | 
            -
             | 
| 58 | 
            -
              end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            end
         | 
    
        data/test/lint/lists.rb
    DELETED
    
    | @@ -1,143 +0,0 @@ | |
| 1 | 
            -
            module Lint
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              module Lists
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def test_lpush
         | 
| 6 | 
            -
                  r.lpush "foo", "s1"
         | 
| 7 | 
            -
                  r.lpush "foo", "s2"
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  assert_equal 2, r.llen("foo")
         | 
| 10 | 
            -
                  assert_equal "s2", r.lpop("foo")
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                def test_variadic_lpush
         | 
| 14 | 
            -
                  target_version "2.3.9" do # 2.4-rc6
         | 
| 15 | 
            -
                    assert_equal 3, r.lpush("foo", ["s1", "s2", "s3"])
         | 
| 16 | 
            -
                    assert_equal 3, r.llen("foo")
         | 
| 17 | 
            -
                    assert_equal "s3", r.lpop("foo")
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                def test_lpushx
         | 
| 22 | 
            -
                  r.lpushx "foo", "s1"
         | 
| 23 | 
            -
                  r.lpush "foo", "s2"
         | 
| 24 | 
            -
                  r.lpushx "foo", "s3"
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  assert_equal 2, r.llen("foo")
         | 
| 27 | 
            -
                  assert_equal ["s3", "s2"], r.lrange("foo", 0, -1)
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                def test_rpush
         | 
| 31 | 
            -
                  r.rpush "foo", "s1"
         | 
| 32 | 
            -
                  r.rpush "foo", "s2"
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                  assert_equal 2, r.llen("foo")
         | 
| 35 | 
            -
                  assert_equal "s2", r.rpop("foo")
         | 
| 36 | 
            -
                end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                def test_variadic_rpush
         | 
| 39 | 
            -
                  target_version "2.3.9" do # 2.4-rc6
         | 
| 40 | 
            -
                    assert_equal 3, r.rpush("foo", ["s1", "s2", "s3"])
         | 
| 41 | 
            -
                    assert_equal 3, r.llen("foo")
         | 
| 42 | 
            -
                    assert_equal "s3", r.rpop("foo")
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
                end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                def test_rpushx
         | 
| 47 | 
            -
                  r.rpushx "foo", "s1"
         | 
| 48 | 
            -
                  r.rpush "foo", "s2"
         | 
| 49 | 
            -
                  r.rpushx "foo", "s3"
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                  assert_equal 2, r.llen("foo")
         | 
| 52 | 
            -
                  assert_equal ["s2", "s3"], r.lrange("foo", 0, -1)
         | 
| 53 | 
            -
                end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                def test_llen
         | 
| 56 | 
            -
                  r.rpush "foo", "s1"
         | 
| 57 | 
            -
                  r.rpush "foo", "s2"
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                  assert_equal 2, r.llen("foo")
         | 
| 60 | 
            -
                end
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                def test_lrange
         | 
| 63 | 
            -
                  r.rpush "foo", "s1"
         | 
| 64 | 
            -
                  r.rpush "foo", "s2"
         | 
| 65 | 
            -
                  r.rpush "foo", "s3"
         | 
| 66 | 
            -
             | 
| 67 | 
            -
                  assert_equal ["s2", "s3"], r.lrange("foo", 1, -1)
         | 
| 68 | 
            -
                  assert_equal ["s1", "s2"], r.lrange("foo", 0, 1)
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                  assert_equal [], r.lrange("bar", 0, -1)
         | 
| 71 | 
            -
                end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                def test_ltrim
         | 
| 74 | 
            -
                  r.rpush "foo", "s1"
         | 
| 75 | 
            -
                  r.rpush "foo", "s2"
         | 
| 76 | 
            -
                  r.rpush "foo", "s3"
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                  r.ltrim "foo", 0, 1
         | 
| 79 | 
            -
             | 
| 80 | 
            -
                  assert_equal 2, r.llen("foo")
         | 
| 81 | 
            -
                  assert_equal ["s1", "s2"], r.lrange("foo", 0, -1)
         | 
| 82 | 
            -
                end
         | 
| 83 | 
            -
             | 
| 84 | 
            -
                def test_lindex
         | 
| 85 | 
            -
                  r.rpush "foo", "s1"
         | 
| 86 | 
            -
                  r.rpush "foo", "s2"
         | 
| 87 | 
            -
             | 
| 88 | 
            -
                  assert_equal "s1", r.lindex("foo", 0)
         | 
| 89 | 
            -
                  assert_equal "s2", r.lindex("foo", 1)
         | 
| 90 | 
            -
                end
         | 
| 91 | 
            -
             | 
| 92 | 
            -
                def test_lset
         | 
| 93 | 
            -
                  r.rpush "foo", "s1"
         | 
| 94 | 
            -
                  r.rpush "foo", "s2"
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                  assert_equal "s2", r.lindex("foo", 1)
         | 
| 97 | 
            -
                  assert r.lset("foo", 1, "s3")
         | 
| 98 | 
            -
                  assert_equal "s3", r.lindex("foo", 1)
         | 
| 99 | 
            -
             | 
| 100 | 
            -
                  assert_raise Redis::CommandError do
         | 
| 101 | 
            -
                    r.lset("foo", 4, "s3")
         | 
| 102 | 
            -
                  end
         | 
| 103 | 
            -
                end
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                def test_lrem
         | 
| 106 | 
            -
                  r.rpush "foo", "s1"
         | 
| 107 | 
            -
                  r.rpush "foo", "s2"
         | 
| 108 | 
            -
             | 
| 109 | 
            -
                  assert_equal 1, r.lrem("foo", 1, "s1")
         | 
| 110 | 
            -
                  assert_equal ["s2"], r.lrange("foo", 0, -1)
         | 
| 111 | 
            -
                end
         | 
| 112 | 
            -
             | 
| 113 | 
            -
                def test_lpop
         | 
| 114 | 
            -
                  r.rpush "foo", "s1"
         | 
| 115 | 
            -
                  r.rpush "foo", "s2"
         | 
| 116 | 
            -
             | 
| 117 | 
            -
                  assert_equal 2, r.llen("foo")
         | 
| 118 | 
            -
                  assert_equal "s1", r.lpop("foo")
         | 
| 119 | 
            -
                  assert_equal 1, r.llen("foo")
         | 
| 120 | 
            -
                end
         | 
| 121 | 
            -
             | 
| 122 | 
            -
                def test_rpop
         | 
| 123 | 
            -
                  r.rpush "foo", "s1"
         | 
| 124 | 
            -
                  r.rpush "foo", "s2"
         | 
| 125 | 
            -
             | 
| 126 | 
            -
                  assert_equal 2, r.llen("foo")
         | 
| 127 | 
            -
                  assert_equal "s2", r.rpop("foo")
         | 
| 128 | 
            -
                  assert_equal 1, r.llen("foo")
         | 
| 129 | 
            -
                end
         | 
| 130 | 
            -
             | 
| 131 | 
            -
                def test_linsert
         | 
| 132 | 
            -
                  r.rpush "foo", "s1"
         | 
| 133 | 
            -
                  r.rpush "foo", "s3"
         | 
| 134 | 
            -
                  r.linsert "foo", :before, "s3", "s2"
         | 
| 135 | 
            -
             | 
| 136 | 
            -
                  assert_equal ["s1", "s2", "s3"], r.lrange("foo", 0, -1)
         | 
| 137 | 
            -
             | 
| 138 | 
            -
                  assert_raise(Redis::CommandError) do
         | 
| 139 | 
            -
                    r.linsert "foo", :anywhere, "s3", "s2"
         | 
| 140 | 
            -
                  end
         | 
| 141 | 
            -
                end
         | 
| 142 | 
            -
              end
         | 
| 143 | 
            -
            end
         |