Skip to content

Commit 25db632

Browse files
author
Daniel Mikusa
authored
Permit raw type values in Elastic APM config (#946)
Resolves #935 Signed-off-by: Daniel Mikusa <[email protected]>
1 parent 465a556 commit 25db632

File tree

2 files changed

+29
-25
lines changed

2 files changed

+29
-25
lines changed

lib/java_buildpack/framework/elastic_apm_agent.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def apply_user_configuration(credentials, configuration)
9090

9191
def write_java_opts(java_opts, configuration)
9292
configuration.each do |key, value|
93-
if /\$[({][^)}]+[)}]/ =~ value
93+
if /\$[({][^)}]+[)}]/ =~ value.to_s
9494
# we need \" because this is a system property which ends up inside `JAVA_OPTS` which is already quoted
9595
java_opts.add_system_property("elastic.apm.#{key}", "\\\"#{value}\\\"")
9696
else

spec/java_buildpack/framework/elastic_apm_agent_spec.rb

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -59,30 +59,34 @@
5959
expect(java_opts).to include('-Delastic.apm.log_file_name=STDOUT')
6060
end
6161

62-
it 'updates JAVA_OPTS with additional options' do
63-
val = 'object_name[java.lang:type=Memory] attribute[HeapMemoryUsage:metric_name=test_heap_metric]'
64-
shell = '$(echo \'Hello world!\') and stuff'
65-
var = '--> ${SOME_VAR} <--'
66-
allow(services).to receive(:find_service).and_return('credentials' => { 'secret_token' => 'test-secret_token',
67-
'server_urls' => 'different-serverurl',
68-
'service_name' => 'different-name',
69-
'foo' => 'bar',
70-
'capture_jmx_metrics' => val,
71-
'sub' => shell,
72-
'var' => var })
73-
74-
component.release
75-
76-
expect(java_opts).to include('-Delastic.apm.secret_token=test-secret_token')
77-
expect(java_opts).to include('-Delastic.apm.server_urls=different-serverurl')
78-
expect(java_opts).to include('-Delastic.apm.service_name=different-name')
79-
expect(java_opts).to include('-Delastic.apm.foo=bar')
80-
escaped = 'object_name\[java.lang:type\=Memory\]\ attribute\[HeapMemoryUsage:metric_name\=test_heap_metric\]'
81-
expect(java_opts).to include("-Delastic.apm.capture_jmx_metrics=#{escaped}")
82-
expect(java_opts).to include('-Delastic.apm.sub=\"$(echo \'Hello world!\') and stuff\"')
83-
expect(java_opts).to include('-Delastic.apm.var=\"--> ${SOME_VAR} <--\"')
62+
context do
63+
let(:creds) do
64+
{ 'secret_token' => 'test-secret_token',
65+
'server_urls' => 'different-serverurl',
66+
'service_name' => 'different-name',
67+
'foo' => 'bar',
68+
'capture_jmx_metrics' => 'object_name[java.lang:type=Memory] ' \
69+
'attribute[HeapMemoryUsage:metric_name=test_heap_metric]',
70+
'sub' => '$(echo \'Hello world!\') and stuff',
71+
'var' => '--> ${SOME_VAR} <--',
72+
'bool' => false,
73+
'nil' => nil }
74+
end
75+
76+
it 'updates JAVA_OPTS with additional options' do
77+
allow(services).to receive(:find_service).and_return('credentials' => creds)
78+
79+
component.release
80+
81+
expect(java_opts).to include('-Delastic.apm.secret_token=test-secret_token')
82+
expect(java_opts).to include('-Delastic.apm.server_urls=different-serverurl')
83+
expect(java_opts).to include('-Delastic.apm.service_name=different-name')
84+
expect(java_opts).to include('-Delastic.apm.foo=bar')
85+
escaped = 'object_name\[java.lang:type\=Memory\]\ attribute\[HeapMemoryUsage:metric_name\=test_heap_metric\]'
86+
expect(java_opts).to include("-Delastic.apm.capture_jmx_metrics=#{escaped}")
87+
expect(java_opts).to include('-Delastic.apm.sub=\"$(echo \'Hello world!\') and stuff\"')
88+
expect(java_opts).to include('-Delastic.apm.var=\"--> ${SOME_VAR} <--\"')
89+
end
8490
end
85-
8691
end
87-
8892
end

0 commit comments

Comments
 (0)