11require 'spec_helper_acceptance'
2+ require 'beaker-task_helper/inventory'
3+ require 'bolt_spec/run'
24
35describe 'Scenario: install puppetserver (latest):' do
46 before ( :context ) do
@@ -22,11 +24,99 @@ class { '::puppet':
2224 server_external_nodes => '',
2325 # only for install test - don't think to use this in production!
2426 # https://docs.puppet.com/puppetserver/latest/tuning_guide.html
25- server_jvm_max_heap_size => '256m',
26- server_jvm_min_heap_size => '256m',
27+ server_jvm_max_heap_size => '256m',
28+ server_jvm_min_heap_size => '256m',
29+ server_max_active_instances => 1,
2730 }
2831 EOS
2932 end
3033
3134 it_behaves_like 'a idempotent resource'
35+
36+ describe 'run_agent task' do
37+ include Beaker ::TaskHelper ::Inventory
38+ include BoltSpec ::Run
39+
40+ def bolt_config
41+ { 'modulepath' => File . join ( File . dirname ( File . expand_path ( __FILE__ ) ) , '../' , 'fixtures' , 'modules' ) }
42+ end
43+
44+ def bolt_inventory
45+ hosts_to_inventory
46+ end
47+
48+ context 'with empty catalog' do
49+ before do
50+ sleep 10
51+ end
52+ it 'applies and changes nothing' do
53+ results = run_task ( 'puppet::run_agent' , 'agent' , { } )
54+ expect ( results . first ) . to include ( 'status' => 'success' )
55+ expect ( results . first [ 'result' ] [ 'detailed_exitcode' ] ) . to eq 0
56+ expect ( results . first [ 'result' ] [ 'last_run_summary' ] [ 'changes' ] [ 'total' ] ) . to eq 0
57+ end
58+ end
59+
60+ context 'with basic site.pp' do
61+ before do
62+ on default , 'mkdir -p /etc/puppetlabs/code/environments/production/manifests'
63+ on default , 'echo "node default { notify {\'test\':}}" > /etc/puppetlabs/code/environments/production/manifests/site.pp'
64+ end
65+ describe 'running task with --noop' do
66+ it 'changes nothing and reports noop events' do
67+ results = run_task ( 'puppet::run_agent' , 'agent' , '_noop' => true )
68+ expect ( results . first ) . to include ( 'status' => 'success' )
69+ expect ( results . first [ 'result' ] [ 'detailed_exitcode' ] ) . to eq 0
70+ expect ( results . first [ 'result' ] [ 'last_run_summary' ] [ 'changes' ] [ 'total' ] ) . to eq 0
71+ expect ( results . first [ 'result' ] [ 'last_run_summary' ] [ 'events' ] [ 'noop' ] ) . to eq 1
72+ end
73+ end
74+ describe 'running task without --noop' do
75+ it 'applies changes' do
76+ results = run_task ( 'puppet::run_agent' , 'agent' , { } )
77+ expect ( results . first ) . to include ( 'status' => 'success' )
78+ expect ( results . first [ 'result' ] [ 'detailed_exitcode' ] ) . to eq 2
79+ expect ( results . first [ 'result' ] [ 'last_run_summary' ] [ 'changes' ] [ 'total' ] ) . to eq 1
80+ expect ( results . first [ 'result' ] [ 'last_run_summary' ] [ 'events' ] [ 'success' ] ) . to eq 1
81+ end
82+ end
83+ end
84+ context 'with invalid puppet_settings' do
85+ it 'returns failure' do
86+ results = run_task ( 'puppet::run_agent' , 'agent' , 'puppet_settings' => { 'foo' => 'bar' } )
87+ expect ( results . first ) . to include ( 'status' => 'failure' )
88+ end
89+ end
90+ context 'with invalid manifest' do
91+ before do
92+ on default , 'echo "NOT A MANIFEST" > /etc/puppetlabs/code/environments/production/manifests/site.pp'
93+ end
94+ it 'returns failure' do
95+ results = run_task ( 'puppet::run_agent' , 'agent' , { } )
96+ expect ( results . first ) . to include ( 'status' => 'failure' )
97+ expect ( results . first [ 'result' ] [ '_error' ] [ 'details' ] [ 'detailed_exitcode' ] ) . to eq 1
98+ end
99+ end
100+ context 'overriding environment' do
101+ before do
102+ on default , 'mkdir -p /etc/puppetlabs/code/environments/test/manifests'
103+ on default , 'echo "node default { file {\'/tmp/overriding_environment_test\': ensure => \'file\'}}" > /etc/puppetlabs/code/environments/test/manifests/site.pp'
104+ end
105+ it 'applies changes' do
106+ results = run_task ( 'puppet::run_agent' , 'agent' , 'puppet_settings' => { 'environment' => 'test' } )
107+ expect ( results . first ) . to include ( 'status' => 'success' )
108+ expect ( results . first [ 'result' ] [ 'detailed_exitcode' ] ) . to eq 2
109+ expect ( results . first [ 'result' ] [ 'last_run_summary' ] [ 'changes' ] [ 'total' ] ) . to eq 1
110+ expect ( results . first [ 'result' ] [ 'last_run_summary' ] [ 'events' ] [ 'success' ] ) . to eq 1
111+ end
112+ it 'is idempotent' do
113+ results = run_task ( 'puppet::run_agent' , 'agent' , 'puppet_settings' => { 'environment' => 'test' } )
114+ expect ( results . first ) . to include ( 'status' => 'success' )
115+ expect ( results . first [ 'result' ] [ 'detailed_exitcode' ] ) . to eq 0
116+ end
117+ describe file ( '/tmp/overriding_environment_test' ) do
118+ it { should exist }
119+ end
120+ end
121+ end
32122end
0 commit comments