So commands like this run on a host with the specified role: ``` mrsk app exec -r=console -i "/bin/bash` mrsk app logs -f -r=workers ```
59 lines
1.6 KiB
Ruby
59 lines
1.6 KiB
Ruby
require "test_helper"
|
|
|
|
class CommanderTest < ActiveSupport::TestCase
|
|
setup do
|
|
@mrsk = Mrsk::Commander.new.tap do |mrsk|
|
|
mrsk.configure config_file: Pathname.new(File.expand_path("fixtures/deploy_with_roles.yml", __dir__))
|
|
end
|
|
end
|
|
|
|
test "lazy configuration" do
|
|
assert_equal Mrsk::Configuration, @mrsk.config.class
|
|
end
|
|
|
|
test "overwriting hosts" do
|
|
assert_equal [ "1.1.1.1", "1.1.1.2", "1.1.1.3", "1.1.1.4" ], @mrsk.hosts
|
|
|
|
@mrsk.specific_hosts = [ "1.1.1.1", "1.1.1.2" ]
|
|
assert_equal [ "1.1.1.1", "1.1.1.2" ], @mrsk.hosts
|
|
end
|
|
|
|
test "filtering hosts by filtering roles" do
|
|
assert_equal [ "1.1.1.1", "1.1.1.2", "1.1.1.3", "1.1.1.4" ], @mrsk.hosts
|
|
|
|
@mrsk.specific_roles = [ "web" ]
|
|
assert_equal [ "1.1.1.1", "1.1.1.2" ], @mrsk.hosts
|
|
end
|
|
|
|
test "filtering roles" do
|
|
assert_equal [ "web", "workers" ], @mrsk.roles.map(&:name)
|
|
|
|
@mrsk.specific_roles = [ "workers" ]
|
|
assert_equal [ "workers" ], @mrsk.roles.map(&:name)
|
|
end
|
|
|
|
test "filtering roles by filtering hosts" do
|
|
assert_equal [ "web", "workers" ], @mrsk.roles.map(&:name)
|
|
|
|
@mrsk.specific_hosts = [ "1.1.1.3" ]
|
|
assert_equal [ "workers" ], @mrsk.roles.map(&:name)
|
|
end
|
|
|
|
test "overwriting hosts with primary" do
|
|
assert_equal [ "1.1.1.1", "1.1.1.2", "1.1.1.3", "1.1.1.4" ], @mrsk.hosts
|
|
|
|
@mrsk.specific_primary!
|
|
assert_equal [ "1.1.1.1" ], @mrsk.hosts
|
|
end
|
|
|
|
test "primary_host with specific hosts via role" do
|
|
@mrsk.specific_roles = "workers"
|
|
assert_equal "1.1.1.3", @mrsk.primary_host
|
|
end
|
|
|
|
test "roles_on" do
|
|
assert_equal [ "web" ], @mrsk.roles_on("1.1.1.1")
|
|
assert_equal [ "workers" ], @mrsk.roles_on("1.1.1.3")
|
|
end
|
|
end
|