[Groonga-commit] droonga/droonga-engine at 3c4237f [master] Add tests for EngineNode's status detections for service-provider node

Back to archive index

YUKI Hiroshi null+****@clear*****
Thu Apr 30 12:51:42 JST 2015


YUKI Hiroshi	2015-04-30 12:51:42 +0900 (Thu, 30 Apr 2015)

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

  Message:
    Add tests for EngineNode's status detections for service-provider node

  Modified files:
    test/unit/test_engine_node.rb

  Modified: test/unit/test_engine_node.rb (+138 -14)
===================================================================
--- test/unit/test_engine_node.rb    2015-04-30 12:51:26 +0900 (497caad)
+++ test/unit/test_engine_node.rb    2015-04-30 12:51:42 +0900 (d5a3425)
@@ -88,25 +88,149 @@ class EngineNodeTest < Test::Unit::TestCase
       end
     end
 
-    class ToServiceProvider < self
-      def node(params)
-        EngineNode.new(params)
+    class BufferedEngineNode < EngineNode
+      private
+      def create_buffer
+        [0]
       end
+    end
+
+    class NotBufferedEngineNode < EngineNode
+      private
+      def create_buffer
+        []
+      end
+    end
+
+    data(:same_role => {
+           "live" => true,
+           "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+         })
+    def test_forwardable(state)
+      assert_true(EngineNode.new(:name => "node29:2929/droonga",
+                                 :state => state).forwardable?)
+    end
 
-      data(:same_role => {
+    data(:dead => {
+           "live" => false,
+           "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+         },
+         :to_absorb_source => {
+           "live" => true,
+           "role" => Droonga::NodeRole::ABSORB_SOURCE,
+         },
+         :to_absorb_destination => {
+           "live" => true,
+           "role" => Droonga::NodeRole::ABSORB_DESTINATION,
+         })
+    def test_not_forwardable(state)
+      assert_false(EngineNode.new(:name => "node29:2929/droonga",
+                                  :state => state).forwardable?)
+    end
+
+    data(:same_role_with_no_unprocessed_message => {
+           :state => {
              "live" => true,
              "role" => Droonga::NodeRole::SERVICE_PROVIDER,
-           })
-      def test_forwardable(state)
-        assert_true(node(:name => "node29:2929/droonga",
-                         :state => state).forwardable?)
-      end
+           },
+           :class => NotBufferedEngineNode,
+         })
+    def test_readable(data)
+      assert_true(data[:class].new(:name => "node29:2929/droonga",
+                                   :state => data[:state]).readable?)
+    end
 
-      data(:dead => { "live" => false })
-      def test_not_forwardable(state)
-        assert_false(node(:name => "node29:2929/droonga",
-                          :state => state).forwardable?)
-      end
+    data(:dead => {
+           :state => {
+             "live" => false,
+             "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+           },
+           :class => NotBufferedEngineNode,
+         },
+         :have_unprocessed_message_in_other_node => {
+           :state => {
+             "live" => true,
+             "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+             "have_unprocessed_messages" => true,
+           },
+           :class => NotBufferedEngineNode,
+         },
+         :have_unprocessed_message => {
+           :state => {
+             "live" => true,
+             "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+           },
+           :class => BufferedEngineNode,
+         },
+         :to_absorb_source => {
+           :state => {
+             "live" => true,
+             "role" => Droonga::NodeRole::ABSORB_SOURCE,
+           },
+           :class => NotBufferedEngineNode,
+         },
+         :to_absorb_destination => {
+           :state => {
+             "live" => true,
+             "role" => Droonga::NodeRole::ABSORB_DESTINATION,
+           },
+           :class => NotBufferedEngineNode,
+         })
+    def test_not_readable(data)
+      assert_false(data[:class].new(:name => "node29:2929/droonga",
+                                    :state => data[:state]).readable?)
+    end
+
+    data(:same_role => {
+           "live" => true,
+           "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+         },
+         :to_absorb_source => {
+           "live" => true,
+           "role" => Droonga::NodeRole::ABSORB_SOURCE,
+         },
+         :to_absorb_destination => {
+           "live" => true,
+           "role" => Droonga::NodeRole::ABSORB_DESTINATION,
+         },
+         :to_dead => {
+           "live" => false,
+           "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+         },
+         :to_node_have_unprocessed_message => {
+           "live" => true,
+           "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+           "have_unprocessed_messages" => true,
+         })
+    def test_writable(state)
+      assert_true(EngineNode.new(:name => "node29:2929/droonga",
+                                 :state => state).writable?)
+    end
+
+    data(:dead => {
+           :state => {
+             "live" => false,
+           },
+           :expected => "dead",
+         },
+         :readable => {
+           :state => {
+             "live" => true,
+             "role" => Droonga::NodeRole::SERVICE_PROVIDER,
+           },
+           :expected => "active",
+         },
+         :not_readable_but_writable => {
+           :state => {
+             "live" => true,
+             "role" => Droonga::NodeRole::ABSORB_SOURCE,
+           },
+           :expected => "inactive",
+         })
+    def test_status(data)
+      assert_equal(data[:expected],
+                   EngineNode.new(:name => "node29:2929/droonga",
+                                  :state => data[:state]).status)
     end
   end
 end
-------------- next part --------------
HTML����������������������������...
Download 



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