mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 22:57:16 -04:00
Also: * Refactored the specs organization to make the resoning behind simplier, introducing the idea of an artifact subject that it wraps the interactions with the platform. * Add methods to destroy, bootstrap and halt a list of machines either all of them or the ones listed under a given platform name. * Introduced more clear namespacing in the rakefile. * Updated the list of available platforms for acceptance testing, including latest ubuntu, oel, fedora, debian and suse versions Fixes #5350
72 lines
1.3 KiB
Ruby
72 lines
1.3 KiB
Ruby
# encoding: utf-8
|
|
require_relative "./commands/debian"
|
|
require_relative "./commands/ubuntu"
|
|
require_relative "./commands/redhat"
|
|
require_relative "./commands/suse"
|
|
require "forwardable"
|
|
|
|
module ServiceTester
|
|
|
|
class Artifact
|
|
|
|
extend Forwardable
|
|
def_delegators :@client, :installed?, :removed?, :running?
|
|
|
|
attr_reader :host, :client
|
|
|
|
def initialize(host, options={})
|
|
@host = host
|
|
@options = options
|
|
@client = CommandsFactory.fetch(options["type"], options["host"])
|
|
end
|
|
|
|
def name
|
|
"logstash"
|
|
end
|
|
|
|
def hosts
|
|
[@host]
|
|
end
|
|
|
|
def start_service
|
|
client.start_service(name, host)
|
|
end
|
|
|
|
def stop_service
|
|
client.stop_service(name, host)
|
|
end
|
|
|
|
def install(version)
|
|
package = client.package_for(version)
|
|
client.install(package, host)
|
|
end
|
|
|
|
def uninstall
|
|
client.uninstall(name, host)
|
|
end
|
|
|
|
def to_s
|
|
"Artifact #{name}@#{host}"
|
|
end
|
|
end
|
|
|
|
class CommandsFactory
|
|
|
|
def self.fetch(type, host)
|
|
case type
|
|
when "debian"
|
|
if host.start_with?("ubuntu")
|
|
return UbuntuCommands.new
|
|
else
|
|
return DebianCommands.new
|
|
end
|
|
when "suse"
|
|
return SuseCommands.new
|
|
when "redhat"
|
|
return RedhatCommands.new
|
|
else
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|