Skip to content

Commit e23996c

Browse files
authored
Added Support for Code Coverage using lcov and gcov (#118)
1 parent db0b3d6 commit e23996c

File tree

6 files changed

+57
-155
lines changed

6 files changed

+57
-155
lines changed

instrumentation/otel-webserver-module/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apply plugin: 'cpp'
22
apply from: 'common.gradle'
33

4-
def coverageEnabled = System.getProperty('enableCoverage')
4+
def coverageEnabled = System.getenv('enableCoverage')
55

66
project.ext {
77
// To do a 32-bit build, pass "-Dos.arch=x86"
@@ -416,7 +416,7 @@ task lcovCapture(type: Exec) {
416416
args '--output-file', tracefile, // resulting tracefile
417417
'--capture', // capture counts for a user space program
418418
'--directory', "${platBuildDir}" // location where the program was compiled
419-
// '--no-external' // ignore data for external files
419+
'--no-external' // ignore data for external files
420420
}
421421

422422
task lcov(type: Exec) {
@@ -434,7 +434,7 @@ task lcov(type: Exec) {
434434
args '--quiet', // do not print progress messages
435435
'--output-file', tracefile, // resulting tracefile
436436
'--remove', lcovCapture.tracefile, // remove files matching patterns from tracefile
437-
'*/prebuilt/*', '*.pb.*' // list of patterns
437+
'*/prebuilt/*', '*.pb.*', '/opt/rh/*', '/usr/include/*', '*.h', '*.hpp' // list of patterns
438438
}
439439

440440
task coverageHtml(type: Exec) {

instrumentation/otel-webserver-module/test/ApacheTesting.sh

Lines changed: 43 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,67 +3,58 @@
33
# Bash script for testing Apache Server
44

55
# Extract the agent
6-
tar -xf ../build/appdynamics-webserver-sdk-x64-linux.tgz -C /opt
6+
tar -xf ../build/opentelemetry-webserver-sdk-x64-linux.tgz -C /opt
77

8-
cd /opt/appdynamics-sdk-native
8+
cd /opt/opentelemetry-webserver-sdk
99

10-
echo "Installing Apache Agent"
10+
echo "Installing webserver module"
1111
./install.sh
1212

1313
# Create a appdynamics_agent.conf file
1414
echo "Copying agent config to appdynamics_agent file"
1515
echo '
16-
LoadFile /opt/appdynamics-sdk-native/sdk_lib/lib/libopentelemetry_common.so
17-
LoadFile /opt/appdynamics-sdk-native/sdk_lib/lib/libopentelemetry_resources.so
18-
LoadFile /opt/appdynamics-sdk-native/sdk_lib/lib/libopentelemetry_trace.so
19-
LoadFile /opt/appdynamics-sdk-native/sdk_lib/lib/libopentelemetry_otlp_recordable.so
20-
LoadFile /opt/appdynamics-sdk-native/sdk_lib/lib/libopentelemetry_exporter_ostream_span.so
21-
LoadFile /opt/appdynamics-sdk-native/sdk_lib/lib/libopentelemetry_exporter_otlp_grpc.so
22-
23-
#Load the AppDynamics SDK
24-
LoadFile /opt/appdynamics-sdk-native/sdk_lib/lib/libappdynamics_native_sdk.so
25-
26-
#Load the Apache Agent. In this example for Apache 2.2
27-
LoadModule appdynamics_module /opt/appdynamics-sdk-native/WebServerAgent/Apache/libmod_appdynamics22.so
28-
29-
AppDynamicsEnabled ON
30-
31-
#AppDynamics Otel Exporter details
32-
AppDynamicsOtelSpanExporter OTLP
33-
AppDynamicsOtelExporterEndpoint example.com:14250
34-
35-
AppDynamicsOtelSpanProcessor Batch
36-
AppDynamicsOtelSampler AlwaysOn
37-
38-
AppDynamicsServiceName cart
39-
AppDynamicsServiceNamespace e-commerce
40-
AppDynamicsServiceInstanceId 71410b7dec09
41-
42-
AppDynamicsOtelMaxQueueSize 1024
43-
AppDynamicsOtelScheduledDelayMillis 3000
44-
AppDynamicsOtelExportTimeoutMillis 30000
45-
AppDynamicsOtelMaxExportBatchSize 1024
46-
47-
AppDynamicsResolveBackends ON
48-
49-
AppDynamicsTraceAsError ON
50-
51-
AppDynamicsReportAllInstrumentedModules OFF
52-
53-
AppDynamicsWebserverContext electronics e-commerce 71410b7jan13
54-
55-
AppDynamicsMaskCookie ON
56-
AppDynamicsCookieMatchPattern PHPSESSID
57-
AppDynamicsMaskSmUser ON
58-
59-
AppDynamicsDelimiter /
60-
AppDynamicsSegment 2,3
61-
AppDynamicsMatchfilter CONTAINS
62-
AppDynamicsMatchpattern myapp
63-
' >> /opt/appdynamics_agent.conf
16+
LoadFile /opt/opentelemetry-webserver-sdk/sdk_lib/lib/libopentelemetry_common.so
17+
LoadFile /opt/opentelemetry-webserver-sdk/sdk_lib/lib/libopentelemetry_resources.so
18+
LoadFile /opt/opentelemetry-webserver-sdk/sdk_lib/lib/libopentelemetry_trace.so
19+
LoadFile /opt/opentelemetry-webserver-sdk/sdk_lib/lib/libopentelemetry_otlp_recordable.so
20+
LoadFile /opt/opentelemetry-webserver-sdk/sdk_lib/lib/libopentelemetry_exporter_ostream_span.so
21+
LoadFile /opt/opentelemetry-webserver-sdk/sdk_lib/lib/libopentelemetry_exporter_otlp_grpc.so
22+
23+
#Load the ApacheModule SDK
24+
LoadFile /opt/opentelemetry-webserver-sdk/sdk_lib/lib/libopentelemetry_webserver_sdk.so
25+
#Load the Apache Module. In this example for Apache 2.2
26+
LoadModule otel_apache_module /opt/opentelemetry-webserver-sdk/WebServerModule/Apache/libmod_apache_otel22.so
27+
ApacheModuleEnabled ON
28+
29+
#ApacheModule Otel Exporter details
30+
ApacheModuleOtelSpanExporter otlp
31+
ApacheModuleOtelExporterEndpoint docker.for.mac.localhost:4317
32+
33+
# SSL Certificates
34+
#ApacheModuleOtelSslEnabled ON
35+
#ApacheModuleOtelSslCertificatePath
36+
37+
ApacheModuleOtelSpanProcessor Batch
38+
ApacheModuleOtelSampler AlwaysOn
39+
ApacheModuleOtelMaxQueueSize 2048
40+
ApacheModuleOtelScheduledDelayMillis 3000
41+
ApacheModuleOtelExportTimeoutMillis 50000
42+
ApacheModuleOtelMaxExportBatchSize 512
43+
44+
ApacheModuleServiceName DemoService
45+
ApacheModuleServiceNamespace DemoServiceNamespace
46+
ApacheModuleServiceInstanceId DemoInstanceId
47+
48+
ApacheModuleResolveBackends ON
49+
ApacheModuleTraceAsError ON
50+
#ApacheModuleWebserverContext DemoService DemoServiceNamespace DemoInstanceId
51+
52+
ApacheModuleSegmentType first
53+
ApacheModuleSegmentParameter 2
54+
' > /opt/opentelemetry_module.conf
6455

6556
#Include appdynamics_agent.conf file in httpd.conf
66-
echo 'Include /opt/appdynamics_agent.conf' >> /etc/httpd/conf/httpd.conf
57+
cp -f /opt/opentelemetry_module.conf /etc/httpd/conf.d/opentelemetry_module.conf
6758

6859
echo "Starting Apache Server"
6960
apachectl restart # re-start the server

instrumentation/otel-webserver-module/test/NginxTesting.sh

Lines changed: 0 additions & 93 deletions
This file was deleted.

instrumentation/otel-webserver-module/test/unit/integration_test.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ std::shared_ptr<appd::core::TenantConfig> getConfig() {
2929
config->setServiceInstanceId("dummy_instance_id");
3030
config->setOtelExporterType("otlp");
3131
config->setOtelExporterEndpoint("otel-collector:4317");
32+
config->setOtelLibraryName("opentelemetry-apache");
3233
return config;
3334
}
3435

instrumentation/otel-webserver-module/test/unit/mocks/mock_OpenTelemetry.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,11 @@ class MockPropagator : public context::propagation::TextMapPropagator
100100
const context::Context &context) noexcept override {
101101
InjectImpl(carrier);
102102
}
103+
103104
MOCK_METHOD(void, ExtractImpl, (const context::propagation::TextMapCarrier &carrier));
104105
MOCK_METHOD(void, InjectImpl, (context::propagation::TextMapCarrier &carrier));
106+
MOCK_METHOD(bool, Fields, (nostd::function_ref<bool(nostd::string_view)> callback),
107+
(const, noexcept, override));
105108
};
106109

107110
#endif

instrumentation/otel-webserver-module/test/unit/unit_test.gyp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
'../../include/util/',
99
'$(ANSDK_DIR)/googletest/1.10.0/include',
1010
'$(ANSDK_DIR)/googletest/1.10.0/include',
11-
'$(ANSDK_DIR)/opentelemetry/1.0.0-rc1/include/',
11+
'$(ANSDK_DIR)/opentelemetry/1.2.0/include/',
1212

1313
'$(ANSDK_DIR)/apache-log4cxx/0.11.0/include',
1414
'$(ANSDK_DIR)/apr/1.7.0/include',
@@ -48,12 +48,12 @@
4848
'$(ANSDK_DIR)/apr/1.7.0/lib/libapr-1.a',
4949
'$(ANSDK_DIR)/apr-util/1.6.1/lib/libaprutil-1.a',
5050
'$(ANSDK_DIR)/expat/2.3.0/lib/libexpat.a',
51-
'$(ANSDK_DIR)/opentelemetry/1.0.0-rc1/lib/libopentelemetry_common.so',
52-
'$(ANSDK_DIR)/opentelemetry/1.0.0-rc1/lib/libopentelemetry_resources.so',
53-
'$(ANSDK_DIR)/opentelemetry/1.0.0-rc1/lib/libopentelemetry_trace.so',
54-
'$(ANSDK_DIR)/opentelemetry/1.0.0-rc1/lib/libopentelemetry_otlp_recordable.so',
55-
'$(ANSDK_DIR)/opentelemetry/1.0.0-rc1/lib/libopentelemetry_exporter_ostream_span.so',
56-
'$(ANSDK_DIR)/opentelemetry/1.0.0-rc1/lib/libopentelemetry_exporter_otlp_grpc.so',
51+
'$(ANSDK_DIR)/opentelemetry/1.2.0/lib/libopentelemetry_common.so',
52+
'$(ANSDK_DIR)/opentelemetry/1.2.0/lib/libopentelemetry_resources.so',
53+
'$(ANSDK_DIR)/opentelemetry/1.2.0/lib/libopentelemetry_trace.so',
54+
'$(ANSDK_DIR)/opentelemetry/1.2.0/lib/libopentelemetry_otlp_recordable.so',
55+
'$(ANSDK_DIR)/opentelemetry/1.2.0/lib/libopentelemetry_exporter_ostream_span.so',
56+
'$(ANSDK_DIR)/opentelemetry/1.2.0/lib/libopentelemetry_exporter_otlp_grpc.so',
5757
],
5858

5959
'ldflags': [

0 commit comments

Comments
 (0)