Akosiaris has uploaded a new change for review. https://gerrit.wikimedia.org/r/86850
Change subject: Adding bacula module rspec tests ...................................................................... Adding bacula module rspec tests Change-Id: Ie075c20329b09d606b43aa35c37ded4af2bec321 --- A modules/bacula/.rspec A modules/bacula/Rakefile A modules/bacula/spec/classes/bacula_client_spec.rb A modules/bacula/spec/classes/bacula_console_spec.rb A modules/bacula/spec/classes/bacula_director_spec.rb A modules/bacula/spec/classes/bacula_storage_spec.rb A modules/bacula/spec/defines/catalog_spec.rb A modules/bacula/spec/defines/fileset_spec.rb A modules/bacula/spec/defines/job_spec.rb A modules/bacula/spec/defines/jobdefaults_spec.rb A modules/bacula/spec/defines/pool_spec.rb A modules/bacula/spec/defines/schedule_spec.rb A modules/bacula/spec/defines/storage_device_spec.rb A modules/bacula/spec/fixtures/manifests/site.pp A modules/bacula/spec/spec_helper.rb 15 files changed, 441 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/50/86850/1 diff --git a/modules/bacula/.rspec b/modules/bacula/.rspec new file mode 100644 index 0000000..f449dae --- /dev/null +++ b/modules/bacula/.rspec @@ -0,0 +1,2 @@ +--format doc +--color diff --git a/modules/bacula/Rakefile b/modules/bacula/Rakefile new file mode 100644 index 0000000..d9226a8 --- /dev/null +++ b/modules/bacula/Rakefile @@ -0,0 +1,37 @@ +require 'rake' +require 'fileutils' + +require 'rspec/core/rake_task' + +modulename = File.basename(File.expand_path(File.dirname(__FILE__))) + +symlinks = { 'spec/fixtures/modules/%s/files' % modulename => '../../../../files', + 'spec/fixtures/modules/%s/manifests' % modulename => '../../../../manifests', + 'spec/fixtures/modules/%s/templates' % modulename => '../../../../templates', +} + + +task :setup do + FileUtils.mkdir_p('spec/fixtures/modules/%s' % modulename) + symlinks.each do |x| + if !File.exist?(x[0]) + FileUtils.ln_s(x[1], x[0]) + end + end +end + +task :teardown do + symlinks.each { |x| FileUtils.rm(x[0], :force => true) } + FileUtils.rmdir('spec/fixtures/modules/%s' % modulename) + FileUtils.rmdir('spec/fixtures/modules') +end + +RSpec::Core::RakeTask.new(:realspec) do |t| + t.fail_on_error = false + t.pattern = 'spec/*/*_spec.rb' +end + +task :spec => [ :setup, :realspec, :teardown] + +task :default => :spec do +end diff --git a/modules/bacula/spec/classes/bacula_client_spec.rb b/modules/bacula/spec/classes/bacula_client_spec.rb new file mode 100644 index 0000000..c289d4c --- /dev/null +++ b/modules/bacula/spec/classes/bacula_client_spec.rb @@ -0,0 +1,33 @@ +require 'spec_helper' + +describe 'bacula::client', :type => :class do + let(:node) { 'testhost.example.com' } + let(:params) { { + :director => 'testdirector', + :catalog => 'testcatalog', + :file_retention => 'testfr', + :job_retention => 'testjr', + :fdport => '2000', + :directorpassword => 'testdirectorpass', + } + } + + it { should contain_package('bacula-fd') } + it { should contain_service('bacula-fd') } + it { should contain_exec('concat-bacula-keypair') } + it 'should generate valid content for /etc/bacula/bacula-fd.conf' do + should contain_file('/etc/bacula/bacula-fd.conf').with({ + 'ensure' => 'present', + 'owner' => 'root', + 'group' => 'root', + 'mode' => '0400', + }) \ + .with_content(/Name = "testdirector"/) \ + .with_content(/Password = "testdirectorpass"/) \ + .with_content(/TLS Certificate = "\/var\/lib\/puppet\/ssl\/certs\/testhost.example.com.pem"/) \ + .with_content(/TLS Key = "\/var\/lib\/puppet\/ssl\/private_keys\/testhost.example.com.pem"/) \ + .with_content(/Name = "testhost.example.com-fd"/) \ + .with_content(/FDport = 2000/) \ + .with_content(/PKI Keypair = "\/var\/lib\/puppet\/ssl\/private_keys\/bacula-keypair-testhost.example.com.pem"/) + end +end diff --git a/modules/bacula/spec/classes/bacula_console_spec.rb b/modules/bacula/spec/classes/bacula_console_spec.rb new file mode 100644 index 0000000..4dd7916 --- /dev/null +++ b/modules/bacula/spec/classes/bacula_console_spec.rb @@ -0,0 +1,7 @@ +require 'spec_helper' + +describe 'bacula::console', :type => :class do + let(:params) { { :director => 'testdirector' } } + + it { should contain_package('bacula-console') } +end diff --git a/modules/bacula/spec/classes/bacula_director_spec.rb b/modules/bacula/spec/classes/bacula_director_spec.rb new file mode 100644 index 0000000..6c63475 --- /dev/null +++ b/modules/bacula/spec/classes/bacula_director_spec.rb @@ -0,0 +1,84 @@ +require 'spec_helper' + +describe 'bacula::director', :type => :class do + let(:node) { 'testhost.example.com' } + let(:params) { { + :max_dir_concur_jobs => '10', + :sqlvariant => 'testsql', + :dir_port => '9900', + :bconsolepassword => 'bconsolepass', + } + } + + it { should contain_package('bacula-director-testsql') } + it { should contain_service('bacula-director') } + it do + should contain_file('/etc/bacula/conf.d').with({ + 'ensure' => 'directory', + 'recurse' => 'true', + 'force' => 'true', + 'purge' => 'true', + 'mode' => '0444', + 'owner' => 'root', + 'group' => 'bacula', + }) + end + it do + should contain_file('/etc/bacula/jobs.d').with({ + 'ensure' => 'directory', + 'recurse' => 'true', + 'force' => 'true', + 'purge' => 'true', + 'mode' => '0444', + 'owner' => 'root', + 'group' => 'bacula', + }) + end + it do + should contain_file('/etc/bacula/clients.d').with({ + 'ensure' => 'directory', + 'recurse' => 'true', + 'force' => 'true', + 'purge' => 'true', + 'mode' => '0444', + 'owner' => 'root', + 'group' => 'bacula', + }) + end + it do + should contain_file('/etc/bacula/storages.d').with({ + 'ensure' => 'directory', + 'recurse' => 'true', + 'force' => 'true', + 'purge' => 'true', + 'mode' => '0444', + 'owner' => 'root', + 'group' => 'bacula', + }) + end + it 'should generate valid content for /etc/bacula/bacula-dir.conf' do + should contain_file('/etc/bacula/bacula-dir.conf').with({ + 'ensure' => 'present', + 'owner' => 'root', + 'group' => 'bacula', + 'mode' => '0440', + }) \ + .with_content(/Name = "testhost.example.com"/) \ + .with_content(/Password = "bconsolepass"/) \ + .with_content(/TLS Certificate = "\/var\/lib\/puppet\/ssl\/certs\/testhost.example.com.pem"/) \ + .with_content(/TLS Key = "\/var\/lib\/puppet\/ssl\/private_keys\/testhost.example.com.pem"/) \ + .with_content(/DIRport = 9900/) \ + .with_content(/Maximum Concurrent Jobs = 10/) + end + it 'should generate valid content for /etc/bacula/jobs.d/restore-migrate-jobs.conf' do + should contain_file('/etc/bacula/jobs.d/restore-migrate-jobs.conf').with({ + 'ensure' => 'file', + 'owner' => 'root', + 'group' => 'bacula', + 'mode' => '0444', + }) \ + .with_content(/Client = testhost.example.com-fd/) \ + .with_content(/Type = Restore/) \ + .with_content(/Type = Migrate/) \ + end +end diff --git a/modules/bacula/spec/classes/bacula_storage_spec.rb b/modules/bacula/spec/classes/bacula_storage_spec.rb new file mode 100644 index 0000000..e33364e --- /dev/null +++ b/modules/bacula/spec/classes/bacula_storage_spec.rb @@ -0,0 +1,42 @@ +require 'spec_helper' + +describe 'bacula::storage', :type => :class do + let(:node) { 'testhost.example.com' } + let(:params) { { + :director => 'testdirector', + :sd_max_concur_jobs => '10', + :sqlvariant => 'testsql', + :sd_port => '9000', + :directorpassword => 'testdirectorpass', + } + } + + it { should contain_package('bacula-sd-testsql') } + it { should contain_service('bacula-sd') } + it do + should contain_file('/etc/bacula/sd-devices.d').with({ + 'ensure' => 'directory', + 'recurse' => 'true', + 'force' => 'true', + 'purge' => 'true', + 'mode' => '0444', + 'owner' => 'root', + 'group' => 'bacula', + }) + end + it 'should generate valid content for /etc/bacula/bacula-sd.conf' do + should contain_file('/etc/bacula/bacula-sd.conf').with({ + 'ensure' => 'present', + 'owner' => 'root', + 'group' => 'root', + 'mode' => '0400', + }) \ + .with_content(/Name = "testdirector"/) \ + .with_content(/Password = "testdirectorpass"/) \ + .with_content(/TLS Certificate = "\/var\/lib\/puppet\/ssl\/certs\/testhost.example.com.pem"/) \ + .with_content(/TLS Key = "\/var\/lib\/puppet\/ssl\/private_keys\/testhost.example.com.pem"/) \ + .with_content(/Name = "testhost.example.com-fd"/) \ + .with_content(/SDport = 9000/) \ + .with_content(/Maximum Concurrent Jobs = 10/) + end +end diff --git a/modules/bacula/spec/defines/catalog_spec.rb b/modules/bacula/spec/defines/catalog_spec.rb new file mode 100644 index 0000000..4787b31 --- /dev/null +++ b/modules/bacula/spec/defines/catalog_spec.rb @@ -0,0 +1,28 @@ +require 'spec_helper' + +describe 'bacula::director::catalog', :type => :define do + let(:title) { 'something' } + let(:params) { { + :dbname => 'bacula', + :dbuser => 'bacula', + :dbhost => 'bacula-db.example.org', + :dbport => '3306', + :dbpassword => 'bacula', + } + } + + it 'should create valid content for /etc/bacula/conf.d/catalog-something.conf' do + should contain_file('/etc/bacula/conf.d/catalog-something.conf').with({ + 'ensure' => 'present', + 'owner' => 'root', + 'group' => 'bacula', + 'mode' => '0440', + }) \ + .with_content(/Name = something/) \ + .with_content(/dbname = bacula/) \ + .with_content(/user = bacula/) \ + .with_content(/password = bacula/) \ + .with_content(/DB Address = bacula-db.example.org/) \ + .with_content(/DB Port = 3306/) + end +end diff --git a/modules/bacula/spec/defines/fileset_spec.rb b/modules/bacula/spec/defines/fileset_spec.rb new file mode 100644 index 0000000..f494abe --- /dev/null +++ b/modules/bacula/spec/defines/fileset_spec.rb @@ -0,0 +1,38 @@ +require 'spec_helper' + +describe 'bacula::director::fileset', :type => :define do + let(:title) { 'something' } + let(:params) { { :includes => [ "/", "/var", ], } } + + it 'should create /etc/bacula/conf.d/fileset-something.conf' do + should contain_file('/etc/bacula/conf.d/fileset-something.conf').with({ + 'ensure' => 'present', + 'owner' => 'root', + 'group' => 'bacula', + 'mode' => '0440', + }) + end + + context 'without excludes' do + it 'should create valid content for /etc/bacula/conf.d/fileset-something.conf' do + should contain_file('/etc/bacula/conf.d/fileset-something.conf') \ + .with_content(/File = \//) \ + .with_content(/File = \/var/) + end + end + + context 'with excludes' do + let(:params) { { + :includes => [ "/", "/var",], + :excludes => [ "/tmp", ], + } + } + it 'should create valid content for /etc/bacula/conf.d/fileset-something.conf' do + should contain_file('/etc/bacula/conf.d/fileset-something.conf') \ + .with_content(/File = \//) \ + .with_content(/File = \/var/) \ + .with_content(/File = \/tmp/) + end + end + +end diff --git a/modules/bacula/spec/defines/job_spec.rb b/modules/bacula/spec/defines/job_spec.rb new file mode 100644 index 0000000..58c2e28 --- /dev/null +++ b/modules/bacula/spec/defines/job_spec.rb @@ -0,0 +1,10 @@ +require 'spec_helper' + +describe 'bacula::client::job', :type => :define do + let(:title) { 'something' } + let(:params) { { + :fileset => 'root', + :jobdefaults => 'testdefaults', + } + } +end diff --git a/modules/bacula/spec/defines/jobdefaults_spec.rb b/modules/bacula/spec/defines/jobdefaults_spec.rb new file mode 100644 index 0000000..f9873c1 --- /dev/null +++ b/modules/bacula/spec/defines/jobdefaults_spec.rb @@ -0,0 +1,26 @@ +require 'spec_helper' + +describe 'bacula::director::jobdefaults', :type => :define do + let(:title) { 'something' } + let(:params) { { + :when => 'never', + :pool => 'testpool', + } + } + + it 'should create /etc/bacula/conf.d/jobdefaults-something.conf' do + should contain_file('/etc/bacula/conf.d/jobdefaults-something.conf').with({ + 'ensure' => 'present', + 'owner' => 'root', + 'group' => 'bacula', + 'mode' => '0440', + }) \ + .with_content(/Name = something/) \ + .with_content(/Type = Backup/) \ + .with_content(/Accurate = no/) \ + .with_content(/Spool Data = no/) \ + .with_content(/Schedule = never/) \ + .with_content(/Pool = testpool/) \ + .with_content(/Priority = 10/) + end +end diff --git a/modules/bacula/spec/defines/pool_spec.rb b/modules/bacula/spec/defines/pool_spec.rb new file mode 100644 index 0000000..eb98b8d --- /dev/null +++ b/modules/bacula/spec/defines/pool_spec.rb @@ -0,0 +1,56 @@ +require 'spec_helper' + +describe 'bacula::director::pool', :type => :define do + let(:title) { 'something' } + let(:params) { { + :max_vols => '10', + :storage => 'teststorage', + :volume_retention => '10 days', + } + } + + context 'without label_fmt, max_vol_bytes' do + it 'should create /etc/bacula/conf.d/pool-something.conf' do + should contain_file('/etc/bacula/conf.d/pool-something.conf').with({ + 'ensure' => 'present', + 'owner' => 'root', + 'group' => 'bacula', + 'mode' => '0440', + }) \ + .with_content(/Name = something/) \ + .with_content(/Maximum Volumes = 10/) \ + .with_content(/Storage = teststorage/) \ + .with_content(/Volume Retention = 10 days/) \ + .with_content(/AutoPrune = yes/) \ + .with_content(/Recycle = yes/) \ + .with_content(/Catalog Files = yes/) + end + end + + context 'with max_vol_bytes' do + let(:params) { { + :max_vols => '10', + :storage => 'teststorage', + :volume_retention => '10 days', + :max_vol_bytes => '2000', + } + } + it 'should create /etc/bacula/conf.d/pool-something.conf' do + should contain_file('/etc/bacula/conf.d/pool-something.conf') \ + .with_content(/Maximum Volume Bytes = 2000/) \ + end + end + context 'with max_vol_bytes' do + let(:params) { { + :max_vols => '10', + :storage => 'teststorage', + :volume_retention => '10 days', + :label_fmt => 'TEST', + } + } + it 'should create /etc/bacula/conf.d/pool-something.conf' do + should contain_file('/etc/bacula/conf.d/pool-something.conf') \ + .with_content(/Label Format = "TEST"/) \ + end + end +end diff --git a/modules/bacula/spec/defines/schedule_spec.rb b/modules/bacula/spec/defines/schedule_spec.rb new file mode 100644 index 0000000..7db8c82 --- /dev/null +++ b/modules/bacula/spec/defines/schedule_spec.rb @@ -0,0 +1,24 @@ +require 'spec_helper' + +describe 'bacula::director::schedule', :type => :define do + let(:title) { 'something' } + let(:params) { { + :runs => [ + { 'level' => 'Full', 'at' => '1st Sat at 00:00'}, + { 'level' => 'Differential', 'at' => '3rd Sat at 00:00'}, + ] + } + } + + it 'should create /etc/bacula/conf.d/schedule-something.conf' do + should contain_file('/etc/bacula/conf.d/schedule-something.conf').with({ + 'ensure' => 'present', + 'owner' => 'root', + 'group' => 'bacula', + 'mode' => '0440', + }) \ + .with_content(/Name = something/) \ + .with_content(/Run = Level=Full 1st Sat at 00:00/) \ + .with_content(/Run = Level=Differential 3rd Sat at 00:00/) + end +end diff --git a/modules/bacula/spec/defines/storage_device_spec.rb b/modules/bacula/spec/defines/storage_device_spec.rb new file mode 100644 index 0000000..8b83ff6 --- /dev/null +++ b/modules/bacula/spec/defines/storage_device_spec.rb @@ -0,0 +1,46 @@ +require 'spec_helper' + +describe 'bacula::storage::device', :type => :define do + let(:title) { 'something' } + let(:params) { { + :device_type => 'File', + :media_type => 'File', + :archive_device => '/dev/nst0', + :max_concur_jobs => '10', + } + } + + context 'without spool_dir, max_spool_size' do + it 'should create /etc/bacula/sd-devices.d/something.conf' do + should contain_file('/etc/bacula/sd-devices.d/something.conf').with({ + 'ensure' => 'present', + 'owner' => 'root', + 'group' => 'root', + 'mode' => '0400', + }) \ + .with_content(/Name = something/) \ + .with_content(/Device Type = File/) \ + .with_content(/Media Type = File/) \ + .with_content(/Archive Device = \/dev\/nst0/) \ + .with_content(/Maximum Concurrent Jobs = 10/) + end + end + + context 'with spool_dir, max_spool_size' do + let(:params) { { + :device_type => 'File', + :media_type => 'File', + :archive_device => '/dev/nst0', + :max_concur_jobs => '10', + :spool_dir => '/tmp', + :max_spool_size => '100', + } + } + + it 'should create /etc/bacula/sd-devices.d/something.conf' do + should contain_file('/etc/bacula/sd-devices.d/something.conf') \ + .with_content(/Maximum Spool Size = 100/) \ + .with_content(/Spool Directory = \/tmp/) + end + end +end diff --git a/modules/bacula/spec/fixtures/manifests/site.pp b/modules/bacula/spec/fixtures/manifests/site.pp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/modules/bacula/spec/fixtures/manifests/site.pp diff --git a/modules/bacula/spec/spec_helper.rb b/modules/bacula/spec/spec_helper.rb new file mode 100644 index 0000000..d3923f8 --- /dev/null +++ b/modules/bacula/spec/spec_helper.rb @@ -0,0 +1,8 @@ +require 'rspec-puppet' + +fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures')) + +RSpec.configure do |c| + c.module_path = File.join(fixture_path, 'modules') + c.manifest_dir = File.join(fixture_path, 'manifests') +end -- To view, visit https://gerrit.wikimedia.org/r/86850 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie075c20329b09d606b43aa35c37ded4af2bec321 Gerrit-PatchSet: 1 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Akosiaris <akosia...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits