[Groonga-commit] droonga/droonga-engine at ebc63dd [master] Implement tests for Cluster#forward and Cluster#bounce

Back to archive index

YUKI Hiroshi null+****@clear*****
Thu Apr 30 14:33:19 JST 2015


YUKI Hiroshi	2015-04-30 14:33:19 +0900 (Thu, 30 Apr 2015)

  New Revision: ebc63dd5993d3ac517ee02b69d4123afa8f50967
  https://github.com/droonga/droonga-engine/commit/ebc63dd5993d3ac517ee02b69d4123afa8f50967

  Message:
    Implement tests for Cluster#forward and Cluster#bounce

  Modified files:
    test/unit/test_cluster.rb

  Modified: test/unit/test_cluster.rb (+85 -4)
===================================================================
--- test/unit/test_cluster.rb    2015-04-30 14:33:00 +0900 (4e5acff)
+++ test/unit/test_cluster.rb    2015-04-30 14:33:19 +0900 (11c4769)
@@ -25,10 +25,27 @@ class ClusterTest < Test::Unit::TestCase
     end
   end
 
-  class SilentEngineNode < Droonga::EngineNode
+  class StubEngineNode < Droonga::EngineNode
+    attr_reader :forwarded_messages, :bounced_messages
+
+    def initialize(params)
+      @forwarded_messages = []
+      @bounced_messages = []
+      super
+    end
+
     def resume
     end
 
+    def forward(message, destination)
+      @forwarded_messages << {:message     => message,
+                              :destination => destination}
+    end
+
+    def bounce(message)
+      @bounced_messages << message
+    end
+
     private
     def sender_role
       Droonga::NodeRole::SERVICE_PROVIDER
@@ -43,9 +60,13 @@ class ClusterTest < Test::Unit::TestCase
     def reload
     end
 
+    def start
+      engine_nodes # instantiate it
+    end
+
     private
     def create_engine_node(params)
-      SilentEngineNode.new(params)
+      StubEngineNode.new(params)
     end
   end
 
@@ -61,9 +82,9 @@ class ClusterTest < Test::Unit::TestCase
                                "node30:2929/droonga",
                              ])
     assert_equal([
-                   {:class => SilentEngineNode,
+                   {:class => StubEngineNode,
                     :name  => "node29:2929/droonga"},
-                   {:class => SilentEngineNode,
+                   {:class => StubEngineNode,
                     :name  => "node30:2929/droonga"},
                  ],
                  cluster.engine_nodes.collect do |node|
@@ -144,8 +165,68 @@ class ClusterTest < Test::Unit::TestCase
   end
 
   def test_forward
+    cluster = create_cluster(:state => {
+                               "node29:2929/droonga" => {
+                                 "live" => true,
+                                 "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+                               },
+                               "node30:2929/droonga" => {
+                                 "live" => true,
+                                 "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+                               },
+                             },
+                             :all_nodes => [
+                               "node29:2929/droonga",
+                               "node30:2929/droonga",
+                             ])
+    cluster.start
+    cluster.forward({"id" => 1},
+                    {"to" => "node29:2929/droonga"})
+    assert_equal([
+                   {:name      => "node29:2929/droonga",
+                    :forwarded => [
+                      {:message     => {"id" => 1},
+                       :destination => {"to" => "node29:2929/droonga"}}
+                    ]},
+                   {:name      => "node30:2929/droonga",
+                    :forwarded => []}
+                 ],
+                 cluster.engine_nodes.collect do |node|
+                   {:name      => node.name,
+                    :forwarded => node.forwarded_messages}
+                 end)
   end
 
   def test_bounce
+    cluster = create_cluster(:state => {
+                               "node29:2929/droonga" => {
+                                 "live" => true,
+                                 "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+                               },
+                               "node30:2929/droonga" => {
+                                 "live" => true,
+                                 "role" => Droonga::NodeRole::ABSORB_SOURCE,
+                               },
+                             },
+                             :all_nodes => [
+                               "node29:2929/droonga",
+                               "node30:2929/droonga",
+                             ])
+    cluster.start
+    cluster.bounce({"id" => 1,
+                    "targetRole" => Droonga::NodeRole::ABSORB_SOURCE})
+    assert_equal([
+                   {:name    => "node29:2929/droonga",
+                    :bounced => []},
+                   {:name    => "node30:2929/droonga",
+                    :bounced => [
+                      {"id" => 1,
+                       "targetRole" => Droonga::NodeRole::ABSORB_SOURCE},
+                    ]}
+                 ],
+                 cluster.engine_nodes.collect do |node|
+                   {:name    => node.name,
+                    :bounced => node.bounced_messages}
+                 end)
   end
 end
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index