From ac2d7693e02a11d80879ccd80dc33a4f213295e6 Mon Sep 17 00:00:00 2001 From: Feng Pan Date: Sun, 19 Feb 2017 15:14:40 -0500 Subject: Add support for inline config changes This patch changes VPP configuration from file template to inline change directly. This prevents issue with overwriting existing VPP config. Change-Id: I4133be8ebe689d9288e3a8e64cca43afd7e42e64 Signed-off-by: Feng Pan --- spec/acceptance/fdio_spec.rb | 1 - spec/classes/fdio_spec.rb | 25 ++++--------- spec/classes/honeycomb_spec.rb | 2 +- spec/unit/provider/vpp_config/vpp_spec.rb | 37 ++++++++++++++++++++ spec/unit/provider/vpp_service/vpp_spec.rb | 44 ----------------------- spec/unit/type/vpp_config_spec.rb | 15 ++++++++ spec/unit/type/vpp_service_spec.rb | 56 ------------------------------ 7 files changed, 60 insertions(+), 120 deletions(-) create mode 100644 spec/unit/provider/vpp_config/vpp_spec.rb delete mode 100644 spec/unit/provider/vpp_service/vpp_spec.rb create mode 100644 spec/unit/type/vpp_config_spec.rb delete mode 100644 spec/unit/type/vpp_service_spec.rb (limited to 'spec') diff --git a/spec/acceptance/fdio_spec.rb b/spec/acceptance/fdio_spec.rb index 5c30de1..168c085 100644 --- a/spec/acceptance/fdio_spec.rb +++ b/spec/acceptance/fdio_spec.rb @@ -20,7 +20,6 @@ describe 'fdio' do describe file('/etc/vpp/startup.conf') do it { is_expected.to exist } its(:content) { should match /uio-driver\s+uio_pci_generic/ } - its(:content) { should_not match /dev/ } end describe service('vpp') do diff --git a/spec/classes/fdio_spec.rb b/spec/classes/fdio_spec.rb index 0cc065a..4b65779 100644 --- a/spec/classes/fdio_spec.rb +++ b/spec/classes/fdio_spec.rb @@ -46,9 +46,10 @@ describe 'fdio' do shared_examples_for 'fdio - config' do it { - should contain_file('/etc/vpp/startup.conf').with( - 'path' => '/etc/vpp/startup.conf', - ) + should contain_vpp_config('dpdk/uio-driver').with_value('uio_pci_generic') + should contain_vpp_config('dpdk/dev/default') + should contain_vpp_config('cpu/main-core') + should contain_vpp_config('cpu/corelist-workers') } it { should contain_exec('insert_dpdk_kmod').with( @@ -60,24 +61,12 @@ describe 'fdio' do shared_examples_for 'fdio - service' do it { - should contain_vpp_service('vpp').with( - 'ensure' => 'present', - 'pci_devs' => [], - 'state' => 'up', + should contain_service('vpp').with( + 'ensure' => 'running', + 'enable' => true, ) } - context 'with pci dev' do - let(:params) {{:vpp_dpdk_devs => ['0000:00:07.0']}} - - it { - should contain_vpp_service('vpp').with( - 'ensure' => 'present', - 'pci_devs' => ['0000:00:07.0'], - 'state' => 'up', - ) - } - end end context 'on RedHat platforms' do diff --git a/spec/classes/honeycomb_spec.rb b/spec/classes/honeycomb_spec.rb index 8ba367a..fcd31f6 100644 --- a/spec/classes/honeycomb_spec.rb +++ b/spec/classes/honeycomb_spec.rb @@ -15,7 +15,7 @@ describe 'fdio::honeycomb' do it { should contain_file('honeycomb.json').that_requires('Package[honeycomb]') } it { should contain_file('honeycomb.json').that_notifies('Service[honeycomb]') } it { should contain_service('honeycomb').that_requires('Package[honeycomb]') } - it { should contain_service('honeycomb').that_requires('Vpp_service[vpp]') } + it { should contain_service('honeycomb').that_requires('Service[vpp]') } it { should contain_file('honeycomb.json').with( 'ensure' => 'file', diff --git a/spec/unit/provider/vpp_config/vpp_spec.rb b/spec/unit/provider/vpp_config/vpp_spec.rb new file mode 100644 index 0000000..913d795 --- /dev/null +++ b/spec/unit/provider/vpp_config/vpp_spec.rb @@ -0,0 +1,37 @@ +require 'puppet' +require 'puppet/provider/vpp_config/vpp' +require 'spec_helper' + +provider_class = Puppet::Type.type(:vpp_config).provider(:vpp) + +describe 'Puppet::Type.type(:vpp_config).provider(:vpp)' do + + let :vpp_attrs do + { + :setting => 'dpdk/dev/0000:00:07.0', + :ensure => 'present', + } + end + + let :resource do + Puppet::Type::Vpp_config.new(vpp_attrs) + end + + let :provider do + provider_class.new(resource) + end + + describe 'on create' do + it 'should call add_setting' do + provider.expects(:add_setting) + provider.create + end + end + + describe "when changing value" do + it 'should change value' do + provider.expects(:add_setting).with('vlan-strip-offload on') + provider.value = 'vlan-strip-offload on' + end + end +end \ No newline at end of file diff --git a/spec/unit/provider/vpp_service/vpp_spec.rb b/spec/unit/provider/vpp_service/vpp_spec.rb deleted file mode 100644 index f75f80c..0000000 --- a/spec/unit/provider/vpp_service/vpp_spec.rb +++ /dev/null @@ -1,44 +0,0 @@ -require 'puppet' -require 'puppet/provider/vpp_service/vpp' -require 'spec_helper' - -provider_class = Puppet::Type.type(:vpp_service).provider(:vpp) - -describe 'Puppet::Type.type(:vpp_service).provider(:vpp)' do - - let :vpp_attrs do - { - :name => 'vpp service config', - :pci_devs => '0000:00:07.0', - :ensure => 'present', - :state => 'up', - :copy_kernel_nic_ip => 'false', - } - end - - let :resource do - Puppet::Type::Vpp_service.new(vpp_attrs) - end - - let :provider do - provider_class.new(resource) - end - - describe 'on create' do - it 'should call service restart' do - provider.expects(:vpp_pre_config) - provider.expects(:configure_vpp_interfaces) - provider.expects(:systemctlcmd).with('restart', 'vpp') - provider.expects(:systemctlcmd).with('enable', 'vpp') - provider.create - end - end - - describe "when changing state" do - it 'should change state' do - provider.stubs(:get_int_prefix).returns('GigabitEthernet0/7/0') - provider.expects(:vppctlcmd).with('set int state', 'GigabitEthernet0/7/0', 'down') - provider.state = 'down' - end - end -end \ No newline at end of file diff --git a/spec/unit/type/vpp_config_spec.rb b/spec/unit/type/vpp_config_spec.rb new file mode 100644 index 0000000..d25061f --- /dev/null +++ b/spec/unit/type/vpp_config_spec.rb @@ -0,0 +1,15 @@ +require 'puppet' +require 'puppet/type/vpp_config' +require 'spec_helper' + +describe 'Puppet::Type.type(:vpp_config)' do + + before :each do + @vpp_conf = Puppet::Type.type(:vpp_config).new(:setting => 'dpdk/test_setting') + end + + it 'should accept value' do + Puppet::Type.type(:vpp_config).new(:setting => 'dpdk/test_setting', :value => 'test_value') + end + +end diff --git a/spec/unit/type/vpp_service_spec.rb b/spec/unit/type/vpp_service_spec.rb deleted file mode 100644 index 9b08ffa..0000000 --- a/spec/unit/type/vpp_service_spec.rb +++ /dev/null @@ -1,56 +0,0 @@ -require 'puppet' -require 'puppet/type/vpp_service' -require 'spec_helper' - -describe 'Puppet::Type.type(:neutron_config)' do - - before :each do - @vpp_service = Puppet::Type.type(:vpp_service).new(:name => 'vpp service config') - end - - it 'should have default values' do - expect(@vpp_service[:state]).to eq(:up) - expect(@vpp_service[:copy_kernel_nic_ip]).to eq(:true) - end - - it 'should accept a single pci dev' do - Puppet::Type.type(:vpp_service).new(:name => 'vpp service config', :pci_devs => '0000:00:07.0') - end - - it 'should accept array of pci devs' do - Puppet::Type.type(:vpp_service).new(:name => 'vpp service config', :pci_devs => ['0000:00:07.0', '0000:00:08.0']) - end - - it 'should not accept invalid pci dev format' do - expect { - Puppet::Type.type(:vpp_service).new(:name => 'vpp service config', :pci_devs => ['0/7/0', '0000:00:08.0']) - }.to raise_error(Puppet::Error, /Incorrect PCI dev address/) - end - - it 'should accept valid states' do - @vpp_service[:state] = :up - expect(@vpp_service[:state]).to eq(:up) - @vpp_service[:state] = :down - expect(@vpp_service[:state]).to eq(:down) - end - - it 'should not accept invalid state' do - expect { - @vpp_service[:state] = :shut - }.to raise_error(Puppet::Error, /Invalid value/) - end - - it 'should accept valid copy_kernel_nic_ip' do - @vpp_service[:copy_kernel_nic_ip] = :true - expect(@vpp_service[:copy_kernel_nic_ip]).to eq(:true) - @vpp_service[:copy_kernel_nic_ip] = :false - expect(@vpp_service[:copy_kernel_nic_ip]).to eq(:false) - end - - it 'should not accept invalid copy_kernel_nic_ip' do - expect { - @vpp_service[:copy_kernel_nic_ip] = :yes - }.to raise_error(Puppet::Error, /Invalid value/) - end - -end -- cgit 1.2.3-korg