semantic_logger 2.16.0 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,60 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # Unit Test for SemanticLogger::Appender::Bugsnag
4
- #
5
- class AppenderBugsnagTest < Minitest::Test
6
- describe SemanticLogger::Appender::Bugsnag do
7
- before do
8
- @appender = SemanticLogger::Appender::Bugsnag.new(:warn)
9
- @message = 'AppenderBugsnagTest log message'
10
- end
11
-
12
- (SemanticLogger::LEVELS - [:warn, :error]).each do |level|
13
- it "not send :#{level} notifications to Bugsnag" do
14
- message = hash = nil
15
- Bugsnag.stub(:notify, -> msg, h { message = msg; hash = h }) do
16
- @appender.send(level, "AppenderBugsnagTest #{level.to_s} message")
17
- end
18
- assert_nil message
19
- assert_nil hash
20
- end
21
- end
22
-
23
- it "send error notifications to Bugsnag with severity" do
24
- message = hash = nil
25
- Bugsnag.stub(:notify, -> msg, h { message = msg; hash = h }) do
26
- @appender.error @message
27
- end
28
- assert_equal RuntimeError.new(@message), message
29
- assert_equal 'error', hash[:severity]
30
- end
31
-
32
- it 'send warn notifications to Bugsnag replace warn severity with warning' do
33
- message = hash = nil
34
- Bugsnag.stub(:notify, -> msg, h { message = msg; hash = h }) do
35
- @appender.warn @message
36
- end
37
- assert_equal RuntimeError.new(@message), message
38
- assert_equal 'warning', hash[:severity]
39
- end
40
-
41
- it 'send notification to Bugsnag with custom attributes' do
42
- message = hash = nil
43
- Bugsnag.stub(:notify, -> msg, h { message = msg; hash = h }) do
44
- @appender.error @message, {key1: 1, key2: 'a'}
45
- end
46
- assert_equal RuntimeError.new(@message), message
47
- assert_equal(1, hash[:key1], hash)
48
- assert_equal('a', hash[:key2], hash)
49
- end
50
-
51
- it 'send notification to Bugsnag with exception' do
52
- message = hash = nil
53
- error = RuntimeError.new('Hello World')
54
- Bugsnag.stub(:notify, -> msg, h { message = msg; hash = h }) do
55
- @appender.error error
56
- end
57
- assert_equal error, message
58
- end
59
- end
60
- end
@@ -1,77 +0,0 @@
1
- require_relative 'test_helper'
2
- require 'stringio'
3
-
4
- # Unit Test for SemanticLogger::Appender::File
5
- #
6
- class AppenderFileTest < Minitest::Test
7
- describe SemanticLogger::Appender::File do
8
- before do
9
- SemanticLogger.default_level = :trace
10
- @time = Time.new
11
- @io = StringIO.new
12
- @appender = SemanticLogger::Appender::File.new(@io)
13
- @hash = {session_id: 'HSSKLEU@JDK767', tracking_number: 12345}
14
- @hash_str = @hash.inspect.sub("{", "\\{").sub("}", "\\}")
15
- @thread_name = Thread.current.name
16
- end
17
-
18
- describe "format logs into text form" do
19
- it "handle no message or payload" do
20
- @appender.debug
21
- assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ D \[\d+:#{@thread_name}\] SemanticLogger::Appender::File -- \n/, @io.string
22
- end
23
-
24
- it "handle message" do
25
- @appender.debug 'hello world'
26
- assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ D \[\d+:#{@thread_name}\] SemanticLogger::Appender::File -- hello world\n/, @io.string
27
- end
28
-
29
- it "handle message and payload" do
30
- @appender.debug 'hello world', @hash
31
- assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ D \[\d+:#{@thread_name}\] SemanticLogger::Appender::File -- hello world -- #{@hash_str}\n/, @io.string
32
- end
33
-
34
- it "handle message, payload, and exception" do
35
- @appender.debug 'hello world', @hash, StandardError.new("StandardError")
36
- assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ D \[\d+:#{@thread_name}\] SemanticLogger::Appender::File -- hello world -- #{@hash_str} -- Exception: StandardError: StandardError\n\n/, @io.string
37
- end
38
-
39
- it "handle exception only" do
40
- @appender.debug StandardError.new("StandardError")
41
- assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ D \[\d+:#{@thread_name}\] SemanticLogger::Appender::File -- #<StandardError: StandardError> -- Exception: StandardError: StandardError\n\n/, @io.string
42
- end
43
- end
44
-
45
- describe "for each log level" do
46
- # Ensure that any log level can be logged
47
- SemanticLogger::LEVELS.each do |level|
48
- it "log #{level} information" do
49
- @appender.send(level, 'hello world', @hash)
50
- assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ \w \[\d+:#{@thread_name}\] SemanticLogger::Appender::File -- hello world -- #{@hash_str}\n/, @io.string
51
- end
52
- end
53
- end
54
-
55
- describe "custom formatter" do
56
- before do
57
- @appender = SemanticLogger::Appender::File.new(@io) do |log|
58
- tags = log.tags.collect { |tag| "[#{tag}]" }.join(" ") + " " if log.tags && (log.tags.size > 0)
59
-
60
- message = log.message.to_s
61
- message << " -- " << log.payload.inspect if log.payload
62
- message << " -- " << "#{log.exception.class}: #{log.exception.message}\n#{(log.exception.backtrace || []).join("\n")}" if log.exception
63
-
64
- duration_str = log.duration ? " (#{'%.1f' % log.duration}ms)" : ''
65
-
66
- "#{SemanticLogger::Appender::Base.formatted_time(log.time)} #{log.level.to_s.upcase} [#{$$}:#{log.thread_name}] #{tags}#{log.name} -- #{message}#{duration_str}"
67
- end
68
- end
69
-
70
- it "format using formatter" do
71
- @appender.debug
72
- assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ DEBUG \[\d+:#{@thread_name}\] SemanticLogger::Appender::File -- \n/, @io.string
73
- end
74
- end
75
-
76
- end
77
- end
@@ -1,103 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # Unit Test for SemanticLogger::Appender::MongoDB
4
- #
5
- class AppenderMongoDBTest < Minitest::Test
6
- describe SemanticLogger::Appender::MongoDB do
7
- before do
8
- @db = Mongo::Connection.new['test']
9
- @appender = SemanticLogger::Appender::MongoDB.new(
10
- db: @db,
11
- collection_size: 10*1024**2, # 10MB
12
- host_name: 'test',
13
- application: 'test_application',
14
- level: :trace
15
- )
16
- @hash = {tracking_number: 12345, session_id: 'HSSKLEU@JDK767'}
17
- Thread.current.name = 'thread'
18
- end
19
-
20
- after do
21
- @appender.purge_all if @appender
22
- end
23
-
24
- describe "format logs into documents" do
25
-
26
- it "handle nil name, message and hash" do
27
- @appender.debug
28
- document = @appender.collection.find_one
29
- assert_equal :debug, document['level']
30
- assert_equal nil, document['message']
31
- assert_equal 'thread', document['thread_name']
32
- assert document['time'].is_a?(Time)
33
- assert_equal nil, document['payload']
34
- assert_equal $$, document['pid']
35
- assert_equal 'test', document['host_name']
36
- assert_equal 'test_application', document['application']
37
- end
38
-
39
- it "handle nil message and payload" do
40
- @appender.debug(@hash)
41
-
42
- document = @appender.collection.find_one
43
- assert_equal :debug, document['level']
44
- assert_equal @hash.inspect, document['message']
45
- assert_equal 'thread', document['thread_name']
46
- assert document['time'].is_a?(Time)
47
- assert_nil document['payload']
48
- assert_equal $$, document['pid']
49
- assert_equal 'test', document['host_name']
50
- assert_equal 'test_application', document['application']
51
- end
52
-
53
- it "handle message and payload" do
54
- @appender.debug('hello world', @hash)
55
-
56
- document = @appender.collection.find_one
57
- assert_equal :debug, document['level']
58
- assert_equal 'hello world', document['message']
59
- assert_equal 'thread', document['thread_name']
60
- assert document['time'].is_a?(Time)
61
- assert_equal({"tracking_number" => 12345, "session_id" => 'HSSKLEU@JDK767'}, document['payload'])
62
- assert_equal $$, document['pid']
63
- assert_equal 'test', document['host_name']
64
- assert_equal 'test_application', document['application']
65
- end
66
-
67
- it "handle message without payload" do
68
- log = SemanticLogger::Base::Log.new(:debug)
69
- @appender.debug('hello world')
70
-
71
- document = @appender.collection.find_one
72
- assert_equal :debug, document['level']
73
- assert_equal 'hello world', document['message']
74
- assert_equal 'thread', document['thread_name']
75
- assert document['time'].is_a?(Time)
76
- assert_equal nil, document['payload']
77
- assert_equal $$, document['pid']
78
- assert_equal 'test', document['host_name']
79
- assert_equal 'test_application', document['application']
80
- end
81
- end
82
-
83
- describe "for each log level" do
84
- # Ensure that any log level can be logged
85
- SemanticLogger::LEVELS.each do |level|
86
- it "log #{level} information" do
87
- @appender.send(level, 'hello world -- Calculations', @hash)
88
- document = @appender.collection.find_one
89
- assert_equal level, document['level']
90
- assert_equal 'hello world -- Calculations', document['message']
91
- assert_equal 'thread', document['thread_name']
92
- assert document['time'].is_a?(Time)
93
- assert_equal({"tracking_number" => 12345, "session_id" => 'HSSKLEU@JDK767'}, document['payload'])
94
- assert_equal $$, document['pid']
95
- assert_equal 'test', document['host_name']
96
- assert_equal 'test_application', document['application']
97
- end
98
- end
99
-
100
- end
101
-
102
- end
103
- end
@@ -1,83 +0,0 @@
1
- # So that the NewRelic appender will load the mock
2
- $LOAD_PATH.unshift File.dirname(__FILE__)
3
- require_relative 'test_helper'
4
-
5
- # Unit Test for SemanticLogger::Appender::NewRelic
6
- #
7
- class AppenderNewRelicTest < Minitest::Test
8
- describe SemanticLogger::Appender::NewRelic do
9
-
10
- before do
11
- @appender = SemanticLogger::Appender::NewRelic.new(:error)
12
- @message = 'AppenderNewRelicTest log message'
13
- @multi_line_message = <<-EOSTR
14
-
15
-
16
- first non-blank line
17
- second non-blank line
18
-
19
- third non-blank line
20
-
21
- EOSTR
22
- end
23
-
24
- (SemanticLogger::LEVELS - [:error, :fatal]).each do |level|
25
- it "not send :#{level.to_s} notifications to New Relic" do
26
- message = hash = nil
27
- NewRelic::Agent.stub(:notice_error, -> msg, h { message = msg; hash = h }) do
28
- @appender.tagged('test') do
29
- @appender.send(level, "AppenderNewRelicTest #{level.to_s} message")
30
- end
31
- end
32
- assert_nil message
33
- assert_nil hash
34
- end
35
- end
36
-
37
- [:error, :fatal].each do |level|
38
- it "send :#{level.to_s} notifications to New Relic" do
39
- message = hash = nil
40
- NewRelic::Agent.stub(:notice_error, -> msg, h { message = msg; hash = h }) do
41
- @appender.tagged('test') do
42
- @appender.send(level, @message)
43
- end
44
- end
45
- assert_equal @message, message
46
- assert_equal ['test'], hash[:custom_params][:tags]
47
- assert_equal "SemanticLogger::Appender::NewRelic/#{@message}", hash[:metric]
48
- assert_nil hash[:custom_params][:duration]
49
- assert hash[:custom_params][:thread_name], hash.inspect
50
- end
51
- end
52
-
53
- it 'send notification to New Relic with custom attributes' do
54
- message = hash = nil
55
- NewRelic::Agent.stub(:notice_error, -> msg, h { message = msg; hash = h }) do
56
- @appender.tagged('test') do
57
- @appender.with_payload({key1: 1, key2: 'a'}) do
58
- @appender.benchmark(:error, @message) do
59
- sleep 0.001
60
- end
61
- end
62
- end
63
- end
64
- assert_equal @message, message
65
- assert_equal ['test'], hash[:custom_params][:tags], hash
66
- assert_equal "SemanticLogger::Appender::NewRelic/#{@message}", hash[:metric]
67
- assert_equal({key1: 1, key2: 'a'}, hash[:custom_params][:payload], hash)
68
- assert hash[:custom_params][:duration], hash
69
- assert hash[:custom_params][:thread_name], hash
70
- end
71
-
72
- it 'use the first non-blank line for a multi-line message' do
73
- message = hash = nil
74
- NewRelic::Agent.stub(:notice_error, -> msg, h { message = msg; hash = h }) do
75
- @appender.tagged('test') do
76
- @appender.error @multi_line_message
77
- end
78
- end
79
- assert_equal 'first non-blank line', message
80
- end
81
-
82
- end
83
- end
@@ -1,47 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # Unit Test for SemanticLogger::Appender::Splunk
4
- #
5
- class AppenderSplunkTest < Minitest::Test
6
- describe SemanticLogger::Appender::Splunk do
7
-
8
- describe '#parse_options' do
9
- describe 'argument errors' do
10
- it 'raise argument error for missing username' do
11
- error = assert_raises ArgumentError do
12
- SemanticLogger::Appender::Splunk.new({})
13
- end
14
-
15
- assert_equal 'Must supply a username.', error.message
16
- end
17
-
18
- it 'raise argument error for missing password' do
19
- error = assert_raises ArgumentError do
20
- SemanticLogger::Appender::Splunk.new(username: 'username')
21
- end
22
-
23
- assert_equal 'Must supply a password.', error.message
24
- end
25
- end
26
-
27
- describe 'set default values' do
28
- it 'have default values' do
29
- appender = Splunk.stub(:connect, Splunk::Service.new({})) do
30
- Splunk::Service.stub_any_instance(:indexes, {}) do
31
- SemanticLogger::Appender::Splunk.new(username: 'username', password: 'password')
32
- end
33
- end
34
- config = appender.config
35
- # Default host
36
- assert_equal 'localhost', config[:host]
37
- # Default port
38
- assert_equal 8089, config[:port]
39
- # Default scheme
40
- assert_equal :https, config[:scheme]
41
- #Default index
42
- assert_equal 'main', appender.index
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,61 +0,0 @@
1
- require_relative 'test_helper'
2
- require 'net/tcp_client'
3
-
4
- # Unit Test for SemanticLogger::Appender::Syslog
5
- #
6
- class AppenderSyslogTest < Minitest::Test
7
- describe SemanticLogger::Appender::Syslog do
8
-
9
- it 'handle local syslog' do
10
- message = nil
11
- Syslog.stub(:open, nil) do
12
- Syslog.stub(:log, -> level, msg { message = msg }) do
13
- syslog_appender = SemanticLogger::Appender::Syslog.new(level: :debug)
14
- syslog_appender.debug 'AppenderSyslogTest log message'
15
- end
16
- end
17
- assert_match /D (.*?) SemanticLogger::Appender::Syslog -- AppenderSyslogTest log message/, message
18
- end
19
-
20
- it 'handle remote syslog over TCP' do
21
- message = nil
22
- Net::TCPClient.stub_any_instance(:closed?, false) do
23
- Net::TCPClient.stub_any_instance(:connect, nil) do
24
- syslog_appender = SemanticLogger::Appender::Syslog.new(server: 'tcp://localhost:88888', level: :debug)
25
- syslog_appender.remote_syslog.stub(:write, Proc.new { |data| message = data }) do
26
- syslog_appender.debug 'AppenderSyslogTest log message'
27
- end
28
- end
29
- end
30
- assert_match /<70>(.*?)SemanticLogger::Appender::Syslog -- AppenderSyslogTest log message\r\n/, message
31
- end
32
-
33
- it 'handle remote syslog over UDP' do
34
- message = nil
35
- syslog_appender = SemanticLogger::Appender::Syslog.new(server: 'udp://localhost:88888', level: :debug)
36
- UDPSocket.stub_any_instance(:send, -> msg, num, host, port { message = msg }) do
37
- syslog_appender.debug 'AppenderSyslogTest log message'
38
- end
39
- assert_match /<70>(.*?)SemanticLogger::Appender::Syslog -- AppenderSyslogTest log message/, message
40
- end
41
-
42
- # Should be able to log each level.
43
- SemanticLogger::LEVELS.each do |level|
44
- it "log #{level} information" do
45
- Syslog.stub(:open, nil) do
46
- Syslog.stub(:log, nil) do
47
- syslog_appender = SemanticLogger::Appender::Syslog.new
48
- syslog_appender.send(level, 'AppenderSyslogTest #{level.to_s} message')
49
- end
50
- end
51
- end
52
- end
53
-
54
- it "allow logging with %" do
55
- message = "AppenderSyslogTest %test"
56
- syslog_appender = SemanticLogger::Appender::Syslog.new
57
- syslog_appender.debug(message)
58
- end
59
-
60
- end
61
- end