fluent-plugin-google-cloud 0.8.6 → 0.10.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +46 -34
- data/fluent-plugin-google-cloud.gemspec +4 -4
- data/lib/fluent/plugin/common.rb +386 -0
- data/lib/fluent/plugin/filter_analyze_config.rb +42 -4
- data/lib/fluent/plugin/out_google_cloud.rb +81 -360
- data/test/plugin/asserts.rb +2 -0
- data/test/plugin/base_test.rb +69 -139
- data/test/plugin/constants.rb +60 -2
- data/test/plugin/test_driver.rb +1 -14
- data/test/plugin/test_filter_analyze_config.rb +143 -130
- data/test/plugin/utils.rb +147 -0
- metadata +11 -8
data/test/plugin/asserts.rb
CHANGED
@@ -12,6 +12,8 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
require 'prometheus/client'
|
16
|
+
|
15
17
|
# Additional assert functions.
|
16
18
|
module Asserts
|
17
19
|
# For an optional field with default values, Protobuf omits the field when it
|
data/test/plugin/base_test.rb
CHANGED
@@ -19,11 +19,12 @@ Coveralls.wear!
|
|
19
19
|
require 'google/apis'
|
20
20
|
require 'helper'
|
21
21
|
require 'mocha/test_unit'
|
22
|
-
require 'webmock/test_unit'
|
23
22
|
require 'prometheus/client'
|
23
|
+
require 'webmock/test_unit'
|
24
24
|
|
25
25
|
require_relative 'asserts'
|
26
26
|
require_relative 'constants'
|
27
|
+
require_relative 'utils'
|
27
28
|
|
28
29
|
module Monitoring
|
29
30
|
# Prevent OpenCensus from writing to the network.
|
@@ -38,21 +39,11 @@ end
|
|
38
39
|
module BaseTest
|
39
40
|
include Asserts
|
40
41
|
include Constants
|
42
|
+
include Utils
|
41
43
|
|
42
44
|
def setup
|
43
45
|
Fluent::Test.setup
|
44
|
-
|
45
|
-
ENV.delete(CREDENTIALS_PATH_ENV_VAR)
|
46
|
-
# service account env.
|
47
|
-
ENV.delete(PRIVATE_KEY_VAR)
|
48
|
-
ENV.delete(CLIENT_EMAIL_VAR)
|
49
|
-
ENV.delete(PROJECT_ID_VAR)
|
50
|
-
# authorized_user env.
|
51
|
-
ENV.delete(CLIENT_ID_VAR)
|
52
|
-
ENV.delete(CLIENT_SECRET_VAR)
|
53
|
-
ENV.delete(REFRESH_TOKEN_VAR)
|
54
|
-
# home var, which is used to find $HOME/.gcloud/...
|
55
|
-
ENV.delete('HOME')
|
46
|
+
delete_env_vars
|
56
47
|
|
57
48
|
# Unregister Prometheus metrics.
|
58
49
|
registry = Prometheus::Client.registry
|
@@ -62,7 +53,7 @@ module BaseTest
|
|
62
53
|
registry.unregister(:stackdriver_dropped_entries_count)
|
63
54
|
registry.unregister(:stackdriver_retried_entries_count)
|
64
55
|
|
65
|
-
setup_auth_stubs
|
56
|
+
setup_auth_stubs('https://www.googleapis.com/oauth2/v4/token')
|
66
57
|
@logs_sent = []
|
67
58
|
end
|
68
59
|
|
@@ -107,7 +98,7 @@ module BaseTest
|
|
107
98
|
|
108
99
|
def test_configure_metadata_missing_parts_on_other_platforms
|
109
100
|
setup_no_metadata_service_stubs
|
110
|
-
|
101
|
+
Common::Utils::CredentialsInfo.stubs(:project_id).returns(nil)
|
111
102
|
[[CONFIG_MISSING_METADATA_PROJECT_ID, ['project_id'], false],
|
112
103
|
[CONFIG_MISSING_METADATA_ZONE, [], true],
|
113
104
|
[CONFIG_MISSING_METADATA_VM_ID, [], true],
|
@@ -131,8 +122,8 @@ module BaseTest
|
|
131
122
|
|
132
123
|
def test_configure_ignores_unknown_monitoring_type
|
133
124
|
# Verify that driver creation succeeds when monitoring type is not
|
134
|
-
# "prometheus" (in which case, we simply don't record
|
135
|
-
# and that the counters are set to nil.
|
125
|
+
# "prometheus" or "opencensus" (in which case, we simply don't record
|
126
|
+
# metrics), and that the counters are set to nil.
|
136
127
|
setup_gce_metadata_stubs
|
137
128
|
create_driver(CONFIG_UNKNOWN_MONITORING_TYPE)
|
138
129
|
assert_nil(Prometheus::Client.registry.get(
|
@@ -145,6 +136,67 @@ module BaseTest
|
|
145
136
|
:stackdriver_dropped_entries_count))
|
146
137
|
assert_nil(Prometheus::Client.registry.get(
|
147
138
|
:stackdriver_retried_entries_count))
|
139
|
+
assert_nil(OpenCensus::Stats::MeasureRegistry.get(
|
140
|
+
Monitoring::MetricTranslator.new(
|
141
|
+
:stackdriver_successful_requests_count, {})))
|
142
|
+
assert_nil(OpenCensus::Stats::MeasureRegistry.get(
|
143
|
+
Monitoring::MetricTranslator.new(
|
144
|
+
:stackdriver_failed_requests_count, {})))
|
145
|
+
assert_nil(OpenCensus::Stats::MeasureRegistry.get(
|
146
|
+
Monitoring::MetricTranslator.new(
|
147
|
+
:stackdriver_ingested_entries_count, {})))
|
148
|
+
assert_nil(OpenCensus::Stats::MeasureRegistry.get(
|
149
|
+
Monitoring::MetricTranslator.new(
|
150
|
+
:stackdriver_dropped_entries_count, {})))
|
151
|
+
assert_nil(OpenCensus::Stats::MeasureRegistry.get(
|
152
|
+
Monitoring::MetricTranslator.new(
|
153
|
+
:stackdriver_retried_entries_count, {})))
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_configure_uses_metrics_resource
|
157
|
+
setup_gce_metadata_stubs
|
158
|
+
[CONFIG_METRICS_RESOURCE_JSON,
|
159
|
+
CONFIG_METRICS_RESOURCE_HASH,
|
160
|
+
CONFIG_METRICS_RESOURCE_JSON_HASH
|
161
|
+
].each_with_index do |config, index|
|
162
|
+
d = create_driver(config)
|
163
|
+
assert_equal 'custom_resource', d.instance.monitoring_resource.type, \
|
164
|
+
"Index #{index}"
|
165
|
+
assert_equal '123', d.instance.monitoring_resource.labels['label1'], \
|
166
|
+
"Index #{index}"
|
167
|
+
assert_equal 'abc', d.instance.monitoring_resource.labels['label2'], \
|
168
|
+
"Index #{index}"
|
169
|
+
assert_true d.instance.instance_variable_get(:@enable_monitoring)
|
170
|
+
registry = d.instance.instance_variable_get(:@registry)
|
171
|
+
assert_not_nil registry
|
172
|
+
exporter = registry.instance_variable_get(:@exporter)
|
173
|
+
assert_equal 'custom_resource', exporter.resource_type, "Index #{index}"
|
174
|
+
assert_equal({ 'label1' => '123', 'label2' => 'abc' },
|
175
|
+
exporter.resource_labels, "Index #{index}")
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_configure_metrics_resource_validation
|
180
|
+
setup_gce_metadata_stubs
|
181
|
+
{
|
182
|
+
CONFIG_METRICS_RESOURCE_JSON_NO_TYPE => /type must be a string/,
|
183
|
+
CONFIG_METRICS_RESOURCE_JSON_BAD_LABELS => /labels must be a hash/,
|
184
|
+
CONFIG_METRICS_RESOURCE_JSON_BAD_KEYS =>
|
185
|
+
/unrecognized keys: \[:random\]/,
|
186
|
+
CONFIG_METRICS_RESOURCE_JSON_BAD_KEYS_LABELS =>
|
187
|
+
/unrecognized keys: \[:"labels\.random"\]/,
|
188
|
+
CONFIG_METRICS_RESOURCE_JSON_BAD_KEYS_NO_LABELS =>
|
189
|
+
/unrecognized keys: \[:random\]/
|
190
|
+
}.each_with_index do |(config, pattern), index|
|
191
|
+
begin
|
192
|
+
create_driver(config)
|
193
|
+
assert false,
|
194
|
+
"Invalid config at index #{index} should have raised an error."
|
195
|
+
rescue Fluent::ConfigError => error
|
196
|
+
assert error.message.match?(pattern), \
|
197
|
+
"Index #{index} failed: got #{error.message}."
|
198
|
+
end
|
199
|
+
end
|
148
200
|
end
|
149
201
|
|
150
202
|
def test_metadata_loading
|
@@ -1925,116 +1977,6 @@ module BaseTest
|
|
1925
1977
|
|
1926
1978
|
private
|
1927
1979
|
|
1928
|
-
def stub_metadata_request(metadata_path, response_body)
|
1929
|
-
stub_request(:get, 'http://169.254.169.254/computeMetadata/v1/' +
|
1930
|
-
metadata_path)
|
1931
|
-
.to_return(body: response_body, status: 200,
|
1932
|
-
headers: { 'Content-Length' => response_body.length })
|
1933
|
-
end
|
1934
|
-
|
1935
|
-
def setup_no_metadata_service_stubs
|
1936
|
-
# Simulate a machine with no metadata service present
|
1937
|
-
stub_request(:any, %r{http://169.254.169.254/.*})
|
1938
|
-
.to_raise(Errno::EHOSTUNREACH)
|
1939
|
-
end
|
1940
|
-
|
1941
|
-
def setup_gce_metadata_stubs
|
1942
|
-
# Stub the root, used for platform detection by the plugin and 'googleauth'.
|
1943
|
-
stub_request(:get, 'http://169.254.169.254')
|
1944
|
-
.to_return(status: 200, headers: { 'Metadata-Flavor' => 'Google' })
|
1945
|
-
|
1946
|
-
# Create stubs for all the GCE metadata lookups the agent needs to make.
|
1947
|
-
stub_metadata_request('project/project-id', PROJECT_ID)
|
1948
|
-
stub_metadata_request('instance/zone', FULLY_QUALIFIED_ZONE)
|
1949
|
-
stub_metadata_request('instance/id', VM_ID)
|
1950
|
-
stub_metadata_request('instance/attributes/',
|
1951
|
-
"attribute1\nattribute2\nattribute3")
|
1952
|
-
|
1953
|
-
# Used by 'googleauth' to fetch the default service account credentials.
|
1954
|
-
stub_request(:get, 'http://169.254.169.254/computeMetadata/v1/' \
|
1955
|
-
'instance/service-accounts/default/token')
|
1956
|
-
.to_return(body: %({"access_token": "#{FAKE_AUTH_TOKEN}"}),
|
1957
|
-
status: 200,
|
1958
|
-
headers: { 'Content-Length' => FAKE_AUTH_TOKEN.length,
|
1959
|
-
'Content-Type' => 'application/json' })
|
1960
|
-
end
|
1961
|
-
|
1962
|
-
def setup_ec2_metadata_stubs
|
1963
|
-
# Stub the root, used for platform detection.
|
1964
|
-
stub_request(:get, 'http://169.254.169.254')
|
1965
|
-
.to_return(status: 200, headers: { 'Server' => 'EC2ws' })
|
1966
|
-
|
1967
|
-
# Stub the identity document lookup made by the agent.
|
1968
|
-
stub_request(:get, 'http://169.254.169.254/latest/dynamic/' \
|
1969
|
-
'instance-identity/document')
|
1970
|
-
.to_return(body: EC2_IDENTITY_DOCUMENT, status: 200,
|
1971
|
-
headers: { 'Content-Length' => EC2_IDENTITY_DOCUMENT.length })
|
1972
|
-
end
|
1973
|
-
|
1974
|
-
def setup_auth_stubs
|
1975
|
-
# Used when loading credentials from a JSON file.
|
1976
|
-
stub_request(:post, 'https://www.googleapis.com/oauth2/v4/token')
|
1977
|
-
.with(body: hash_including(grant_type: AUTH_GRANT_TYPE))
|
1978
|
-
.to_return(body: %({"access_token": "#{FAKE_AUTH_TOKEN}"}),
|
1979
|
-
status: 200,
|
1980
|
-
headers: { 'Content-Length' => FAKE_AUTH_TOKEN.length,
|
1981
|
-
'Content-Type' => 'application/json' })
|
1982
|
-
|
1983
|
-
stub_request(:post, 'https://www.googleapis.com/oauth2/v4/token')
|
1984
|
-
.with(body: hash_including(grant_type: 'refresh_token'))
|
1985
|
-
.to_return(body: %({"access_token": "#{FAKE_AUTH_TOKEN}"}),
|
1986
|
-
status: 200,
|
1987
|
-
headers: { 'Content-Length' => FAKE_AUTH_TOKEN.length,
|
1988
|
-
'Content-Type' => 'application/json' })
|
1989
|
-
end
|
1990
|
-
|
1991
|
-
def setup_managed_vm_metadata_stubs
|
1992
|
-
stub_metadata_request(
|
1993
|
-
'instance/attributes/',
|
1994
|
-
"attribute1\ngae_backend_name\ngae_backend_version\nlast_attribute")
|
1995
|
-
stub_metadata_request('instance/attributes/gae_backend_name',
|
1996
|
-
MANAGED_VM_BACKEND_NAME)
|
1997
|
-
stub_metadata_request('instance/attributes/gae_backend_version',
|
1998
|
-
MANAGED_VM_BACKEND_VERSION)
|
1999
|
-
end
|
2000
|
-
|
2001
|
-
def setup_k8s_metadata_stubs(should_respond = true)
|
2002
|
-
if should_respond
|
2003
|
-
stub_metadata_request(
|
2004
|
-
'instance/attributes/',
|
2005
|
-
"attribute1\ncluster-location\ncluster-name\nlast_attribute")
|
2006
|
-
stub_metadata_request('instance/attributes/cluster-location',
|
2007
|
-
K8S_LOCATION2)
|
2008
|
-
stub_metadata_request('instance/attributes/cluster-name',
|
2009
|
-
K8S_CLUSTER_NAME)
|
2010
|
-
else
|
2011
|
-
['cluster-location', 'cluster-name'].each do |metadata_name|
|
2012
|
-
stub_request(:get, %r{.*instance/attributes/#{metadata_name}.*})
|
2013
|
-
.to_return(status: 404,
|
2014
|
-
body: 'The requested URL /computeMetadata/v1/instance/' \
|
2015
|
-
"attributes/#{metadata_name} was not found on this" \
|
2016
|
-
' server.')
|
2017
|
-
end
|
2018
|
-
end
|
2019
|
-
end
|
2020
|
-
|
2021
|
-
def setup_dataproc_metadata_stubs
|
2022
|
-
stub_metadata_request(
|
2023
|
-
'instance/attributes/',
|
2024
|
-
"attribute1\ndataproc-cluster-uuid\ndataproc-cluster-name")
|
2025
|
-
stub_metadata_request('instance/attributes/dataproc-cluster-name',
|
2026
|
-
DATAPROC_CLUSTER_NAME)
|
2027
|
-
stub_metadata_request('instance/attributes/dataproc-cluster-uuid',
|
2028
|
-
DATAPROC_CLUSTER_UUID)
|
2029
|
-
stub_metadata_request('instance/attributes/dataproc-region',
|
2030
|
-
DATAPROC_REGION)
|
2031
|
-
end
|
2032
|
-
|
2033
|
-
def clear_metrics
|
2034
|
-
Prometheus::Client.registry.instance_variable_set('@metrics', {})
|
2035
|
-
OpenCensus::Stats.ensure_recorder.clear_stats
|
2036
|
-
end
|
2037
|
-
|
2038
1980
|
# Provide a stub context that initializes @logs_sent, executes the block and
|
2039
1981
|
# resets WebMock at the end.
|
2040
1982
|
def new_stub_context
|
@@ -2076,18 +2018,6 @@ module BaseTest
|
|
2076
2018
|
}
|
2077
2019
|
end
|
2078
2020
|
|
2079
|
-
def gke_container_log_entry(log)
|
2080
|
-
{
|
2081
|
-
log: log,
|
2082
|
-
LOCAL_RESOURCE_ID_KEY =>
|
2083
|
-
"#{CONTAINER_LOCAL_RESOURCE_ID_PREFIX}.#{CONTAINER_NAMESPACE_ID}" \
|
2084
|
-
".#{K8S_POD_NAME}.#{K8S_CONTAINER_NAME}"
|
2085
|
-
}
|
2086
|
-
end
|
2087
|
-
|
2088
|
-
# TODO(qingling128): Temporary fallback for metadata agent restarts.
|
2089
|
-
# k8s resources.
|
2090
|
-
|
2091
2021
|
def k8s_container_log_entry(log,
|
2092
2022
|
local_resource_id: K8S_LOCAL_RESOURCE_ID)
|
2093
2023
|
{
|
data/test/plugin/constants.rb
CHANGED
@@ -45,7 +45,7 @@ end
|
|
45
45
|
|
46
46
|
# Constants used by unit tests for Google Cloud Logging plugin.
|
47
47
|
module Constants
|
48
|
-
include
|
48
|
+
include Common::ServiceConstants
|
49
49
|
include Fluent::GoogleCloudOutput::ConfigConstants
|
50
50
|
include Fluent::GoogleCloudOutput::InternalConstants
|
51
51
|
|
@@ -433,6 +433,56 @@ module Constants
|
|
433
433
|
monitoring_type not_prometheus
|
434
434
|
).freeze
|
435
435
|
|
436
|
+
# rubocop:disable Metrics/LineLength
|
437
|
+
CONFIG_METRICS_RESOURCE_JSON = %(
|
438
|
+
enable_monitoring true
|
439
|
+
monitoring_type opencensus
|
440
|
+
metrics_resource {"type":"custom_resource","labels":{"label1":"123","label2":"abc"}}
|
441
|
+
).freeze
|
442
|
+
|
443
|
+
CONFIG_METRICS_RESOURCE_HASH = %(
|
444
|
+
enable_monitoring true
|
445
|
+
monitoring_type opencensus
|
446
|
+
metrics_resource type:custom_resource, labels.label1:123, labels.label2:abc
|
447
|
+
).freeze
|
448
|
+
|
449
|
+
CONFIG_METRICS_RESOURCE_JSON_HASH = %(
|
450
|
+
enable_monitoring true
|
451
|
+
monitoring_type opencensus
|
452
|
+
metrics_resource {"type":"custom_resource","labels.label1":"123","labels.label2":"abc"}
|
453
|
+
).freeze
|
454
|
+
|
455
|
+
CONFIG_METRICS_RESOURCE_JSON_NO_TYPE = %(
|
456
|
+
enable_monitoring true
|
457
|
+
monitoring_type opencensus
|
458
|
+
metrics_resource {"labels":{"label1":"123","label2":"abc"}}
|
459
|
+
).freeze
|
460
|
+
|
461
|
+
CONFIG_METRICS_RESOURCE_JSON_BAD_LABELS = %(
|
462
|
+
enable_monitoring true
|
463
|
+
monitoring_type opencensus
|
464
|
+
metrics_resource {"type":"custom_resource","labels":"123"}
|
465
|
+
).freeze
|
466
|
+
|
467
|
+
CONFIG_METRICS_RESOURCE_JSON_BAD_KEYS = %(
|
468
|
+
enable_monitoring true
|
469
|
+
monitoring_type opencensus
|
470
|
+
metrics_resource {"type":"custom_resource","labels":{"label1":"123"},"random":"x"}
|
471
|
+
).freeze
|
472
|
+
|
473
|
+
CONFIG_METRICS_RESOURCE_JSON_BAD_KEYS_LABELS = %(
|
474
|
+
enable_monitoring true
|
475
|
+
monitoring_type opencensus
|
476
|
+
metrics_resource {"type":"custom_resource","labels":{"label1":"123"},"labels.random":"x"}
|
477
|
+
).freeze
|
478
|
+
|
479
|
+
CONFIG_METRICS_RESOURCE_JSON_BAD_KEYS_NO_LABELS = %(
|
480
|
+
enable_monitoring true
|
481
|
+
monitoring_type opencensus
|
482
|
+
metrics_resource {"type":"custom_resource","labels.label1":"123","random":"x"}
|
483
|
+
).freeze
|
484
|
+
# rubocop:enable Metrics/LineLength
|
485
|
+
|
436
486
|
# For statusz.
|
437
487
|
CONFIG_STATUSZ = %(
|
438
488
|
statusz_port 5678
|
@@ -472,11 +522,19 @@ module Constants
|
|
472
522
|
).freeze
|
473
523
|
|
474
524
|
# For analyze_config.
|
475
|
-
|
525
|
+
CONFIG_ANALYZE_CONFIG_PROMETHEUS = %(
|
526
|
+
google_fluentd_config_path \
|
527
|
+
test/plugin/data/google-fluentd-custom.conf
|
528
|
+
google_fluentd_baseline_config_path \
|
529
|
+
test/plugin/data/google-fluentd-baseline.conf
|
530
|
+
monitoring_type prometheus
|
531
|
+
).freeze
|
532
|
+
CONFIG_ANALYZE_CONFIG_OPENCENSUS = %(
|
476
533
|
google_fluentd_config_path \
|
477
534
|
test/plugin/data/google-fluentd-custom.conf
|
478
535
|
google_fluentd_baseline_config_path \
|
479
536
|
test/plugin/data/google-fluentd-baseline.conf
|
537
|
+
monitoring_type opencensus
|
480
538
|
).freeze
|
481
539
|
|
482
540
|
# Service configurations for various services.
|
data/test/plugin/test_driver.rb
CHANGED
@@ -16,19 +16,6 @@ require 'fluent/engine'
|
|
16
16
|
require 'fluent/event'
|
17
17
|
require 'fluent/test/input_test'
|
18
18
|
|
19
|
-
module Fluent
|
20
|
-
module Test
|
21
|
-
# rubocop:disable Style/ClassVars
|
22
|
-
class BufferedOutputTestDriver < InputTestDriver
|
23
|
-
@@run_method = BufferedOutputTestDriver.instance_method(:run)
|
24
|
-
def run(num_waits = 0)
|
25
|
-
@@run_method.bind(self).call(num_waits)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
# rubocop:enable Style/ClassVars
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
19
|
module Fluent
|
33
20
|
module Test
|
34
21
|
# Similar to the standard BufferedOutputTestDriver, but allows multiple tags
|
@@ -46,7 +33,7 @@ module Fluent
|
|
46
33
|
self
|
47
34
|
end
|
48
35
|
|
49
|
-
def run(num_waits =
|
36
|
+
def run(num_waits = 10)
|
50
37
|
result = nil
|
51
38
|
super(num_waits) do
|
52
39
|
chunk = @instance.buffer.generate_chunk(
|
@@ -15,6 +15,7 @@
|
|
15
15
|
require_relative '../helper'
|
16
16
|
require_relative 'asserts'
|
17
17
|
require_relative 'constants'
|
18
|
+
require_relative 'utils'
|
18
19
|
|
19
20
|
require 'fluent/test/driver/filter'
|
20
21
|
require 'fluent/plugin/filter_analyze_config'
|
@@ -24,11 +25,13 @@ class FilterAnalyzeConfigTest < Test::Unit::TestCase
|
|
24
25
|
include Asserts
|
25
26
|
include Constants
|
26
27
|
include Fluent::AnalyzeConfigFilter::Constants
|
28
|
+
include Utils
|
27
29
|
|
28
30
|
APPLICATION_DEFAULT_CONFIG = ''.freeze
|
29
31
|
|
30
32
|
def setup
|
31
33
|
Fluent::Test.setup
|
34
|
+
delete_env_vars
|
32
35
|
end
|
33
36
|
|
34
37
|
def test_config_file_does_not_exist
|
@@ -39,145 +42,155 @@ class FilterAnalyzeConfigTest < Test::Unit::TestCase
|
|
39
42
|
end
|
40
43
|
|
41
44
|
def test_analyze_config
|
42
|
-
|
45
|
+
setup_auth_stubs('https://oauth2.googleapis.com/token')
|
46
|
+
setup_gce_metadata_stubs
|
47
|
+
[
|
48
|
+
[CONFIG_ANALYZE_CONFIG_PROMETHEUS,
|
49
|
+
method(:assert_prometheus_metric_value)],
|
50
|
+
[CONFIG_ANALYZE_CONFIG_OPENCENSUS,
|
51
|
+
method(:assert_opencensus_metric_value)]
|
52
|
+
].each do |config, assert_metric_value|
|
53
|
+
clear_metrics
|
54
|
+
create_driver(config)
|
43
55
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
56
|
+
# Default plugins, with default config.
|
57
|
+
assert_metric_value.call(
|
58
|
+
:stackdriver_enabled_plugins,
|
59
|
+
1,
|
60
|
+
plugin_name: 'source/syslog/tcp',
|
61
|
+
is_default_plugin: true,
|
62
|
+
has_default_value: true,
|
63
|
+
has_ruby_snippet: false)
|
64
|
+
assert_metric_value.call(
|
65
|
+
:stackdriver_enabled_plugins,
|
66
|
+
1,
|
67
|
+
plugin_name: 'source/tail/apache-access',
|
68
|
+
is_default_plugin: true,
|
69
|
+
has_default_value: true,
|
70
|
+
has_ruby_snippet: false)
|
71
|
+
assert_metric_value.call(
|
72
|
+
:stackdriver_enabled_plugins,
|
73
|
+
1,
|
74
|
+
plugin_name: 'filter/add_insert_ids',
|
75
|
+
is_default_plugin: true,
|
76
|
+
has_default_value: true,
|
77
|
+
has_ruby_snippet: false)
|
66
78
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
79
|
+
# Default plugins, with custom config.
|
80
|
+
assert_metric_value.call(
|
81
|
+
:stackdriver_enabled_plugins,
|
82
|
+
1,
|
83
|
+
plugin_name: 'match/google_cloud',
|
84
|
+
is_default_plugin: true,
|
85
|
+
has_default_value: false,
|
86
|
+
has_ruby_snippet: false)
|
75
87
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
88
|
+
# Custom plugins, some with embedded Ruby.
|
89
|
+
assert_metric_value.call(
|
90
|
+
:stackdriver_enabled_plugins,
|
91
|
+
1,
|
92
|
+
plugin_name: 'filter',
|
93
|
+
is_default_plugin: false,
|
94
|
+
has_default_value: false,
|
95
|
+
has_ruby_snippet: false)
|
96
|
+
assert_metric_value.call(
|
97
|
+
:stackdriver_enabled_plugins,
|
98
|
+
1,
|
99
|
+
plugin_name: 'filter/record_transformer',
|
100
|
+
is_default_plugin: false,
|
101
|
+
has_default_value: false,
|
102
|
+
has_ruby_snippet: true)
|
103
|
+
assert_metric_value.call(
|
104
|
+
:stackdriver_enabled_plugins,
|
105
|
+
1,
|
106
|
+
plugin_name: 'match/stdout',
|
107
|
+
is_default_plugin: false,
|
108
|
+
has_default_value: false,
|
109
|
+
has_ruby_snippet: true)
|
98
110
|
|
99
|
-
|
100
|
-
|
101
|
-
:stackdriver_config_usage,
|
102
|
-
1,
|
103
|
-
plugin_name: 'google_cloud',
|
104
|
-
param: 'adjust_invalid_timestamps',
|
105
|
-
is_present: true,
|
106
|
-
has_default_value: true)
|
107
|
-
assert_prometheus_metric_value(
|
108
|
-
:stackdriver_config_usage,
|
109
|
-
1,
|
110
|
-
plugin_name: 'google_cloud',
|
111
|
-
param: 'autoformat_stackdriver_trace',
|
112
|
-
is_present: true,
|
113
|
-
has_default_value: false)
|
114
|
-
assert_prometheus_metric_value(
|
115
|
-
:stackdriver_config_usage,
|
116
|
-
1,
|
117
|
-
plugin_name: 'google_cloud',
|
118
|
-
param: 'coerce_to_utf8',
|
119
|
-
is_present: true,
|
120
|
-
has_default_value: false)
|
121
|
-
# The remaining "google_cloud" params are not present.
|
122
|
-
# The are no params for "detect_exceptions".
|
123
|
-
%w(
|
124
|
-
auth_method
|
125
|
-
detect_json
|
126
|
-
enable_monitoring
|
127
|
-
gcm_service_address
|
128
|
-
grpc_compression_algorithm
|
129
|
-
http_request_key
|
130
|
-
insert_id_key
|
131
|
-
label_map
|
132
|
-
labels
|
133
|
-
labels_key
|
134
|
-
logging_api_url
|
135
|
-
monitoring_type
|
136
|
-
non_utf8_replacement_string
|
137
|
-
operation_key
|
138
|
-
private_key_email
|
139
|
-
private_key_passphrase
|
140
|
-
private_key_path
|
141
|
-
project_id
|
142
|
-
source_location_key
|
143
|
-
span_id_key
|
144
|
-
statusz_port
|
145
|
-
trace_key
|
146
|
-
trace_sampled_key
|
147
|
-
use_grpc
|
148
|
-
use_metadata_service
|
149
|
-
vm_id
|
150
|
-
vm_name
|
151
|
-
zone
|
152
|
-
).each do |p|
|
153
|
-
assert_prometheus_metric_value(
|
111
|
+
# For out_google_cloud, 3 params are present.
|
112
|
+
assert_metric_value.call(
|
154
113
|
:stackdriver_config_usage,
|
155
114
|
1,
|
156
115
|
plugin_name: 'google_cloud',
|
157
|
-
param:
|
158
|
-
is_present:
|
116
|
+
param: 'adjust_invalid_timestamps',
|
117
|
+
is_present: true,
|
118
|
+
has_default_value: true)
|
119
|
+
assert_metric_value.call(
|
120
|
+
:stackdriver_config_usage,
|
121
|
+
1,
|
122
|
+
plugin_name: 'google_cloud',
|
123
|
+
param: 'autoformat_stackdriver_trace',
|
124
|
+
is_present: true,
|
159
125
|
has_default_value: false)
|
160
|
-
|
126
|
+
assert_metric_value.call(
|
127
|
+
:stackdriver_config_usage,
|
128
|
+
1,
|
129
|
+
plugin_name: 'google_cloud',
|
130
|
+
param: 'coerce_to_utf8',
|
131
|
+
is_present: true,
|
132
|
+
has_default_value: false)
|
133
|
+
# The remaining "google_cloud" params are not present.
|
134
|
+
# The are no params for "detect_exceptions".
|
135
|
+
%w(
|
136
|
+
auth_method
|
137
|
+
detect_json
|
138
|
+
enable_monitoring
|
139
|
+
gcm_service_address
|
140
|
+
grpc_compression_algorithm
|
141
|
+
http_request_key
|
142
|
+
insert_id_key
|
143
|
+
label_map
|
144
|
+
labels
|
145
|
+
labels_key
|
146
|
+
logging_api_url
|
147
|
+
monitoring_type
|
148
|
+
non_utf8_replacement_string
|
149
|
+
operation_key
|
150
|
+
private_key_email
|
151
|
+
private_key_passphrase
|
152
|
+
private_key_path
|
153
|
+
project_id
|
154
|
+
source_location_key
|
155
|
+
span_id_key
|
156
|
+
statusz_port
|
157
|
+
trace_key
|
158
|
+
trace_sampled_key
|
159
|
+
use_grpc
|
160
|
+
use_metadata_service
|
161
|
+
vm_id
|
162
|
+
vm_name
|
163
|
+
zone
|
164
|
+
).each do |p|
|
165
|
+
assert_metric_value.call(
|
166
|
+
:stackdriver_config_usage,
|
167
|
+
1,
|
168
|
+
plugin_name: 'google_cloud',
|
169
|
+
param: p,
|
170
|
+
is_present: false,
|
171
|
+
has_default_value: false)
|
172
|
+
end
|
161
173
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
174
|
+
# We also export values for the bools.
|
175
|
+
assert_metric_value.call(
|
176
|
+
:stackdriver_config_bool_values,
|
177
|
+
1,
|
178
|
+
plugin_name: 'google_cloud',
|
179
|
+
param: 'adjust_invalid_timestamps',
|
180
|
+
value: true)
|
181
|
+
assert_metric_value.call(
|
182
|
+
:stackdriver_config_bool_values,
|
183
|
+
1,
|
184
|
+
plugin_name: 'google_cloud',
|
185
|
+
param: 'autoformat_stackdriver_trace',
|
186
|
+
value: false)
|
187
|
+
assert_metric_value.call(
|
188
|
+
:stackdriver_config_bool_values,
|
189
|
+
1,
|
190
|
+
plugin_name: 'google_cloud',
|
191
|
+
param: 'coerce_to_utf8',
|
192
|
+
value: true)
|
193
|
+
end
|
181
194
|
end
|
182
195
|
|
183
196
|
def create_driver(conf = APPLICATION_DEFAULT_CONFIG)
|