diff options
author | Jay Mundrawala <jdmundrawala@gmail.com> | 2014-10-16 15:43:58 -0700 |
---|---|---|
committer | Jay Mundrawala <jdmundrawala@gmail.com> | 2014-10-22 13:03:30 -0700 |
commit | 7412b9721d853bc7afb78c5dc1f3d74441596dd1 (patch) | |
tree | 8c6bf6248cb6657f4486e556c57ae3cd2f3a9bf3 /spec/functional/event_loggers | |
parent | 7993d05ac6251b06093f282becf75be7a8a49bd0 (diff) | |
download | chef-7412b9721d853bc7afb78c5dc1f3d74441596dd1.tar.gz |
Use windows evt log by default on windows
Diffstat (limited to 'spec/functional/event_loggers')
-rw-r--r-- | spec/functional/event_loggers/windows_eventlog_spec.rb | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/spec/functional/event_loggers/windows_eventlog_spec.rb b/spec/functional/event_loggers/windows_eventlog_spec.rb new file mode 100644 index 0000000000..9da9f60fa9 --- /dev/null +++ b/spec/functional/event_loggers/windows_eventlog_spec.rb @@ -0,0 +1,82 @@ +# +# Author:: Jay Mundrawala (<jdm@getchef.com>) +# +# Copyright:: 2014, Chef Software, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'spec_helper' +require 'securerandom' +require 'chef/event_loggers/windows_eventlog' +if Chef::Platform.windows? + require 'win32/eventlog' + include Win32 +end + +describe Chef::EventLoggers::WindowsEventLogger, :windows_only do + let(:run_id) { SecureRandom.uuid } + let(:version) { SecureRandom.uuid } + let(:elapsed_time) { SecureRandom.random_number(100) } + let(:logger) { Chef::EventLoggers::WindowsEventLogger.new } + let(:flags) { nil } + let(:node) { nil } + let(:run_status) { double('Run Status', {run_id: run_id, elapsed_time: elapsed_time }) } + let(:event_log) { EventLog.new("Application") } + let!(:offset) { event_log.read_last_event.record_number } + let(:mock_exception) { double('Exception', {message: SecureRandom.uuid, backtrace:[SecureRandom.uuid, SecureRandom.uuid]})} + + it 'is available' do + Chef::EventLoggers::WindowsEventLogger.available?.should be_true + end + + it 'writes run_start event with event_id 10000 and contains version' do + logger.run_start(version) + + expect(event_log.read(flags, offset).any? { |e| e.source == 'Chef' && e.event_id == 10000 && + e.string_inserts[0].include?(version)}).to be_true + end + + it 'writes run_started event with event_id 10001 and contains the run_id' do + logger.run_started(run_status) + + expect(event_log.read(flags, offset).any? { |e| e.source == 'Chef' && e.event_id == 10001 && + e.string_inserts[0].include?(run_id)}).to be_true + end + + it 'writes run_completed event with event_id 10002 and contains the run_id and elapsed time' do + logger.run_started(run_status) + logger.run_completed(node) + + expect(event_log.read(flags, offset).any? { |e| e.source == 'Chef' && e.event_id == 10002 && + e.string_inserts[0].include?(run_id) && + e.string_inserts[1].include?(elapsed_time.to_s) + }).to be_true + end + + it 'writes run_failed event with event_id 10003 and contains the run_id, elapsed time, and exception info' do + logger.run_started(run_status) + logger.run_failed(mock_exception) + + expect(event_log.read(flags, offset).any? do |e| + e.source == 'Chef' && e.event_id == 10003 && + e.string_inserts[0].include?(run_id) && + e.string_inserts[1].include?(elapsed_time.to_s) && + e.string_inserts[2].include?(mock_exception.class.name) && + e.string_inserts[3].include?(mock_exception.message) && + e.string_inserts[4].include?(mock_exception.backtrace[0]) && + e.string_inserts[4].include?(mock_exception.backtrace[1]) + end).to be_true + end + +end |