redis 3.0.5 → 3.0.6
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 +8 -8
- data/.gitignore +9 -8
- data/.travis.yml +10 -8
- data/CHANGELOG.md +4 -0
- data/Rakefile +21 -10
- data/lib/redis.rb +229 -72
- data/lib/redis/version.rb +1 -1
- data/test/blocking_commands_test.rb +1 -1
- data/test/command_map_test.rb +1 -1
- data/test/commands_on_hashes_test.rb +1 -1
- data/test/commands_on_lists_test.rb +1 -1
- data/test/commands_on_sets_test.rb +1 -1
- data/test/commands_on_sorted_sets_test.rb +1 -1
- data/test/commands_on_strings_test.rb +14 -14
- data/test/commands_on_value_types_test.rb +1 -1
- data/test/connection_handling_test.rb +1 -1
- data/test/distributed_blocking_commands_test.rb +1 -1
- data/test/distributed_commands_on_hashes_test.rb +1 -1
- data/test/distributed_commands_on_lists_test.rb +1 -1
- data/test/distributed_commands_on_sets_test.rb +1 -1
- data/test/distributed_commands_on_sorted_sets_test.rb +1 -1
- data/test/distributed_commands_on_strings_test.rb +7 -7
- data/test/distributed_commands_on_value_types_test.rb +1 -1
- data/test/distributed_commands_requiring_clustering_test.rb +14 -14
- data/test/distributed_connection_handling_test.rb +1 -1
- data/test/distributed_internals_test.rb +1 -1
- data/test/distributed_key_tags_test.rb +1 -1
- data/test/distributed_persistence_control_commands_test.rb +1 -1
- data/test/distributed_publish_subscribe_test.rb +1 -1
- data/test/distributed_remote_server_control_commands_test.rb +15 -15
- data/test/distributed_scripting_test.rb +57 -57
- data/test/distributed_sorting_test.rb +1 -1
- data/test/distributed_test.rb +1 -1
- data/test/distributed_transactions_test.rb +1 -1
- data/test/encoding_test.rb +1 -1
- data/test/error_replies_test.rb +1 -1
- data/test/helper.rb +10 -1
- data/test/helper_test.rb +1 -1
- data/test/internals_test.rb +20 -9
- data/test/lint/hashes.rb +17 -17
- data/test/lint/lists.rb +10 -10
- data/test/lint/sets.rb +14 -14
- data/test/lint/sorted_sets.rb +30 -30
- data/test/lint/strings.rb +45 -45
- data/test/lint/value_types.rb +32 -32
- data/test/persistence_control_commands_test.rb +1 -1
- data/test/pipelining_commands_test.rb +1 -1
- data/test/publish_subscribe_test.rb +1 -1
- data/test/remote_server_control_commands_test.rb +7 -7
- data/test/scanning_test.rb +413 -0
- data/test/scripting_test.rb +45 -45
- data/test/sorting_test.rb +1 -1
- data/test/thread_safety_test.rb +1 -1
- data/test/transactions_test.rb +1 -1
- data/test/unknown_commands_test.rb +1 -1
- data/test/url_param_test.rb +1 -1
- metadata +6 -4
- data/test/db/.gitignore +0 -1
    
        data/lib/redis/version.rb
    CHANGED
    
    
    
        data/test/command_map_test.rb
    CHANGED
    
    
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # encoding: UTF-8
         | 
| 2 2 |  | 
| 3 | 
            -
            require "helper"
         | 
| 3 | 
            +
            require File.expand_path("helper", File.dirname(__FILE__))
         | 
| 4 4 | 
             
            require "lint/strings"
         | 
| 5 5 |  | 
| 6 6 | 
             
            class TestCommandsOnStrings < Test::Unit::TestCase
         | 
| @@ -82,18 +82,18 @@ class TestCommandsOnStrings < Test::Unit::TestCase | |
| 82 82 | 
             
              end
         | 
| 83 83 |  | 
| 84 84 | 
             
              def test_bitop
         | 
| 85 | 
            -
                 | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
                 | 
| 85 | 
            +
                target_version "2.5.10" do
         | 
| 86 | 
            +
                  r.set("foo", "a")
         | 
| 87 | 
            +
                  r.set("bar", "b")
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                  r.bitop(:and, "foo&bar", "foo", "bar")
         | 
| 90 | 
            +
                  assert_equal "\x60", r.get("foo&bar")
         | 
| 91 | 
            +
                  r.bitop(:or, "foo|bar", "foo", "bar")
         | 
| 92 | 
            +
                  assert_equal "\x63", r.get("foo|bar")
         | 
| 93 | 
            +
                  r.bitop(:xor, "foo^bar", "foo", "bar")
         | 
| 94 | 
            +
                  assert_equal "\x03", r.get("foo^bar")
         | 
| 95 | 
            +
                  r.bitop(:not, "~foo", "foo")
         | 
| 96 | 
            +
                  assert_equal "\x9E", r.get("~foo")
         | 
| 97 | 
            +
                end
         | 
| 98 98 | 
             
              end
         | 
| 99 99 | 
             
            end
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # encoding: UTF-8
         | 
| 2 2 |  | 
| 3 | 
            -
            require "helper"
         | 
| 3 | 
            +
            require File.expand_path("helper", File.dirname(__FILE__))
         | 
| 4 4 | 
             
            require "lint/strings"
         | 
| 5 5 |  | 
| 6 6 | 
             
            class TestDistributedCommandsOnStrings < Test::Unit::TestCase
         | 
| @@ -47,13 +47,13 @@ class TestDistributedCommandsOnStrings < Test::Unit::TestCase | |
| 47 47 | 
             
              end
         | 
| 48 48 |  | 
| 49 49 | 
             
              def test_bitop
         | 
| 50 | 
            -
                 | 
| 50 | 
            +
                target_version "2.5.10" do
         | 
| 51 | 
            +
                  assert_raise Redis::Distributed::CannotDistribute do
         | 
| 52 | 
            +
                    r.set("foo", "a")
         | 
| 53 | 
            +
                    r.set("bar", "b")
         | 
| 51 54 |  | 
| 52 | 
            -
             | 
| 53 | 
            -
                   | 
| 54 | 
            -
                  r.set("bar", "b")
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                  r.bitop(:and, "foo&bar", "foo", "bar")
         | 
| 55 | 
            +
                    r.bitop(:and, "foo&bar", "foo", "bar")
         | 
| 56 | 
            +
                  end
         | 
| 57 57 | 
             
                end
         | 
| 58 58 | 
             
              end
         | 
| 59 59 | 
             
            end
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # encoding: UTF-8
         | 
| 2 2 |  | 
| 3 | 
            -
            require "helper"
         | 
| 3 | 
            +
            require File.expand_path("helper", File.dirname(__FILE__))
         | 
| 4 4 |  | 
| 5 5 | 
             
            class TestDistributedCommandsRequiringClustering < Test::Unit::TestCase
         | 
| 6 6 |  | 
| @@ -147,18 +147,18 @@ class TestDistributedCommandsRequiringClustering < Test::Unit::TestCase | |
| 147 147 | 
             
              end
         | 
| 148 148 |  | 
| 149 149 | 
             
              def test_bitop
         | 
| 150 | 
            -
                 | 
| 151 | 
            -
             | 
| 152 | 
            -
             | 
| 153 | 
            -
             | 
| 154 | 
            -
             | 
| 155 | 
            -
             | 
| 156 | 
            -
             | 
| 157 | 
            -
             | 
| 158 | 
            -
             | 
| 159 | 
            -
             | 
| 160 | 
            -
             | 
| 161 | 
            -
             | 
| 162 | 
            -
                 | 
| 150 | 
            +
                target_version "2.5.10" do
         | 
| 151 | 
            +
                  r.set("{qux}foo", "a")
         | 
| 152 | 
            +
                  r.set("{qux}bar", "b")
         | 
| 153 | 
            +
             | 
| 154 | 
            +
                  r.bitop(:and, "{qux}foo&bar", "{qux}foo", "{qux}bar")
         | 
| 155 | 
            +
                  assert_equal "\x60", r.get("{qux}foo&bar")
         | 
| 156 | 
            +
                  r.bitop(:or, "{qux}foo|bar", "{qux}foo", "{qux}bar")
         | 
| 157 | 
            +
                  assert_equal "\x63", r.get("{qux}foo|bar")
         | 
| 158 | 
            +
                  r.bitop(:xor, "{qux}foo^bar", "{qux}foo", "{qux}bar")
         | 
| 159 | 
            +
                  assert_equal "\x03", r.get("{qux}foo^bar")
         | 
| 160 | 
            +
                  r.bitop(:not, "{qux}~foo", "{qux}foo")
         | 
| 161 | 
            +
                  assert_equal "\x9E", r.get("{qux}~foo")
         | 
| 162 | 
            +
                end
         | 
| 163 163 | 
             
              end
         | 
| 164 164 | 
             
            end
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # encoding: UTF-8
         | 
| 2 2 |  | 
| 3 | 
            -
            require "helper"
         | 
| 3 | 
            +
            require File.expand_path("helper", File.dirname(__FILE__))
         | 
| 4 4 |  | 
| 5 5 | 
             
            class TestDistributedRemoteServerControlCommands < Test::Unit::TestCase
         | 
| 6 6 |  | 
| @@ -28,13 +28,13 @@ class TestDistributedRemoteServerControlCommands < Test::Unit::TestCase | |
| 28 28 | 
             
              end
         | 
| 29 29 |  | 
| 30 30 | 
             
              def test_info_commandstats
         | 
| 31 | 
            -
                 | 
| 31 | 
            +
                target_version "2.5.7" do
         | 
| 32 | 
            +
                  r.nodes.each { |n| n.config(:resetstat) }
         | 
| 33 | 
            +
                  r.ping # Executed on every node
         | 
| 32 34 |  | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
                r.info(:commandstats).each do |info|
         | 
| 37 | 
            -
                  assert_equal "1", info["ping"]["calls"]
         | 
| 35 | 
            +
                  r.info(:commandstats).each do |info|
         | 
| 36 | 
            +
                    assert_equal "1", info["ping"]["calls"]
         | 
| 37 | 
            +
                  end
         | 
| 38 38 | 
             
                end
         | 
| 39 39 | 
             
              end
         | 
| 40 40 |  | 
| @@ -52,15 +52,15 @@ class TestDistributedRemoteServerControlCommands < Test::Unit::TestCase | |
| 52 52 | 
             
              end
         | 
| 53 53 |  | 
| 54 54 | 
             
              def test_time
         | 
| 55 | 
            -
                 | 
| 55 | 
            +
                target_version "2.5.4" do
         | 
| 56 | 
            +
                  # Test that the difference between the time that Ruby reports and the time
         | 
| 57 | 
            +
                  # that Redis reports is minimal (prevents the test from being racy).
         | 
| 58 | 
            +
                  r.time.each do |rv|
         | 
| 59 | 
            +
                    redis_usec = rv[0] * 1_000_000 + rv[1]
         | 
| 60 | 
            +
                    ruby_usec = Integer(Time.now.to_f * 1_000_000)
         | 
| 56 61 |  | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
                r.time.each do |rv|
         | 
| 60 | 
            -
                  redis_usec = rv[0] * 1_000_000 + rv[1]
         | 
| 61 | 
            -
                  ruby_usec = Integer(Time.now.to_f * 1_000_000)
         | 
| 62 | 
            -
             | 
| 63 | 
            -
                  assert 500_000 > (ruby_usec - redis_usec).abs
         | 
| 62 | 
            +
                    assert 500_000 > (ruby_usec - redis_usec).abs
         | 
| 63 | 
            +
                  end
         | 
| 64 64 | 
             
                end
         | 
| 65 65 | 
             
              end
         | 
| 66 66 | 
             
            end
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # encoding: UTF-8
         | 
| 2 2 |  | 
| 3 | 
            -
            require "helper"
         | 
| 3 | 
            +
            require File.expand_path("helper", File.dirname(__FILE__))
         | 
| 4 4 |  | 
| 5 5 | 
             
            class TestDistributedScripting < Test::Unit::TestCase
         | 
| 6 6 |  | 
| @@ -11,92 +11,92 @@ class TestDistributedScripting < Test::Unit::TestCase | |
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 13 | 
             
              def test_script_exists
         | 
| 14 | 
            -
                 | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
                 | 
| 14 | 
            +
                target_version "2.5.9" do # 2.6-rc1
         | 
| 15 | 
            +
                  a = to_sha("return 1")
         | 
| 16 | 
            +
                  b = a.succ
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  assert_equal [true], r.script(:exists, a)
         | 
| 19 | 
            +
                  assert_equal [false], r.script(:exists, b)
         | 
| 20 | 
            +
                  assert_equal [[true]], r.script(:exists, [a])
         | 
| 21 | 
            +
                  assert_equal [[false]], r.script(:exists, [b])
         | 
| 22 | 
            +
                  assert_equal [[true, false]], r.script(:exists, [a, b])
         | 
| 23 | 
            +
                end
         | 
| 24 24 | 
             
              end
         | 
| 25 25 |  | 
| 26 26 | 
             
              def test_script_flush
         | 
| 27 | 
            -
                 | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
                 | 
| 27 | 
            +
                target_version "2.5.9" do # 2.6-rc1
         | 
| 28 | 
            +
                  sha = to_sha("return 1")
         | 
| 29 | 
            +
                  assert r.script(:exists, sha).first
         | 
| 30 | 
            +
                  assert_equal ["OK"], r.script(:flush)
         | 
| 31 | 
            +
                  assert !r.script(:exists, sha).first
         | 
| 32 | 
            +
                end
         | 
| 33 33 | 
             
              end
         | 
| 34 34 |  | 
| 35 35 | 
             
              def test_script_kill
         | 
| 36 | 
            -
                 | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
                   | 
| 36 | 
            +
                target_version "2.5.9" do # 2.6-rc1
         | 
| 37 | 
            +
                  redis_mock(:script => lambda { |arg| "+#{arg.upcase}" }) do |redis|
         | 
| 38 | 
            +
                    assert_equal ["KILL"], redis.script(:kill)
         | 
| 39 | 
            +
                  end
         | 
| 40 40 | 
             
                end
         | 
| 41 41 | 
             
              end
         | 
| 42 42 |  | 
| 43 43 | 
             
              def test_eval
         | 
| 44 | 
            -
                 | 
| 44 | 
            +
                target_version "2.5.9" do # 2.6-rc1
         | 
| 45 | 
            +
                  assert_raises(Redis::Distributed::CannotDistribute) do
         | 
| 46 | 
            +
                    r.eval("return #KEYS")
         | 
| 47 | 
            +
                  end
         | 
| 45 48 |  | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            +
                  assert_raises(Redis::Distributed::CannotDistribute) do
         | 
| 50 | 
            +
                    r.eval("return KEYS", ["k1", "k2"])
         | 
| 51 | 
            +
                  end
         | 
| 49 52 |  | 
| 50 | 
            -
             | 
| 51 | 
            -
                  r.eval("return  | 
| 53 | 
            +
                  assert_equal ["k1"], r.eval("return KEYS", ["k1"])
         | 
| 54 | 
            +
                  assert_equal ["a1", "a2"], r.eval("return ARGV", ["k1"], ["a1", "a2"])
         | 
| 52 55 | 
             
                end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                assert_equal ["k1"], r.eval("return KEYS", ["k1"])
         | 
| 55 | 
            -
                assert_equal ["a1", "a2"], r.eval("return ARGV", ["k1"], ["a1", "a2"])
         | 
| 56 56 | 
             
              end
         | 
| 57 57 |  | 
| 58 58 | 
             
              def test_eval_with_options_hash
         | 
| 59 | 
            -
                 | 
| 59 | 
            +
                target_version "2.5.9" do # 2.6-rc1
         | 
| 60 | 
            +
                  assert_raises(Redis::Distributed::CannotDistribute) do
         | 
| 61 | 
            +
                    r.eval("return #KEYS", {})
         | 
| 62 | 
            +
                  end
         | 
| 60 63 |  | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            +
                  assert_raises(Redis::Distributed::CannotDistribute) do
         | 
| 65 | 
            +
                    r.eval("return KEYS", { :keys => ["k1", "k2"] })
         | 
| 66 | 
            +
                  end
         | 
| 64 67 |  | 
| 65 | 
            -
             | 
| 66 | 
            -
                  r.eval("return  | 
| 68 | 
            +
                  assert_equal ["k1"], r.eval("return KEYS", { :keys => ["k1"] })
         | 
| 69 | 
            +
                  assert_equal ["a1", "a2"], r.eval("return ARGV", { :keys => ["k1"], :argv => ["a1", "a2"] })
         | 
| 67 70 | 
             
                end
         | 
| 68 | 
            -
             | 
| 69 | 
            -
                assert_equal ["k1"], r.eval("return KEYS", { :keys => ["k1"] })
         | 
| 70 | 
            -
                assert_equal ["a1", "a2"], r.eval("return ARGV", { :keys => ["k1"], :argv => ["a1", "a2"] })
         | 
| 71 71 | 
             
              end
         | 
| 72 72 |  | 
| 73 73 | 
             
              def test_evalsha
         | 
| 74 | 
            -
                 | 
| 74 | 
            +
                target_version "2.5.9" do # 2.6-rc1
         | 
| 75 | 
            +
                  assert_raises(Redis::Distributed::CannotDistribute) do
         | 
| 76 | 
            +
                    r.evalsha(to_sha("return #KEYS"))
         | 
| 77 | 
            +
                  end
         | 
| 75 78 |  | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            +
                  assert_raises(Redis::Distributed::CannotDistribute) do
         | 
| 80 | 
            +
                    r.evalsha(to_sha("return KEYS"), ["k1", "k2"])
         | 
| 81 | 
            +
                  end
         | 
| 79 82 |  | 
| 80 | 
            -
             | 
| 81 | 
            -
                  r.evalsha(to_sha("return  | 
| 83 | 
            +
                  assert_equal ["k1"], r.evalsha(to_sha("return KEYS"), ["k1"])
         | 
| 84 | 
            +
                  assert_equal ["a1", "a2"], r.evalsha(to_sha("return ARGV"), ["k1"], ["a1", "a2"])
         | 
| 82 85 | 
             
                end
         | 
| 83 | 
            -
             | 
| 84 | 
            -
                assert_equal ["k1"], r.evalsha(to_sha("return KEYS"), ["k1"])
         | 
| 85 | 
            -
                assert_equal ["a1", "a2"], r.evalsha(to_sha("return ARGV"), ["k1"], ["a1", "a2"])
         | 
| 86 86 | 
             
              end
         | 
| 87 87 |  | 
| 88 88 | 
             
              def test_evalsha_with_options_hash
         | 
| 89 | 
            -
                 | 
| 89 | 
            +
                target_version "2.5.9" do # 2.6-rc1
         | 
| 90 | 
            +
                  assert_raises(Redis::Distributed::CannotDistribute) do
         | 
| 91 | 
            +
                    r.evalsha(to_sha("return #KEYS"), {})
         | 
| 92 | 
            +
                  end
         | 
| 90 93 |  | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 94 | 
            +
                  assert_raises(Redis::Distributed::CannotDistribute) do
         | 
| 95 | 
            +
                    r.evalsha(to_sha("return KEYS"), { :keys => ["k1", "k2"] })
         | 
| 96 | 
            +
                  end
         | 
| 94 97 |  | 
| 95 | 
            -
             | 
| 96 | 
            -
                  r.evalsha(to_sha("return  | 
| 98 | 
            +
                  assert_equal ["k1"], r.evalsha(to_sha("return KEYS"), { :keys => ["k1"] })
         | 
| 99 | 
            +
                  assert_equal ["a1", "a2"], r.evalsha(to_sha("return ARGV"), { :keys => ["k1"], :argv => ["a1", "a2"] })
         | 
| 97 100 | 
             
                end
         | 
| 98 | 
            -
             | 
| 99 | 
            -
                assert_equal ["k1"], r.evalsha(to_sha("return KEYS"), { :keys => ["k1"] })
         | 
| 100 | 
            -
                assert_equal ["a1", "a2"], r.evalsha(to_sha("return ARGV"), { :keys => ["k1"], :argv => ["a1", "a2"] })
         | 
| 101 101 | 
             
              end
         | 
| 102 102 | 
             
            end
         |