gelf 1.1.0.gamma1 → 1.1.0.rc1

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/CHANGELOG CHANGED
@@ -4,7 +4,7 @@
4
4
  * requires graylog2-web-interface version XXXXXXXXXXXX;
5
5
  + Notifier#default_options;
6
6
  + severity (level) threshold;
7
- + automatically set '_file', '_line' and '_timestamp', fields;
7
+ + automatically set '_file', '_line' and '_timestamp' fields;
8
8
  + wrappers for GELF::Notifier#notify with severity:
9
9
  + GELF::Notifier.debug
10
10
  + GELF::Notifier.info
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0.gamma1
1
+ 1.1.0.rc1
data/gelf.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gelf}
8
- s.version = "1.1.0.gamma1"
8
+ s.version = "1.1.0.rc1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Aleksey Palazhchenko", "Lennart Koopmann"]
12
- s.date = %q{2010-12-09}
12
+ s.date = %q{2011-01-08}
13
13
  s.description = %q{Library to send GELF messages to Graylog2 logging server. Supports plain-text, GELF messages and exceptions.}
14
14
  s.email = %q{aleksey.palazhchenko@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -46,11 +46,11 @@ Gem::Specification.new do |s|
46
46
  s.summary = %q{Library to send GELF messages to Graylog2 logging server.}
47
47
  s.test_files = [
48
48
  "test/helper.rb",
49
- "test/test_deprecations.rb",
50
49
  "test/test_logger.rb",
51
50
  "test/test_notifier.rb",
51
+ "test/test_severity.rb",
52
52
  "test/test_ruby_sender.rb",
53
- "test/test_severity.rb"
53
+ "test/test_deprecations.rb"
54
54
  ]
55
55
 
56
56
  if s.respond_to? :specification_version then
data/lib/gelf/logger.rb CHANGED
@@ -20,7 +20,7 @@ module GELF
20
20
  [args[0], nil]
21
21
  end
22
22
 
23
- hash = {'_short_message' => message, '_facility' => facility}
23
+ hash = {'short_message' => message, 'facility' => facility}
24
24
  hash.merge!(self.class.extract_hash_from_exception(message)) if message.is_a?(Exception)
25
25
  notify_with_level(level, hash)
26
26
  end
@@ -40,7 +40,7 @@ module GELF
40
40
  end
41
41
 
42
42
  def <<(message)
43
- notify('_short_message' => message, '_level' => GELF::UNKNOWN)
43
+ notify('short_message' => message, 'level' => GELF::UNKNOWN)
44
44
  end
45
45
  end
46
46
 
data/lib/gelf/notifier.rb CHANGED
@@ -19,12 +19,11 @@ module GELF
19
19
 
20
20
  self.host, self.port, self.max_chunk_size = host, port, max_size
21
21
 
22
- @default_options = {}
23
22
  self.default_options = default_options
24
- self.default_options['_version'] = SPEC_VERSION
25
- self.default_options['_host'] ||= Socket.gethostname
26
- self.default_options['_level'] ||= GELF::DEBUG
27
- self.default_options['_facility'] ||= 'gelf-rb'
23
+ self.default_options['version'] = SPEC_VERSION
24
+ self.default_options['host'] ||= Socket.gethostname
25
+ self.default_options['level'] ||= GELF::UNKNOWN
26
+ self.default_options['facility'] ||= 'gelf-rb'
28
27
 
29
28
  @sender = RubyUdpSender.new(host, port)
30
29
  end
@@ -96,8 +95,8 @@ module GELF
96
95
  def notify_with_level!(message_level, *args)
97
96
  return unless @enabled
98
97
  extract_hash(*args)
99
- @hash['_level'] = message_level unless message_level.nil?
100
- if @hash['_level'] >= level
98
+ @hash['level'] = message_level unless message_level.nil?
99
+ if @hash['level'] >= level
101
100
  @sender.send_datagrams(datagrams_from_hash)
102
101
  end
103
102
  end
@@ -106,11 +105,11 @@ module GELF
106
105
  primary_data = if object.respond_to?(:to_hash)
107
106
  object.to_hash
108
107
  elsif object.is_a?(Exception)
109
- args['_level'] ||= GELF::ERROR
108
+ args['level'] ||= GELF::ERROR
110
109
  self.class.extract_hash_from_exception(object)
111
110
  else
112
- args['_level'] ||= GELF::INFO
113
- { '_short_message' => object.to_s }
111
+ args['level'] ||= GELF::INFO
112
+ { 'short_message' => object.to_s }
114
113
  end
115
114
 
116
115
  @hash = default_options.merge(args.merge(primary_data))
@@ -124,16 +123,14 @@ module GELF
124
123
 
125
124
  def self.extract_hash_from_exception(exception)
126
125
  bt = exception.backtrace || ["Backtrace is not available."]
127
- { '_short_message' => "#{exception.class}: #{exception.message}", '_full_message' => "Backtrace:\n" + bt.join("\n") }
126
+ { 'short_message' => "#{exception.class}: #{exception.message}", 'full_message' => "Backtrace:\n" + bt.join("\n") }
128
127
  end
129
128
 
130
129
  # Converts Hoptoad-specific keys in +@hash+ to Graylog2-specific.
131
130
  def convert_hoptoad_keys_to_graylog2
132
- if @hash['_short_message'].to_s.empty?
131
+ if @hash['short_message'].to_s.empty?
133
132
  if @hash.has_key?('error_class') && @hash.has_key?('error_message')
134
- @hash['_short_message'] = "#{@hash['error_class']}: #{@hash['error_message']}"
135
- @hash.delete('error_class')
136
- @hash.delete('error_message')
133
+ @hash['short_message'] = @hash.delete('error_class') + ': ' + @hash.delete('error_message')
137
134
  end
138
135
  end
139
136
  end
@@ -147,28 +144,24 @@ module GELF
147
144
  frame = stack.shift
148
145
  end while frame.include?(LIB_GELF_PATTERN)
149
146
  match = CALLER_REGEXP.match(frame)
150
- @hash['_file'] = match[1]
151
- @hash['_line'] = match[2].to_i
147
+ @hash['file'] = match[1]
148
+ @hash['line'] = match[2].to_i
152
149
  end
153
150
 
154
151
  def set_timestamp
155
- @hash['_timestamp'] = Time.now.utc.to_f
152
+ @hash['timestamp'] = Time.now.utc.to_f
156
153
  end
157
154
 
158
155
  def check_presence_of_mandatory_attributes
159
- %w(_version _short_message _host).each do |attribute|
156
+ %w(version short_message host).each do |attribute|
160
157
  if @hash[attribute].to_s.empty?
161
- raise ArgumentError.new("#{attribute} is missing. Options _version, _short_message and _host must be set.")
158
+ raise ArgumentError.new("#{attribute} is missing. Options version, short_message and host must be set.")
162
159
  end
163
160
  end
164
161
  end
165
162
 
166
163
  def datagrams_from_hash
167
- raise ArgumentError.new("Hash is empty.") if @hash.nil? || @hash.empty?
168
-
169
- @hash['_level'] = GELF::LEVELS_MAPPING[@hash['_level']]
170
-
171
- data = Zlib::Deflate.deflate(@hash.to_json).bytes
164
+ data = serialize_hash
172
165
  datagrams = []
173
166
 
174
167
  # Maximum total size is 8192 byte for UDP datagram. Split to chunks if bigger. (GELFv2 supports chunking)
@@ -177,18 +170,22 @@ module GELF
177
170
  msg_id = Digest::MD5.digest("#{Time.now.to_f}-#{id}")[0, 8]
178
171
  num, count = 0, (data.count.to_f / @max_chunk_size).ceil
179
172
  data.each_slice(@max_chunk_size) do |slice|
180
- datagrams << self.class.chunk_data(slice, msg_id, num, count)
173
+ datagrams << "\x1e\x0f" + msg_id + [num, count, *slice].pack('C*')
181
174
  num += 1
182
175
  end
183
176
  else
184
- datagrams = [data.map(&:chr).join]
177
+ datagrams << data.to_a.pack('C*')
185
178
  end
186
179
 
187
180
  datagrams
188
181
  end
189
182
 
190
- def self.chunk_data(data, msg_id, num, count)
191
- return "\x1e\x0f" + msg_id + [num, count, *data].pack('C*')
183
+ def serialize_hash
184
+ raise ArgumentError.new("Hash is empty.") if @hash.nil? || @hash.empty?
185
+
186
+ @hash['level'] = GELF::LEVELS_MAPPING[@hash['level']]
187
+
188
+ Zlib::Deflate.deflate(@hash.to_json).bytes
192
189
  end
193
190
 
194
191
  def stringify_hash_keys
@@ -14,16 +14,16 @@ module GELF
14
14
  end
15
15
 
16
16
  # Plain Ruby TCP sender.
17
- class RubyTcpSender
18
- def initialize(host, port)
19
- @host, @port = host, port
20
- @socket = TCPSocket.open
21
- end
22
-
23
- def send_datagrams(datagrams)
24
- datagrams.each do |datagram|
25
- @socket.send(datagram, 0, @host, @port)
26
- end
27
- end
28
- end
17
+ # class RubyTcpSender
18
+ # def initialize(host, port)
19
+ # @host, @port = host, port
20
+ # @socket = TCPSocket.open
21
+ # end
22
+ #
23
+ # def send_datagrams(datagrams)
24
+ # datagrams.each do |datagram|
25
+ # @socket.send(datagram, 0, @host, @port)
26
+ # end
27
+ # end
28
+ # end
29
29
  end
data/test/test_logger.rb CHANGED
@@ -18,7 +18,7 @@ class TestLogger < Test::Unit::TestCase
18
18
  should "implement add method with level and message from parameters" do
19
19
  @notifier.expects(:notify_with_level!).with do |level, hash|
20
20
  level == GELF::INFO &&
21
- hash['_short_message'] == 'Message'
21
+ hash['short_message'] == 'Message'
22
22
  end
23
23
  @notifier.add(GELF::INFO, 'Message')
24
24
  end
@@ -27,8 +27,8 @@ class TestLogger < Test::Unit::TestCase
27
27
  should "implement add method with level and exception from parameters" do
28
28
  @notifier.expects(:notify_with_level!).with do |level, hash|
29
29
  level == GELF::INFO &&
30
- hash['_short_message'] == 'RuntimeError: Boom!' &&
31
- hash['_full_message'] =~ /^Backtrace/
30
+ hash['short_message'] == 'RuntimeError: Boom!' &&
31
+ hash['full_message'] =~ /^Backtrace/
32
32
  end
33
33
  @notifier.add(GELF::INFO, RuntimeError.new('Boom!'))
34
34
  end
@@ -37,7 +37,7 @@ class TestLogger < Test::Unit::TestCase
37
37
  should "implement add method with level from parameter and message from block" do
38
38
  @notifier.expects(:notify_with_level!).with do |level, hash|
39
39
  level == GELF::INFO &&
40
- hash['_short_message'] == 'Message'
40
+ hash['short_message'] == 'Message'
41
41
  end
42
42
  @notifier.add(GELF::INFO) { 'Message' }
43
43
  end
@@ -46,8 +46,8 @@ class TestLogger < Test::Unit::TestCase
46
46
  should "implement add method with level from parameter and exception from block" do
47
47
  @notifier.expects(:notify_with_level!).with do |level, hash|
48
48
  level == GELF::INFO &&
49
- hash['_short_message'] == 'RuntimeError: Boom!' &&
50
- hash['_full_message'] =~ /^Backtrace/
49
+ hash['short_message'] == 'RuntimeError: Boom!' &&
50
+ hash['full_message'] =~ /^Backtrace/
51
51
  end
52
52
  @notifier.add(GELF::INFO) { RuntimeError.new('Boom!') }
53
53
  end
@@ -56,8 +56,8 @@ class TestLogger < Test::Unit::TestCase
56
56
  should "implement add method with level, message and facility from parameters" do
57
57
  @notifier.expects(:notify_with_level!).with do |level, hash|
58
58
  level == GELF::INFO &&
59
- hash['_short_message'] == 'Message' &&
60
- hash['_facility'] == 'Facility'
59
+ hash['short_message'] == 'Message' &&
60
+ hash['facility'] == 'Facility'
61
61
  end
62
62
  @notifier.add(GELF::INFO, 'Message', 'Facility')
63
63
  end
@@ -66,9 +66,9 @@ class TestLogger < Test::Unit::TestCase
66
66
  should "implement add method with level, exception and facility from parameters" do
67
67
  @notifier.expects(:notify_with_level!).with do |level, hash|
68
68
  level == GELF::INFO &&
69
- hash['_short_message'] == 'RuntimeError: Boom!' &&
70
- hash['_full_message'] =~ /^Backtrace/ &&
71
- hash['_facility'] == 'Facility'
69
+ hash['short_message'] == 'RuntimeError: Boom!' &&
70
+ hash['full_message'] =~ /^Backtrace/ &&
71
+ hash['facility'] == 'Facility'
72
72
  end
73
73
  @notifier.add(GELF::INFO, RuntimeError.new('Boom!'), 'Facility')
74
74
  end
@@ -77,8 +77,8 @@ class TestLogger < Test::Unit::TestCase
77
77
  should "implement add method with level and facility from parameters and message from block" do
78
78
  @notifier.expects(:notify_with_level!).with do |level, hash|
79
79
  level == GELF::INFO &&
80
- hash['_short_message'] == 'Message' &&
81
- hash['_facility'] == 'Facility'
80
+ hash['short_message'] == 'Message' &&
81
+ hash['facility'] == 'Facility'
82
82
  end
83
83
  @notifier.add(GELF::INFO, 'Facility') { 'Message' }
84
84
  end
@@ -87,9 +87,9 @@ class TestLogger < Test::Unit::TestCase
87
87
  should "implement add method with level and facility from parameters and exception from block" do
88
88
  @notifier.expects(:notify_with_level!).with do |level, hash|
89
89
  level == GELF::INFO &&
90
- hash['_short_message'] == 'RuntimeError: Boom!' &&
91
- hash['_full_message'] =~ /^Backtrace/ &&
92
- hash['_facility'] == 'Facility'
90
+ hash['short_message'] == 'RuntimeError: Boom!' &&
91
+ hash['full_message'] =~ /^Backtrace/ &&
92
+ hash['facility'] == 'Facility'
93
93
  end
94
94
  @notifier.add(GELF::INFO, 'Facility') { RuntimeError.new('Boom!') }
95
95
  end
@@ -126,8 +126,8 @@ class TestLogger < Test::Unit::TestCase
126
126
 
127
127
  should "support Notifier#<<" do
128
128
  @notifier.expects(:notify_with_level!).with do |nil_, hash|
129
- hash['_short_message'] == "Message" &&
130
- hash['_level'] == GELF::UNKNOWN
129
+ hash['short_message'] == "Message" &&
130
+ hash['level'] == GELF::UNKNOWN
131
131
  end
132
132
  @notifier << "Message"
133
133
  end
@@ -7,12 +7,12 @@ class TestNotifier < Test::Unit::TestCase
7
7
  Socket.expects(:gethostname).returns('default_hostname')
8
8
  n = GELF::Notifier.new
9
9
  assert_equal ['localhost', 12201, 1420], [n.host, n.port, n.max_chunk_size]
10
- assert_equal( { '_version' => '1.0', '_level' => GELF::DEBUG,
11
- '_host' => 'default_hostname', '_facility' => 'gelf-rb' },
10
+ assert_equal( { 'version' => '1.0', 'level' => GELF::UNKNOWN,
11
+ 'host' => 'default_hostname', 'facility' => 'gelf-rb' },
12
12
  n.default_options )
13
- n.host, n.port, n.max_chunk_size, n.default_options = 'graylog2.org', 7777, :lan, {'_host' => 'grayhost'}
13
+ n.host, n.port, n.max_chunk_size, n.default_options = 'graylog2.org', 7777, :lan, {'host' => 'grayhost'}
14
14
  assert_equal ['graylog2.org', 7777, 8154], [n.host, n.port, n.max_chunk_size]
15
- assert_equal({'_host' => 'grayhost'}, n.default_options)
15
+ assert_equal({'host' => 'grayhost'}, n.default_options)
16
16
 
17
17
  n.max_chunk_size = 1337.1
18
18
  assert_equal 1337, n.max_chunk_size
@@ -33,108 +33,126 @@ class TestNotifier < Test::Unit::TestCase
33
33
  end
34
34
 
35
35
  should "work with hash" do
36
- hash = @notifier.__send__(:extract_hash, { '_version' => '1.0', '_short_message' => 'message' })
37
- assert_equal '1.0', hash['_version']
38
- assert_equal 'message', hash['_short_message']
36
+ hash = @notifier.__send__(:extract_hash, { 'version' => '1.0', 'short_message' => 'message' })
37
+ assert_equal '1.0', hash['version']
38
+ assert_equal 'message', hash['short_message']
39
39
  end
40
40
 
41
41
  should "work with any object which responds to #to_hash" do
42
42
  o = Object.new
43
- o.expects(:to_hash).returns({ '_version' => '1.0', '_short_message' => 'message' })
43
+ o.expects(:to_hash).returns({ 'version' => '1.0', 'short_message' => 'message' })
44
44
  hash = @notifier.__send__(:extract_hash, o)
45
- assert_equal '1.0', hash['_version']
46
- assert_equal 'message', hash['_short_message']
45
+ assert_equal '1.0', hash['version']
46
+ assert_equal 'message', hash['short_message']
47
47
  end
48
48
 
49
49
  should "work with exception with backtrace" do
50
50
  e = RuntimeError.new('message')
51
51
  e.set_backtrace(caller)
52
52
  hash = @notifier.__send__(:extract_hash, e)
53
- assert_equal 'RuntimeError: message', hash['_short_message']
54
- assert_match /Backtrace/, hash['_full_message']
55
- assert_equal GELF::ERROR, hash['_level']
53
+ assert_equal 'RuntimeError: message', hash['short_message']
54
+ assert_match /Backtrace/, hash['full_message']
55
+ assert_equal GELF::ERROR, hash['level']
56
56
  end
57
57
 
58
58
  should "work with exception without backtrace" do
59
59
  e = RuntimeError.new('message')
60
60
  hash = @notifier.__send__(:extract_hash, e)
61
- assert_match /Backtrace is not available/, hash['_full_message']
61
+ assert_match /Backtrace is not available/, hash['full_message']
62
62
  end
63
63
 
64
64
  should "work with exception and hash" do
65
- e, h = RuntimeError.new('message'), {'param' => 1, '_level' => GELF::FATAL, '_short_message' => 'will be hidden by exception'}
65
+ e, h = RuntimeError.new('message'), {'param' => 1, 'level' => GELF::FATAL, 'short_message' => 'will be hidden by exception'}
66
66
  hash = @notifier.__send__(:extract_hash, e, h)
67
- assert_equal 'RuntimeError: message', hash['_short_message']
68
- assert_equal GELF::FATAL, hash['_level']
67
+ assert_equal 'RuntimeError: message', hash['short_message']
68
+ assert_equal GELF::FATAL, hash['level']
69
69
  assert_equal 1, hash['param']
70
70
  end
71
71
 
72
72
  should "work with plain text" do
73
73
  hash = @notifier.__send__(:extract_hash, 'message')
74
- assert_equal 'message', hash['_short_message']
75
- assert_equal GELF::INFO, hash['_level']
74
+ assert_equal 'message', hash['short_message']
75
+ assert_equal GELF::INFO, hash['level']
76
76
  end
77
77
 
78
78
  should "work with plain text and hash" do
79
- hash = @notifier.__send__(:extract_hash, 'message', '_level' => GELF::WARN)
80
- assert_equal 'message', hash['_short_message']
81
- assert_equal GELF::WARN, hash['_level']
79
+ hash = @notifier.__send__(:extract_hash, 'message', 'level' => GELF::WARN)
80
+ assert_equal 'message', hash['short_message']
81
+ assert_equal GELF::WARN, hash['level']
82
82
  end
83
83
 
84
84
  should "covert hash keys to strings" do
85
- hash = @notifier.__send__(:extract_hash, :_short_message => :message)
86
- assert hash.has_key?('_short_message')
87
- assert !hash.has_key?(:_short_message)
85
+ hash = @notifier.__send__(:extract_hash, :short_message => :message)
86
+ assert hash.has_key?('short_message')
87
+ assert !hash.has_key?(:short_message)
88
88
  end
89
89
 
90
90
  should "not overwrite keys on convert" do
91
- assert_raise(ArgumentError) { @notifier.__send__(:extract_hash, :_short_message => :message1, '_short_message' => 'message2') }
91
+ assert_raise(ArgumentError) { @notifier.__send__(:extract_hash, :short_message => :message1, 'short_message' => 'message2') }
92
92
  end
93
93
 
94
94
  should "use default_options" do
95
- @notifier.default_options = {:foo => 'bar', '_short_message' => 'will be hidden by explicit argument', '_host' => 'some_host'}
96
- hash = @notifier.__send__(:extract_hash, { '_version' => '1.0', '_short_message' => 'message' })
95
+ @notifier.default_options = {:foo => 'bar', 'short_message' => 'will be hidden by explicit argument', 'host' => 'some_host'}
96
+ hash = @notifier.__send__(:extract_hash, { 'version' => '1.0', 'short_message' => 'message' })
97
97
  assert_equal 'bar', hash['foo']
98
- assert_equal 'message', hash['_short_message']
98
+ assert_equal 'message', hash['short_message']
99
99
  end
100
100
 
101
101
  should "be compatible with HoptoadNotifier" do
102
102
  # https://github.com/thoughtbot/hoptoad_notifier/blob/master/README.rdoc, section Going beyond exceptions
103
103
  hash = @notifier.__send__(:extract_hash, :error_class => 'Class', :error_message => 'Message')
104
- assert_equal 'Class: Message', hash['_short_message']
104
+ assert_equal 'Class: Message', hash['short_message']
105
105
  end
106
106
 
107
107
  should "set file and line" do
108
108
  line = __LINE__
109
- hash = @notifier.__send__(:extract_hash, { '_version' => '1.0', '_short_message' => 'message' })
110
- assert_match /test_notifier.rb/, hash['_file']
111
- assert_equal line + 1, hash['_line']
109
+ hash = @notifier.__send__(:extract_hash, { 'version' => '1.0', 'short_message' => 'message' })
110
+ assert_match /test_notifier.rb/, hash['file']
111
+ assert_equal line + 1, hash['line']
112
112
  end
113
113
 
114
114
  should "set timestamp" do
115
- hash = @notifier.__send__(:extract_hash, { '_version' => '1.0', '_short_message' => 'message' })
115
+ hash = @notifier.__send__(:extract_hash, { 'version' => '1.0', 'short_message' => 'message' })
116
+ assert_instance_of Float, hash['timestamp']
116
117
  now = Time.now.utc.to_i
117
- assert ((now - 1)..(now + 1)).include?(hash['_timestamp'])
118
+ assert ((now - 1)..(now + 1)).include?(hash['timestamp'])
119
+ end
120
+ end
121
+
122
+ context "serialize_hash" do
123
+ setup do
124
+ @notifier.instance_variable_set('@hash', { 'level' => GELF::WARN, 'field' => 'value' })
125
+ @data = @notifier.__send__(:serialize_hash)
126
+ assert_instance_of Enumerable::Enumerator, @data
127
+ @deserialized_hash = JSON.parse(Zlib::Inflate.inflate(@data.to_a.pack('C*')))
128
+ assert_instance_of Hash, @deserialized_hash
129
+ end
130
+
131
+ should "map level" do
132
+ assert_not_equal GELF::WARN, @deserialized_hash['level']
133
+ assert_equal GELF::LEVELS_MAPPING[GELF::WARN], @deserialized_hash['level']
118
134
  end
119
135
  end
120
136
 
121
137
  context "datagrams_from_hash" do
122
138
  should "not split short data" do
123
- @notifier.instance_variable_set('@hash', { '_version' => '1.0', '_short_message' => 'message' })
139
+ @notifier.instance_variable_set('@hash', { 'version' => '1.0', 'short_message' => 'message' })
124
140
  datagrams = @notifier.__send__(:datagrams_from_hash)
125
141
  assert_equal 1, datagrams.count
142
+ assert_instance_of String, datagrams[0]
126
143
  assert_equal "\x78\x9c", datagrams[0][0..1] # zlib header
127
144
  end
128
145
 
129
146
  should "split long data" do
130
147
  srand(1) # for stable tests
131
- hash = { '_version' => '1.0', '_short_message' => 'message' }
148
+ hash = { 'version' => '1.0', 'short_message' => 'message' }
132
149
  hash.merge!('something' => (0..3000).map { RANDOM_DATA[rand(RANDOM_DATA.count)] }.join) # or it will be compressed too good
133
150
  @notifier.instance_variable_set('@hash', hash)
134
151
  datagrams = @notifier.__send__(:datagrams_from_hash)
135
152
  assert_equal 2, datagrams.count
136
153
  datagrams.each_index do |i|
137
154
  datagram = datagrams[i]
155
+ assert_instance_of String, datagram
138
156
  assert datagram[0..1] == "\x1e\x0f" # chunked GELF magic number
139
157
  # datagram[2..9] is a message id
140
158
  assert_equal i, datagram[10].ord
@@ -146,7 +164,7 @@ class TestNotifier < Test::Unit::TestCase
146
164
  context "level threshold" do
147
165
  setup do
148
166
  @notifier.level = GELF::WARN
149
- @hash = { '_version' => '1.0', '_short_message' => 'message' }
167
+ @hash = { 'version' => '1.0', 'short_message' => 'message' }
150
168
  end
151
169
 
152
170
  ['debug', 'DEBUG', :debug].each do |l|
@@ -158,12 +176,12 @@ class TestNotifier < Test::Unit::TestCase
158
176
 
159
177
  should "not send notifications with level below threshold" do
160
178
  @sender.expects(:send_datagrams).never
161
- @notifier.notify!(@hash.merge('_level' => GELF::DEBUG))
179
+ @notifier.notify!(@hash.merge('level' => GELF::DEBUG))
162
180
  end
163
181
 
164
182
  should "not notifications with level equal or above threshold" do
165
183
  @sender.expects(:send_datagrams).once
166
- @notifier.notify!(@hash.merge('_level' => GELF::WARN))
184
+ @notifier.notify!(@hash.merge('level' => GELF::WARN))
167
185
  end
168
186
  end
169
187
 
@@ -175,7 +193,7 @@ class TestNotifier < Test::Unit::TestCase
175
193
  should "not send datagrams" do
176
194
  @sender.expects(:send_datagrams).never
177
195
  @notifier.expects(:extract_hash).never
178
- @notifier.notify!({ '_version' => '1.0', '_short_message' => 'message' })
196
+ @notifier.notify!({ 'version' => '1.0', 'short_message' => 'message' })
179
197
  end
180
198
 
181
199
  context "and enabled again" do
@@ -185,7 +203,7 @@ class TestNotifier < Test::Unit::TestCase
185
203
 
186
204
  should "send datagrams" do
187
205
  @sender.expects(:send_datagrams)
188
- @notifier.notify!({ '_version' => '1.0', '_short_message' => 'message' })
206
+ @notifier.notify!({ 'version' => '1.0', 'short_message' => 'message' })
189
207
  end
190
208
  end
191
209
  end
@@ -194,13 +212,13 @@ class TestNotifier < Test::Unit::TestCase
194
212
  @sender.expects(:send_datagrams).with do |datagrams|
195
213
  datagrams.is_a?(Array) && datagrams[0].is_a?(String)
196
214
  end
197
- @notifier.notify!({ '_version' => '1.0', '_short_message' => 'message' })
215
+ @notifier.notify!({ 'version' => '1.0', 'short_message' => 'message' })
198
216
  end
199
217
 
200
218
  GELF::Levels.constants.each do |const|
201
219
  should "call notify with level #{const} from method name" do
202
- @notifier.expects(:notify_with_level).with(GELF.const_get(const), { '_version' => '1.0', '_short_message' => 'message' })
203
- @notifier.__send__(const.downcase, { '_version' => '1.0', '_short_message' => 'message' })
220
+ @notifier.expects(:notify_with_level).with(GELF.const_get(const), { 'version' => '1.0', 'short_message' => 'message' })
221
+ @notifier.__send__(const.downcase, { 'version' => '1.0', 'short_message' => 'message' })
204
222
  end
205
223
  end
206
224
 
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gelf
3
3
  version: !ruby/object:Gem::Version
4
- hash: -1420906252
5
4
  prerelease: true
6
5
  segments:
7
6
  - 1
8
7
  - 1
9
8
  - 0
10
- - gamma1
11
- version: 1.1.0.gamma1
9
+ - rc1
10
+ version: 1.1.0.rc1
12
11
  platform: ruby
13
12
  authors:
14
13
  - Aleksey Palazhchenko
@@ -17,7 +16,7 @@ autorequire:
17
16
  bindir: bin
18
17
  cert_chain: []
19
18
 
20
- date: 2010-12-09 00:00:00 +03:00
19
+ date: 2011-01-08 00:00:00 +01:00
21
20
  default_executable:
22
21
  dependencies:
23
22
  - !ruby/object:Gem::Dependency
@@ -28,7 +27,6 @@ dependencies:
28
27
  requirements:
29
28
  - - ">="
30
29
  - !ruby/object:Gem::Version
31
- hash: 3
32
30
  segments:
33
31
  - 0
34
32
  version: "0"
@@ -42,7 +40,6 @@ dependencies:
42
40
  requirements:
43
41
  - - ">="
44
42
  - !ruby/object:Gem::Version
45
- hash: 3
46
43
  segments:
47
44
  - 0
48
45
  version: "0"
@@ -56,7 +53,6 @@ dependencies:
56
53
  requirements:
57
54
  - - ">="
58
55
  - !ruby/object:Gem::Version
59
- hash: 3
60
56
  segments:
61
57
  - 0
62
58
  version: "0"
@@ -107,7 +103,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
103
  requirements:
108
104
  - - ">="
109
105
  - !ruby/object:Gem::Version
110
- hash: 3
111
106
  segments:
112
107
  - 0
113
108
  version: "0"
@@ -116,7 +111,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
111
  requirements:
117
112
  - - ">"
118
113
  - !ruby/object:Gem::Version
119
- hash: 25
120
114
  segments:
121
115
  - 1
122
116
  - 3
@@ -131,8 +125,8 @@ specification_version: 3
131
125
  summary: Library to send GELF messages to Graylog2 logging server.
132
126
  test_files:
133
127
  - test/helper.rb
134
- - test/test_deprecations.rb
135
128
  - test/test_logger.rb
136
129
  - test/test_notifier.rb
137
- - test/test_ruby_sender.rb
138
130
  - test/test_severity.rb
131
+ - test/test_ruby_sender.rb
132
+ - test/test_deprecations.rb