/vendor/bundle/jruby/2.1/gems/redis-3.0.7/test/distributed_key_tags_test.rb

https://github.com/delowong/logstash · Ruby · 52 lines · 37 code · 14 blank · 1 comment · 0 complexity · 4e45b83f373a8c65527a061a50c14755 MD5 · raw file

  1. # encoding: UTF-8
  2. require File.expand_path("helper", File.dirname(__FILE__))
  3. class TestDistributedKeyTags < Test::Unit::TestCase
  4. include Helper
  5. include Helper::Distributed
  6. def test_hashes_consistently
  7. r1 = Redis::Distributed.new ["redis://127.0.0.1:#{PORT}/15", *NODES]
  8. r2 = Redis::Distributed.new ["redis://127.0.0.1:#{PORT}/15", *NODES]
  9. r3 = Redis::Distributed.new ["redis://127.0.0.1:#{PORT}/15", *NODES]
  10. assert_equal r1.node_for("foo").id, r2.node_for("foo").id
  11. assert_equal r1.node_for("foo").id, r3.node_for("foo").id
  12. end
  13. def test_allows_clustering_of_keys
  14. r = Redis::Distributed.new(NODES)
  15. r.add_node("redis://127.0.0.1:#{PORT}/14")
  16. r.flushdb
  17. 100.times do |i|
  18. r.set "{foo}users:#{i}", i
  19. end
  20. assert_equal [0, 100], r.nodes.map { |node| node.keys.size }
  21. end
  22. def test_distributes_keys_if_no_clustering_is_used
  23. r.add_node("redis://127.0.0.1:#{PORT}/14")
  24. r.flushdb
  25. r.set "users:1", 1
  26. r.set "users:4", 4
  27. assert_equal [1, 1], r.nodes.map { |node| node.keys.size }
  28. end
  29. def test_allows_passing_a_custom_tag_extractor
  30. r = Redis::Distributed.new(NODES, :tag => /^(.+?):/)
  31. r.add_node("redis://127.0.0.1:#{PORT}/14")
  32. r.flushdb
  33. 100.times do |i|
  34. r.set "foo:users:#{i}", i
  35. end
  36. assert_equal [0, 100], r.nodes.map { |node| node.keys.size }
  37. end
  38. end