Navigation Menu

Skip to content

Commit

Permalink
Add tests for EngineNode's status detections for absorb-source node
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Apr 30, 2015
1 parent 762f0f7 commit 38f23e2
Showing 1 changed file with 159 additions and 0 deletions.
159 changes: 159 additions & 0 deletions test/unit/test_engine_node.rb
Expand Up @@ -233,4 +233,163 @@ def test_status(data)
:state => data[:state]).status)
end
end

class FromAbsorbSource < self
class EngineNode < Droonga::EngineNode
private
def sender_role
Droonga::NodeRole::ABSORB_SOURCE
end
end

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::ABSORB_SOURCE,
})
def test_forwardable(state)
assert_true(EngineNode.new(:name => "node29:2929/droonga",
:state => state).forwardable?)
end

data(:dead => {
"live" => false,
"role" => Droonga::NodeRole::ABSORB_SOURCE,
},
:to_service_provider => {
"live" => true,
"role" => Droonga::NodeRole::SERVICE_PROVIDER,
},
: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::ABSORB_SOURCE,
},
:class => NotBufferedEngineNode,
},
:have_unprocessed_message_in_other_node => {
:state => {
"live" => true,
"role" => Droonga::NodeRole::ABSORB_SOURCE,
"have_unprocessed_messages" => true,
},
:class => NotBufferedEngineNode,
})
def test_readable(data)
assert_true(data[:class].new(:name => "node29:2929/droonga",
:state => data[:state]).readable?)
end

data(:dead => {
:state => {
"live" => false,
"role" => Droonga::NodeRole::ABSORB_SOURCE,
},
:class => NotBufferedEngineNode,
},
:have_unprocessed_message => {
:state => {
"live" => true,
"role" => Droonga::NodeRole::ABSORB_SOURCE,
},
:class => BufferedEngineNode,
},
:to_service_provider => {
:state => {
"live" => true,
"role" => Droonga::NodeRole::SERVICE_PROVIDER,
},
: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::ABSORB_SOURCE,
},
:to_dead => {
"live" => false,
"role" => Droonga::NodeRole::ABSORB_SOURCE,
},
:to_node_have_unprocessed_message => {
"live" => true,
"role" => Droonga::NodeRole::ABSORB_SOURCE,
"have_unprocessed_messages" => true,
})
def test_writable(state)
assert_true(EngineNode.new(:name => "node29:2929/droonga",
:state => state).writable?)
end

data(:to_service_provider => {
"live" => true,
"role" => Droonga::NodeRole::SERVICE_PROVIDER,
},
:to_absorb_destination => {
"live" => true,
"role" => Droonga::NodeRole::ABSORB_DESTINATION,
})
def test_not_writable(state)
assert_false(EngineNode.new(:name => "node29:2929/droonga",
:state => state).writable?)
end

data(:dead => {
:state => {
"live" => false,
},
:expected => "dead",
},
:readable => {
:state => {
"live" => true,
"role" => Droonga::NodeRole::ABSORB_SOURCE,
},
:expected => "active",
},
:not_readable_but_writable => {
:state => {
"live" => true,
"role" => Droonga::NodeRole::SERVICE_PROVIDER,
},
:expected => "inactive",
})
def test_status(data)
assert_equal(data[:expected],
EngineNode.new(:name => "node29:2929/droonga",
:state => data[:state]).status)
end
end
end

0 comments on commit 38f23e2

Please sign in to comment.