File tree Expand file tree Collapse file tree 2 files changed +43
-4
lines changed
lib/java_buildpack/framework
spec/java_buildpack/framework Expand file tree Collapse file tree 2 files changed +43
-4
lines changed Original file line number Diff line number Diff line change @@ -27,23 +27,22 @@ class DatadogJavaagent < JavaBuildpack::Component::VersionedDependencyComponent
2727
2828 def initialize ( context )
2929 super ( context )
30- @datadog_buildpack = File . exist? File . join ( @droplet . root , '.datadog' )
3130 @logger = JavaBuildpack ::Logging ::LoggerFactory . instance . get_logger DatadogJavaagent
3231 end
3332
3433 # (see JavaBuildpack::Component::BaseComponent#compile)
3534 def compile
36- @logger . error 'Datadog Buildpack is required, but not found' unless @ datadog_buildpack
35+ @logger . error 'Datadog Buildpack is required, but not found' unless datadog_buildpack?
3736
38- return unless @ datadog_buildpack
37+ return unless datadog_buildpack?
3938
4039 download_jar
4140 fix_class_count
4241 end
4342
4443 # (see JavaBuildpack::Component::BaseComponent#release)
4544 def release
46- return unless @ datadog_buildpack
45+ return unless datadog_buildpack?
4746
4847 java_opts = @droplet . java_opts
4948 java_opts . add_javaagent ( @droplet . sandbox + jar_name )
@@ -67,6 +66,11 @@ def supports?
6766 ( api_key_defined && !apm_disabled )
6867 end
6968
69+ # determins if the datadog buildpack is present
70+ def datadog_buildpack?
71+ File . exist? ( File . join ( @droplet . root , '.datadog' ) ) || File . exist? ( File . join ( @droplet . root , 'datadog' ) )
72+ end
73+
7074 # fixes issue where some classes are not counted by adding shadow class files
7175 def fix_class_count
7276 cnt = classdata_count ( @droplet . sandbox + jar_name )
Original file line number Diff line number Diff line change 100100 end
101101 end
102102
103+ context 'when datadog buildpack 4.22.0 (or older) is present' do
104+ before do
105+ FileUtils . mkdir_p File . join ( context [ :droplet ] . root , 'datadog' )
106+ end
107+
108+ after do
109+ FileUtils . rmdir File . join ( context [ :droplet ] . root , 'datadog' )
110+ end
111+
112+ it 'compile downloads datadog-javaagent JAR' , cache_fixture : 'stub-datadog-javaagent.jar' do
113+ component . compile
114+ expect ( sandbox + "datadog_javaagent-#{ version } .jar" ) . to exist
115+ end
116+
117+ it 'makes a jar with fake class files' , cache_fixture : 'stub-datadog-javaagent.jar' do
118+ component . compile
119+ expect ( sandbox + "datadog_javaagent-#{ version } .jar" ) . to exist
120+ expect ( sandbox + 'datadog_fakeclasses.jar' ) . to exist
121+ expect ( sandbox + 'datadog_fakeclasses' ) . not_to exist
122+
123+ cnt = `unzip -l #{ sandbox } /datadog_fakeclasses.jar | grep '\\ (\\ .class\\ )$' | wc -l` . to_i
124+ expect ( cnt ) . to equal ( 34 )
125+ end
126+
127+ it 'release updates JAVA_OPTS' do
128+ component . release
129+
130+ expect ( java_opts ) . to include (
131+ "-javaagent:$PWD/.java-buildpack/datadog_javaagent/datadog_javaagent-#{ version } .jar"
132+ )
133+ expect ( java_opts ) . to include ( '-Ddd.service=\"test-application-name\"' )
134+ expect ( java_opts ) . to include ( '-Ddd.version=test-application-version' )
135+ end
136+ end
137+
103138 context 'when datadog buildpack is not present' do
104139 it 'compile downloads datadog-javaagent JAR' , cache_fixture : 'stub-datadog-javaagent.jar' do
105140 component . compile
You can’t perform that action at this time.
0 commit comments