fluent-plugin-scalyr 0.8.10 → 0.8.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #
2
4
  # Scalyr Output Plugin for Fluentd
3
5
  #
@@ -15,21 +17,110 @@
15
17
  # See the License for the specific language governing permissions and
16
18
  # limitations under the License.
17
19
 
18
-
19
- require 'helper'
20
+ require "helper"
21
+ require "flexmock/test_unit"
20
22
 
21
23
  class SSLVerifyTest < Scalyr::ScalyrOutTest
24
+ def test_good_ssl_certificates
25
+ d = create_driver CONFIG
26
+
27
+ d.run(default_tag: "test") do
28
+ time = event_time("2015-04-01 10:00:00 UTC")
29
+ d.feed(time, {"a" => 1})
30
+
31
+ logger = flexmock($log)
32
+ logger.should_receive(:warn).times(0).with(/certificate verification failed/i)
33
+ logger.should_receive(:warn).times(0).with(/certificate verify failed/i)
34
+ logger.should_receive(:warn).once.with(/discarding buffer/i)
35
+ end
36
+ end
37
+
38
+ def test_no_ssl_certificates
39
+ d = create_driver %(
40
+ api_write_token test_token
41
+ )
42
+
43
+ d.run(default_tag: "test") do
44
+ time = event_time("2015-04-01 10:00:00 UTC")
45
+ d.feed(time, {"a" => 1})
46
+
47
+ logger = flexmock($log)
48
+ logger.should_receive(:warn).times(0).with(/certificate verification failed/i)
49
+ logger.should_receive(:warn).times(0).with(/certificate verify failed/i)
50
+ logger.should_receive(:warn).once.with(/discarding buffer/i)
51
+ end
52
+ end
53
+
22
54
  def test_bad_ssl_certificates
23
- d = create_driver CONFIG + 'ssl_ca_bundle_path /home/invalid'
55
+ d = create_driver CONFIG + "ssl_ca_bundle_path /home/invalid"
56
+
57
+ d.run(default_tag: "test") do
58
+ time = event_time("2015-04-01 10:00:00 UTC")
59
+ d.feed(time, {"a" => 1})
60
+
61
+ logger = flexmock($log)
62
+ logger.should_receive(:warn).once.with(/certificate verification failed/i)
63
+ logger.should_receive(:warn).once.with(/certificate verify failed/i)
64
+ logger.should_receive(:warn).once.with(/discarding buffer/i)
65
+ end
66
+ end
67
+
68
+ def test_bad_system_ssl_certificates
69
+ `sudo mv #{OpenSSL::X509::DEFAULT_CERT_FILE} /tmp/system_cert.pem`
70
+ `sudo mv #{OpenSSL::X509::DEFAULT_CERT_DIR} /tmp/system_certs`
71
+
72
+ begin
73
+ d = create_driver %(
74
+ api_write_token test_token
75
+ )
76
+
77
+ d.run(default_tag: "test") do
78
+ time = event_time("2015-04-01 10:00:00 UTC")
79
+ d.feed(time, {"a" => 1})
80
+
81
+ logger = flexmock($log)
82
+ logger.should_receive(:warn).once.with(/certificate verification failed/i)
83
+ logger.should_receive(:warn).once.with(/certificate verify failed/i)
84
+ logger.should_receive(:warn).once.with(/discarding buffer/i)
85
+ end
86
+ ensure
87
+ `sudo mv /tmp/system_certs #{OpenSSL::X509::DEFAULT_CERT_DIR}`
88
+ `sudo mv /tmp/system_cert.pem #{OpenSSL::X509::DEFAULT_CERT_FILE}`
89
+ end
90
+ end
91
+
92
+ def test_hostname_verification
93
+ agent_scalyr_com_ip = `dig +short agent.scalyr.com 2> /dev/null | tail -n 1 | tr -d "\n"`
94
+ if agent_scalyr_com_ip.empty?
95
+ agent_scalyr_com_ip = `getent hosts agent.scalyr.com \
96
+ | awk '{ print $1 }' | tail -n 1 | tr -d "\n"`
97
+ end
98
+ mock_host = "invalid.mitm.should.fail.test.agent.scalyr.com"
99
+ etc_hosts_entry = "#{agent_scalyr_com_ip} #{mock_host}"
100
+ hosts_bkp = `sudo cat /etc/hosts`
101
+ hosts_bkp = hosts_bkp.chomp
102
+ # Add mock /etc/hosts entry and config scalyr_server entry
103
+ `echo "#{etc_hosts_entry}" | sudo tee -a /etc/hosts`
24
104
 
25
- time = Time.parse("2015-04-01 10:00:00 UTC").to_i
26
- d.emit( { "a" => 1 }, time )
105
+ begin
106
+ d = create_driver %(
107
+ api_write_token test_token
108
+ scalyr_server https://invalid.mitm.should.fail.test.agent.scalyr.com:443
109
+ )
27
110
 
28
- logger = flexmock( $log )
29
- logger.should_receive( :warn ).with( /certificate verification failed/i )
30
- logger.should_receive( :warn ).with( /certificate verify failed/i )
31
- logger.should_receive( :warn ).with( /discarding buffer/i )
111
+ d.run(default_tag: "test") do
112
+ time = event_time("2015-04-01 10:00:00 UTC")
113
+ d.feed(time, {"a" => 1})
32
114
 
33
- d.run
115
+ logger = flexmock($log)
116
+ logger.should_receive(:warn).once.with(/certificate verification failed/i)
117
+ logger.should_receive(:warn).once.with(/certificate verify failed/i)
118
+ logger.should_receive(:warn).once.with(/discarding buffer/i)
119
+ end
120
+ ensure
121
+ # Clean up the hosts file
122
+ `sudo truncate -s 0 /etc/hosts`
123
+ `echo "#{hosts_bkp}" | sudo tee -a /etc/hosts`
124
+ end
34
125
  end
35
126
  end
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Scalyr Output Plugin for Fluentd
5
+ #
6
+ # Copyright (C) 2015 Scalyr, Inc.
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+
20
+ require "helper"
21
+ require "flexmock/test_unit"
22
+
23
+ require "fluent/plugin/scalyr_utils"
24
+ include Scalyr # rubocop:disable Style/MixinUsage
25
+
26
+ module Scalyr
27
+ class UtilsTest < Test::Unit::TestCase
28
+ def test_sanitize_and_reencode_value_simple_types
29
+ # Simple value - string
30
+ result = sanitize_and_reencode_value("test foo")
31
+ assert_equal("test foo", result)
32
+
33
+ # Simple value - string with bad unicode sequences
34
+ result = sanitize_and_reencode_value("test \xC2 foo \xC2 bar")
35
+ assert_equal("test <?> foo <?> bar", result)
36
+
37
+ # Simple value - int
38
+ result = sanitize_and_reencode_value(100)
39
+ assert_equal(100, result)
40
+
41
+ # Simple value - nill
42
+ result = sanitize_and_reencode_value(nil)
43
+ assert_equal(nil, result)
44
+
45
+ # Simple value - bool
46
+ result = sanitize_and_reencode_value(true)
47
+ assert_equal(true, result)
48
+
49
+ result = sanitize_and_reencode_value(false)
50
+ assert_equal(false, result)
51
+ end
52
+
53
+ def test_sanitize_and_reencode_value_complex_nested_types
54
+ actual = [1, 2, "a", "b", nil, "7", "\xC2"]
55
+ expected = [1, 2, "a", "b", nil, "7", "<?>"]
56
+
57
+ result = sanitize_and_reencode_value(actual)
58
+ assert_equal(expected, result)
59
+
60
+ actual = [1, 2, "a", "b", nil, "7",
61
+ [8, 9, [10, "\xC2"]],
62
+ {"a" => 1, "b" => "\xC2"}]
63
+ expected = [1, 2, "a", "b", nil, "7",
64
+ [8, 9, [10, "<?>"]],
65
+ {"a" => 1, "b" => "<?>"}]
66
+
67
+ result = sanitize_and_reencode_value(actual)
68
+ assert_equal(expected, result)
69
+
70
+ actual = {
71
+ "a" => "1",
72
+ "b" => {
73
+ "c" => "\xC2",
74
+ "d" => "e",
75
+ "f" => nil,
76
+ "g" => {
77
+ "h" => "bar \xC2",
78
+ "b" => 3,
79
+ "l" => [1, 2, "foo\xC2", 3, 4, 5]
80
+ }
81
+ }
82
+ }
83
+ expected = {
84
+ "a" => "1",
85
+ "b" => {
86
+ "c" => "<?>",
87
+ "d" => "e",
88
+ "f" => nil,
89
+ "g" => {
90
+ "h" => "bar <?>",
91
+ "b" => 3,
92
+ "l" => [1, 2, "foo<?>", 3, 4, 5]
93
+ }
94
+ }
95
+ }
96
+ result = sanitize_and_reencode_value(actual)
97
+ assert_equal(expected, result)
98
+ end
99
+ end
100
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-scalyr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.10
4
+ version: 0.8.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Imron Alston
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-24 00:00:00.000000000 Z
11
+ date: 2022-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.9.25
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.9.25
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: fluentd
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -30,20 +44,6 @@ dependencies:
30
44
  - - "<"
31
45
  - !ruby/object:Gem::Version
32
46
  version: '2'
33
- - !ruby/object:Gem::Dependency
34
- name: ffi
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - '='
38
- - !ruby/object:Gem::Version
39
- version: 1.9.25
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - '='
45
- - !ruby/object:Gem::Version
46
- version: 1.9.25
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rbzip2
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -73,61 +73,75 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: rake
76
+ name: bundler
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.9'
81
+ version: '1.9'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0.9'
88
+ version: '1.9'
89
89
  - !ruby/object:Gem::Dependency
90
- name: test-unit
90
+ name: flexmock
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '3.0'
95
+ version: '1.2'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '3.0'
102
+ version: '1.2'
103
103
  - !ruby/object:Gem::Dependency
104
- name: flexmock
104
+ name: rake
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '1.2'
109
+ version: '0.9'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '1.2'
116
+ version: '0.9'
117
117
  - !ruby/object:Gem::Dependency
118
- name: bundler
118
+ name: rubocop
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '1.9'
123
+ version: '0.4'
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '1.9'
130
+ version: '0.4'
131
+ - !ruby/object:Gem::Dependency
132
+ name: test-unit
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '3.0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '3.0'
131
145
  description: Sends log data collected by fluentd to Scalyr (http://www.scalyr.com)
132
146
  email: imron@scalyr.com
133
147
  executables: []
@@ -143,12 +157,14 @@ files:
143
157
  - fluent-plugin-scalyr.gemspec
144
158
  - fluent.conf.sample
145
159
  - lib/fluent/plugin/out_scalyr.rb
146
- - lib/fluent/plugin/scalyr-exceptions.rb
160
+ - lib/fluent/plugin/scalyr_exceptions.rb
161
+ - lib/fluent/plugin/scalyr_utils.rb
147
162
  - test/helper.rb
148
163
  - test/test_config.rb
149
164
  - test/test_events.rb
150
165
  - test/test_handle_response.rb
151
166
  - test/test_ssl_verify.rb
167
+ - test/test_utils.rb
152
168
  homepage: https://github.com/scalyr/scalyr-fluentd
153
169
  licenses:
154
170
  - Apache-2.0
@@ -168,13 +184,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
184
  - !ruby/object:Gem::Version
169
185
  version: '0'
170
186
  requirements: []
171
- rubygems_version: 3.0.6
187
+ rubygems_version: 3.0.3
172
188
  signing_key:
173
189
  specification_version: 4
174
190
  summary: Scalyr plugin for fluentd
175
191
  test_files:
176
- - test/test_handle_response.rb
177
- - test/test_ssl_verify.rb
192
+ - test/helper.rb
178
193
  - test/test_config.rb
179
194
  - test/test_events.rb
180
- - test/helper.rb
195
+ - test/test_handle_response.rb
196
+ - test/test_ssl_verify.rb
197
+ - test/test_utils.rb