logstash/qa/rspec/commands.rb
Pere Urbon-Bayes ced5e5e020 Introduce the concept of a single spec for the tests, we removed the platform depant test as they where mostly similar, but only used with small platform dependant metadata, this all has been moved to factory methods. make sure platforms uses canonicals "former" names, so no "ubuntu" platfrom as is debian based, and no "centos" as is redhat based.
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
2016-06-02 14:37:16 +00:00

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