fluent-plugin-scalyr 0.8.10 → 0.8.15

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,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