termite 0.0.10 → 0.0.20
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.
- data/README.md +91 -37
- data/TODO +8 -2
- data/lib/termite.rb +266 -91
- data/lib/termite/hastur_logger.rb +41 -0
- data/lib/termite/syslog_logger.rb +47 -0
- data/lib/termite/version.rb +1 -1
- data/lib/termite/version.rb~ +3 -0
- data/termite.gemspec +2 -1
- data/test/ecology_log_test.rb +4 -3
- data/test/extra_logger_test.rb +5 -4
- data/test/hastur_logger_test.rb +58 -0
- data/test/level_test.rb +53 -0
- data/test/rescue_test.rb +8 -10
- data/test/sinks_test.rb +183 -0
- data/test/stderr_log_test.rb +11 -6
- data/test/termite_logger_test.rb +24 -15
- data/test/termite_subclass_test.rb +1 -1
- data/test/test_helper.rb +14 -9
- metadata +123 -74
- data/Gemfile.lock +0 -29
data/test/stderr_log_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "test_helper.rb")
|
2
2
|
|
3
|
-
class
|
3
|
+
class StderrLogTest < Scope::TestCase
|
4
4
|
context "with a custom ecology" do
|
5
5
|
setup do
|
6
6
|
Ecology.reset
|
@@ -10,7 +10,8 @@ class EcologyLogTest < Scope::TestCase
|
|
10
10
|
"application": "MyApp",
|
11
11
|
"logging": {
|
12
12
|
"stdout_level": "warn",
|
13
|
-
"stderr_level": "fatal"
|
13
|
+
"stderr_level": "fatal",
|
14
|
+
"stdout_color": "green"
|
14
15
|
}
|
15
16
|
}
|
16
17
|
ECOLOGY_CONTENTS
|
@@ -18,17 +19,21 @@ ECOLOGY_CONTENTS
|
|
18
19
|
|
19
20
|
context "with a default termite logger" do
|
20
21
|
setup do
|
22
|
+
@stdout_logger = mock("STDOUT logger")
|
23
|
+
::Logger.expects(:new).with(STDOUT).returns(@stdout_logger)
|
24
|
+
@stderr_logger = mock("STDERR logger")
|
25
|
+
::Logger.expects(:new).with(STDERR).returns(@stderr_logger)
|
21
26
|
@logger = Termite::Logger.new
|
22
27
|
end
|
23
28
|
|
24
|
-
should "log fatal errors to STDERR" do
|
25
|
-
|
29
|
+
should "log fatal errors to STDERR with default color" do
|
30
|
+
@stderr_logger.expects(:<<).with("oh no!\n".color(:red))
|
26
31
|
STDOUT.expects(:puts).never
|
27
32
|
@logger.fatal("oh no!")
|
28
33
|
end
|
29
34
|
|
30
|
-
should "log warnings to STDOUT" do
|
31
|
-
|
35
|
+
should "log warnings to STDOUT with overridden color" do
|
36
|
+
@stdout_logger.expects(:<<).with("oh no!\n".color(:green))
|
32
37
|
STDERR.expects(:puts).never
|
33
38
|
@logger.warn("oh no!")
|
34
39
|
end
|
data/test/termite_logger_test.rb
CHANGED
@@ -8,7 +8,11 @@ class TermiteLoggerTest < Scope::TestCase
|
|
8
8
|
|
9
9
|
set_up_ecology <<ECOLOGY_TEXT
|
10
10
|
{
|
11
|
-
"application": "foo_app"
|
11
|
+
"application": "foo_app",
|
12
|
+
"logging":
|
13
|
+
{
|
14
|
+
"default_component": "whatcomponent"
|
15
|
+
}
|
12
16
|
}
|
13
17
|
ECOLOGY_TEXT
|
14
18
|
end
|
@@ -20,47 +24,47 @@ ECOLOGY_TEXT
|
|
20
24
|
end
|
21
25
|
|
22
26
|
should "correctly send logs to Syslog" do
|
23
|
-
expect_add(
|
27
|
+
expect_add(2, "foo! {}")
|
24
28
|
@logger.add(Logger::FATAL, "foo!", {})
|
25
29
|
end
|
26
30
|
|
27
31
|
should "correctly alias log to add" do
|
28
|
-
expect_add(
|
32
|
+
expect_add(2, "foo! {}")
|
29
33
|
@logger.log(Logger::FATAL, "foo!", {})
|
30
34
|
end
|
31
35
|
|
32
36
|
should "treat << as add-with-info" do
|
33
|
-
expect_add(
|
37
|
+
expect_add(6, "foo! {}")
|
34
38
|
@logger << "foo!"
|
35
39
|
end
|
36
40
|
|
37
41
|
should "correctly send an alert to Syslog" do
|
38
|
-
expect_add(
|
42
|
+
expect_add(1, "foo! {}")
|
39
43
|
@logger.add(Logger::UNKNOWN, "foo!", {})
|
40
44
|
end
|
41
45
|
|
42
46
|
should "correctly send a critical event to Syslog" do
|
43
|
-
expect_add(
|
47
|
+
expect_add(2, "foo! {}")
|
44
48
|
@logger.fatal("foo!")
|
45
49
|
end
|
46
50
|
|
47
51
|
should "correctly send an error event to Syslog" do
|
48
|
-
expect_add(
|
52
|
+
expect_add(3, "foo! {}")
|
49
53
|
@logger.error("foo!")
|
50
54
|
end
|
51
55
|
|
52
56
|
should "correctly send a warning event to Syslog" do
|
53
|
-
expect_add(
|
57
|
+
expect_add(4, "foo! {}")
|
54
58
|
@logger.warn("foo!")
|
55
59
|
end
|
56
60
|
|
57
61
|
should "correctly send an info event to Syslog" do
|
58
|
-
expect_add(
|
62
|
+
expect_add(6, "foo! {}")
|
59
63
|
@logger.info("foo!")
|
60
64
|
end
|
61
65
|
|
62
66
|
should "correctly send a debug event to Syslog" do
|
63
|
-
expect_add(
|
67
|
+
expect_add(7, "foo! {}")
|
64
68
|
@logger.debug("foo!")
|
65
69
|
end
|
66
70
|
end
|
@@ -70,14 +74,19 @@ ECOLOGY_TEXT
|
|
70
74
|
@logger = Termite::Logger.new("/tmp/test_log_output.txt") # Test with output file
|
71
75
|
end
|
72
76
|
|
73
|
-
should "
|
74
|
-
expect_add(
|
77
|
+
should "override application name from ecology" do
|
78
|
+
expect_add(2, "foo! {}", :application => "bar_app:whatcomponent")
|
75
79
|
@logger.fatal("foo!", {}, :application => "bar_app")
|
76
80
|
end
|
77
81
|
|
78
|
-
should "
|
79
|
-
expect_add(
|
80
|
-
@logger.fatal("foo!", {}, :component => "
|
82
|
+
should "override component from ecology" do
|
83
|
+
expect_add(2, "foo! {}", :application => "foo_app:thatcomponent")
|
84
|
+
@logger.fatal("foo!", {}, :component => "thatcomponent")
|
85
|
+
end
|
86
|
+
|
87
|
+
should "override application and component from ecology" do
|
88
|
+
expect_add(2, "foo! {}", :application => "bar_app:thatcomponent")
|
89
|
+
@logger.fatal("foo!", {}, :application => "bar_app", :component => "thatcomponent")
|
81
90
|
end
|
82
91
|
end
|
83
92
|
|
data/test/test_helper.rb
CHANGED
@@ -7,13 +7,10 @@ require "minitest/autorun"
|
|
7
7
|
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
8
8
|
|
9
9
|
require "termite"
|
10
|
+
require "ecology/test_methods"
|
10
11
|
|
11
12
|
class Scope::TestCase
|
12
|
-
|
13
|
-
ENV["ECOLOGY_SPEC"] = filename
|
14
|
-
File.expects(:exist?).with(filename).returns(true)
|
15
|
-
File.expects(:read).with(filename).returns(file_contents)
|
16
|
-
end
|
13
|
+
include Ecology::Test
|
17
14
|
|
18
15
|
def initialize_environment
|
19
16
|
unless @initialized_test_env
|
@@ -28,12 +25,20 @@ class Scope::TestCase
|
|
28
25
|
|
29
26
|
# This adds the Mocha expectation for this call. Technically it also
|
30
27
|
# returns the expectation, so you could modify it later if you wanted.
|
31
|
-
def expect_add(
|
28
|
+
def expect_add(severity_num, message, options = {})
|
32
29
|
initialize_environment
|
33
30
|
|
34
|
-
app = options[:application] || "foo_app"
|
35
|
-
|
31
|
+
app = options[:application] || "foo_app:whatcomponent"
|
32
|
+
syslog_mock = mock("Syslog connection")
|
33
|
+
Syslog.expects(:open).with(app, Syslog::LOG_PID | Syslog::LOG_CONS).yields(syslog_mock)
|
36
34
|
|
35
|
+
syslog_mock.expects(Termite::Logger::SYSLOG_SEVERITY_MAP.invert[severity_num]).with(message)
|
36
|
+
end
|
37
|
+
|
38
|
+
def expect_udp(socket, severity_num, message, options = {})
|
39
|
+
initialize_environment
|
40
|
+
app = options[:application] || "foo_app:whatcomponent"
|
41
|
+
string = "<#{Syslog::LOG_LOCAL6 + severity_num}>Sep 7 15:09:20 samplehost #{app} [1234]: [main] #{message}"
|
37
42
|
options[:method] ||= :send
|
38
43
|
options[:extra_args] ||= [0, "0.0.0.0", 514]
|
39
44
|
socket.expects(options[:method]).with(string, *options[:extra_args])
|
@@ -46,6 +51,6 @@ class Scope::TestCase
|
|
46
51
|
|
47
52
|
options[:method] ||= :send
|
48
53
|
options[:extra_args] ||= [0, "0.0.0.0", 514]
|
49
|
-
socket.expects(
|
54
|
+
socket.expects(:<<).with(message + "\n", *options[:extra_args])
|
50
55
|
end
|
51
56
|
end
|
metadata
CHANGED
@@ -1,99 +1,144 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: termite
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.20
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.10
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Noah Gibbs
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
prerelease: false
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2012-06-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: ecology
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.0.6
|
24
22
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: ecology
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
25
|
none: false
|
31
|
-
requirements:
|
26
|
+
requirements:
|
32
27
|
- - ~>
|
33
|
-
- !ruby/object:Gem::Version
|
28
|
+
- !ruby/object:Gem::Version
|
34
29
|
version: 0.0.6
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: multi_json
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
35
38
|
type: :runtime
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: bundler
|
39
39
|
prerelease: false
|
40
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
|
-
requirements:
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rainbow
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.1.3
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
43
59
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.3
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
45
69
|
version: 1.0.10
|
46
70
|
type: :development
|
47
|
-
version_requirements: *id003
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: scope
|
50
71
|
prerelease: false
|
51
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.0.10
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: scope
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
52
81
|
none: false
|
53
|
-
requirements:
|
82
|
+
requirements:
|
54
83
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
84
|
+
- !ruby/object:Gem::Version
|
56
85
|
version: 0.2.1
|
57
86
|
type: :development
|
58
|
-
version_requirements: *id004
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: mocha
|
61
87
|
prerelease: false
|
62
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.2.1
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: mocha
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
63
97
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version:
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
68
102
|
type: :development
|
69
|
-
version_requirements: *id005
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: rake
|
72
103
|
prerelease: false
|
73
|
-
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rake
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
74
113
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version:
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
79
118
|
type: :development
|
80
|
-
|
81
|
-
|
82
|
-
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: ! 'Termite wraps syslog with a format for extra data, and for
|
127
|
+
|
83
128
|
what you wish it would send automatically.
|
84
129
|
|
85
|
-
|
130
|
+
'
|
131
|
+
email:
|
86
132
|
- noah@ooyala.com
|
87
133
|
executables: []
|
88
|
-
|
89
134
|
extensions: []
|
90
|
-
|
91
135
|
extra_rdoc_files: []
|
92
|
-
|
93
|
-
files:
|
136
|
+
files:
|
94
137
|
- Gemfile
|
95
|
-
-
|
138
|
+
- lib/termite/hastur_logger.rb
|
139
|
+
- lib/termite/syslog_logger.rb
|
96
140
|
- lib/termite/version.rb
|
141
|
+
- lib/termite/version.rb~
|
97
142
|
- lib/termite.rb
|
98
143
|
- LICENSE
|
99
144
|
- Rakefile
|
@@ -101,8 +146,11 @@ files:
|
|
101
146
|
- termite.gemspec
|
102
147
|
- test/ecology_log_test.rb
|
103
148
|
- test/extra_logger_test.rb
|
149
|
+
- test/hastur_logger_test.rb
|
150
|
+
- test/level_test.rb
|
104
151
|
- test/log_locally.rb
|
105
152
|
- test/rescue_test.rb
|
153
|
+
- test/sinks_test.rb
|
106
154
|
- test/stderr_log_test.rb
|
107
155
|
- test/termite_logger_test.rb
|
108
156
|
- test/termite_subclass_test.rb
|
@@ -111,37 +159,38 @@ files:
|
|
111
159
|
- .gitignore
|
112
160
|
homepage: http://www.ooyala.com
|
113
161
|
licenses: []
|
114
|
-
|
115
162
|
post_install_message:
|
116
163
|
rdoc_options: []
|
117
|
-
|
118
|
-
require_paths:
|
164
|
+
require_paths:
|
119
165
|
- lib
|
120
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
166
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
121
167
|
none: false
|
122
|
-
requirements:
|
123
|
-
- -
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version:
|
126
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - ! '>='
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
173
|
none: false
|
128
|
-
requirements:
|
129
|
-
- -
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version:
|
174
|
+
requirements:
|
175
|
+
- - ! '>='
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
132
178
|
requirements: []
|
133
|
-
|
134
179
|
rubyforge_project: termite
|
135
|
-
rubygems_version: 1.8.
|
180
|
+
rubygems_version: 1.8.24
|
136
181
|
signing_key:
|
137
182
|
specification_version: 3
|
138
183
|
summary: Ruby logging based on Syslog
|
139
|
-
test_files:
|
184
|
+
test_files:
|
140
185
|
- test/ecology_log_test.rb
|
141
186
|
- test/extra_logger_test.rb
|
187
|
+
- test/hastur_logger_test.rb
|
188
|
+
- test/level_test.rb
|
142
189
|
- test/log_locally.rb
|
143
190
|
- test/rescue_test.rb
|
191
|
+
- test/sinks_test.rb
|
144
192
|
- test/stderr_log_test.rb
|
145
193
|
- test/termite_logger_test.rb
|
146
194
|
- test/termite_subclass_test.rb
|
147
195
|
- test/test_helper.rb
|
196
|
+
has_rdoc:
|