puppet-vswitch/spec/classes/vswitch_ovs_spec.rb
Alex Schultz b797ae79a0 Fix ovs test for xenial
The change Ie3ee722b9fe6b5b1798fa52bd68ae3b656a8bdf8 switched the
default Ubuntu version that we test from trusty to xenial. Unfortunately
the vswitch::ovs tests assumed trusty for the platform params and were
not properly checking against trusty vs xenial. This change updates the
default platform params for Ubuntu to reflect the differences.

Change-Id: I88333bb571a924ad192aca86aa032c86a509a989
2016-12-16 09:14:06 -07:00

296 lines
9.1 KiB
Ruby

require 'spec_helper'
describe 'vswitch::ovs' do
let :default_params do {
:package_ensure => 'present',
:dkms_ensure => false
}
end
let :freebsd_platform_params do {
:ovs_package_name => 'openvswitch',
:ovs_service_name => 'ovs-vswitchd',
:ovsdb_service_name => 'ovsdb-server',
:provider => 'ovs',
:service_hasstatus => nil,
:ovsdb_hasstatus => nil,
:service_status => '/usr/sbin/service ovs-vswitchd onestatus',
:ovsdb_status => '/usr/sbin/service ovsdb-server onestatus',
}
end
let :solaris_platform_params do {
:ovs_package_name => 'service/network/openvswitch',
:ovs_service_name => 'application/openvswitch/vswitch-server:default',
:ovsdb_service_name => 'application/openvswitch/ovsdb-server:default',
:provider => 'ovs',
:service_hasstatus => nil,
:ovsdb_hasstatus => nil,
:service_status => '/usr/bin/svcs -H -o state application/openvswitch/vswitch-server:default | grep online',
:ovsdb_status => '/usr/bin/svcs -H -o state application/openvswitch/ovsdb-server:default | grep online',
}
end
shared_examples_for 'vswitch::ovs' do
context 'default parameters' do
let (:params) { default_params }
it 'contains the ovs class' do
is_expected.to contain_class('vswitch::ovs')
end
it 'contains params' do
is_expected.to contain_class('vswitch::params')
end
it 'configures service' do
is_expected.to contain_service('openvswitch').with(
:ensure => true,
:enable => true,
:name => platform_params[:ovs_service_name],
:hasstatus => platform_params[:service_hasstatus],
:status => platform_params[:service_status],
)
end
it 'install package' do
is_expected.to contain_package(platform_params[:ovs_package_name]).with(
:name => platform_params[:ovs_package_name],
:ensure => params[:package_ensure],
:before => 'Service[openvswitch]'
)
end
end
context 'custom parameters' do
let :params do
{
:package_ensure => 'latest',
:dkms_ensure => false,
}
end
it 'installs correct package' do
is_expected.to contain_package(platform_params[:ovs_package_name]).with(
:name => platform_params[:ovs_package_name],
:ensure => 'latest',
:before => 'Service[openvswitch]'
)
end
end
end
shared_examples_for "vswitch::ovs on Debian" do
context 'with dkms ensure true' do
let (:params) do
{
:package_ensure => 'latest',
:dkms_ensure => true
}
end
it 'install kernel module' do
is_expected.to contain_package(platform_params[:ovs_dkms_package_name]).with(
:name => platform_params[:ovs_dkms_package_name],
:ensure => params[:package_ensure],
)
end
it 'rebuilds kernel module' do
is_expected.to contain_exec('rebuild-ovsmod').with(
:command => '/usr/sbin/dpkg-reconfigure openvswitch-datapath-dkms > /tmp/reconf-log',
:refreshonly => true,
)
end
end
end
shared_examples_for "vswitch::ovs on RedHat" do
it 'does not rebuild kernel module' do
is_expected.to_not contain_exec('rebuild-ovsmod')
end
end
shared_examples_for 'do not install dkms' do
it 'does not rebuild kernel module' do
is_expected.to_not contain_exec('rebuild-ovsmod')
end
end
shared_examples_for 'install dkms' do
it 'install kernel module' do
is_expected.to contain_package(platform_params[:ovs_dkms_package_name]).with(
:name => platform_params[:ovs_dkms_package_name],
:ensure => params[:package_ensure],
)
end
it 'rebuilds kernel module' do
is_expected.to contain_exec('rebuild-ovsmod').with(
:command => '/usr/sbin/dpkg-reconfigure openvswitch-datapath-dkms > /tmp/reconf-log',
:refreshonly => true,
)
end
end
context 'on FreeBSD with default parameters' do
let :params do default_params end
let :facts do
OSDefaults.get_facts({
:osfamily => 'FreeBSD',
:operatingsystem => 'FreeBSD',
:ovs_version => '1.4.2',
})
end
let :platform_params do freebsd_platform_params end
it_configures 'vswitch::ovs'
it_configures 'do not install dkms'
it 'configures ovsdb service' do
is_expected.to contain_service('ovsdb-server').with(
:ensure => true,
:enable => true,
:name => platform_params[:ovsdb_service_name],
:hasstatus => platform_params[:ovsdb_hasstatus],
:status => platform_params[:ovsdb_status],
)
end
end
context 'on FreeBSD with parameters' do
let :params do {
:package_ensure => 'latest',
}
end
let :facts do
OSDefaults.get_facts({
:osfamily => 'FreeBSD',
:operatingsystem => 'FreeBSD',
:ovs_version => '1.4.2',
})
end
let :platform_params do freebsd_platform_params end
it_configures 'vswitch::ovs'
it_configures 'do not install dkms'
it 'configures ovsdb service' do
is_expected.to contain_service(platform_params[:ovsdb_service_name]).with(
:ensure => true,
:enable => true,
:name => platform_params[:ovsdb_service_name],
:hasstatus => platform_params[:ovsdb_hasstatus],
:status => platform_params[:ovsdb_status],
)
end
it 'ovs-vswitchd requires ovsdb-server' do
is_expected.to contain_service(platform_params[:ovsdb_service_name]).that_notifies("Service[#{platform_params[:ovs_package_name]}]")
end
end
context 'on Solaris with default parameters' do
let :params do default_params end
let :facts do
OSDefaults.get_facts({
:osfamily => 'Solaris',
:operatingsystem => 'Solaris',
:ovs_version => '2.3.1',
})
end
let :platform_params do solaris_platform_params end
it_configures 'vswitch::ovs'
it_configures 'do not install dkms'
it 'configures ovsdb service' do
is_expected.to contain_service('ovsdb-server').with(
:ensure => true,
:enable => true,
:name => platform_params[:ovsdb_service_name],
:hasstatus => platform_params[:ovsdb_hasstatus],
:status => platform_params[:ovsdb_status],
)
end
end
context 'on Solaris with parameters' do
let :params do {
:package_ensure => 'latest',
}
end
let :facts do
OSDefaults.get_facts({
:osfamily => 'Solaris',
:operatingsystem => 'Solaris',
:ovs_version => '2.3.1',
})
end
let :platform_params do solaris_platform_params end
it_configures 'vswitch::ovs'
it_configures 'do not install dkms'
it 'configures ovsdb service' do
is_expected.to contain_service('ovsdb-server').with(
:ensure => true,
:enable => true,
:name => platform_params[:ovsdb_service_name],
:hasstatus => platform_params[:ovsdb_hasstatus],
:status => platform_params[:ovsdb_status],
)
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts({ :ovs_version => '1.4.2' }))
end
let (:platform_params) do
case facts[:osfamily]
when 'Debian'
if facts[:operatingsystem] == 'Debian'
{
:ovs_package_name => 'openvswitch-switch',
:ovs_dkms_package_name => 'openvswitch-datapath-dkms',
:ovs_service_name => 'openvswitch-switch',
:provider => 'ovs',
:service_hasstatus => true,
}
elsif facts[:operatingsystem] == 'Ubuntu'
if Puppet::Util::Package.versioncmp(facts[:operatingsystemmajrelease], '16') >= 0
status_cmd = '/etc/init.d/openvswitch-switch status | fgrep -q "not running"; if [ $? -eq 0 ]; then exit 1; else exit 0; fi'
else
status_cmd = '/sbin/status openvswitch-switch | fgrep "start/running"'
end
{
:ovs_package_name => 'openvswitch-switch',
:ovs_dkms_package_name => 'openvswitch-datapath-dkms',
:ovs_service_name => 'openvswitch-switch',
:provider => 'ovs',
:service_hasstatus => false,
:service_status => status_cmd
}
end
when 'RedHat'
{
:ovs_package_name => 'openvswitch',
:ovs_service_name => 'openvswitch',
:provider => 'ovs_redhat',
}
end
end
it_behaves_like "vswitch::ovs"
it_behaves_like "vswitch::ovs on #{facts[:osfamily]}"
end
end
end