Skip to content

Commit 0df8df8

Browse files
authored
W 17464266.code coverage (#1019)
* W-17464266: Enable jacoco code coverage and bump up coverage above 80%
1 parent 2c00a5e commit 0df8df8

File tree

95 files changed

+3581
-140
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+3581
-140
lines changed

.github/workflows/gradle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
if: ${{ !contains(github.ref, 'dependabot') }}
2121
run: echo "${{ secrets.SALESFORCE_DOCKER_HUB_SECRET }}" | docker login --username sholavanalli508 --password-stdin
2222
- name: Build with Gradle
23-
run: ./gradlew build --info --stacktrace
23+
run: ./gradlew build printCoverageReport --info --stacktrace
2424
- name: Publish Failure Test Report
2525
if: ${{ failure() }} # doesn't run unless it specifically grabs the failure condition of the previous step..
2626
uses: scacap/action-surefire-report@v1

carbonj.service/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ RUN yum update -y && \
1818
yum install -y gcc-c++ gcc make libtool automake autoconf make python3-devel && \
1919
rpm --import http://repos.azulsystems.com/RPM-GPG-KEY-azulsystems && \
2020
yum install -y https://cdn.azul.com/zulu/bin/zulu-repo-1.0.0-1.noarch.rpm && \
21-
yum install -y https://mirror.stream.centos.org/9-stream/AppStream/$(uname -m)/os/Packages/pcp-conf-6.2.1-1.el9.$(uname -m).rpm && \
22-
yum install -y https://mirror.stream.centos.org/9-stream/AppStream/$(uname -m)/os/Packages/pcp-libs-6.2.1-1.el9.$(uname -m).rpm && \
21+
yum install -y https://mirror.stream.centos.org/9-stream/AppStream/$(uname -m)/os/Packages/pcp-conf-6.2.2-6.el9.$(uname -m).rpm && \
22+
yum install -y https://mirror.stream.centos.org/9-stream/AppStream/$(uname -m)/os/Packages/pcp-libs-6.2.2-6.el9.$(uname -m).rpm && \
2323
#
2424
# If sysstat version is updated, confirm iolog.sh execution and update associated version check in entrypoint.sh
2525
#

carbonj.service/build.gradle

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ task licenseCheckDockerFiles(type: com.hierynomus.gradle.license.tasks.LicenseFo
4040
licenseMain.dependsOn licenseCheckDockerFiles
4141

4242
apply plugin: 'java'
43+
apply plugin: 'jacoco'
4344
apply plugin: 'eclipse'
4445
apply plugin: 'idea'
4546
apply plugin: 'io.spring.dependency-management'
@@ -225,17 +226,40 @@ dependencies {
225226
}
226227
implementation group:"org.springframework.boot", name:"spring-boot-starter-actuator", version: "${springbootVersion}"
227228
testImplementation group:"org.springframework.boot", name:"spring-boot-starter-test", version: "${springbootVersion}"
229+
testImplementation "org.testcontainers:junit-jupiter:${testContainers}"
230+
testImplementation "org.testcontainers:localstack:${testContainers}"
231+
testImplementation "software.amazon.kinesis:amazon-kinesis-client:${kinesisClient}"
228232
}
229233

230234
test {
231235
useJUnitPlatform()
232-
maxHeapSize = "2g"
236+
maxHeapSize = "3g"
233237
jvmArgs = [
234238
'--add-opens', 'java.base/java.util=ALL-UNNAMED',
235239
]
236240
environment "AWS_REGION", "us-east-1"
237241
}
238242

243+
jacocoTestReport {
244+
reports {
245+
html.required = true
246+
xml.required = true
247+
csv.required = true
248+
}
249+
}
250+
251+
task printCoverageReport {
252+
dependsOn jacocoTestReport
253+
doLast {
254+
def reportFile = file("${projectDir}/build/reports/jacoco/test/jacocoTestReport.csv")
255+
if (reportFile.exists()) {
256+
println reportFile.text
257+
} else {
258+
println "Coverage report not found!"
259+
}
260+
}
261+
}
262+
239263
tasks.withType(Test) {
240264
testLogging {
241265
// set options for log level LIFECYCLE

carbonj.service/src/main/java/com/demandware/carbonj/service/db/model/MsgPackMetric.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,17 @@
66
*/
77
package com.demandware.carbonj.service.db.model;
88

9-
import java.util.ArrayList;
10-
import java.util.Collections;
11-
import java.util.List;
12-
import java.util.Optional;
13-
14-
import com.demandware.carbonj.service.accumulator.MetricAggregationPolicy;
15-
import com.google.common.base.Preconditions;
16-
17-
import com.demandware.carbonj.service.strings.StringsCache;
18-
199
public class MsgPackMetric
2010
{
21-
final public String path;
22-
final public boolean isLeaf;
11+
public String path;
12+
public boolean isLeaf;
13+
14+
public MsgPackMetric() {
15+
}
2316

2417
public MsgPackMetric( Metric metric )
2518
{
2619
this.path = metric.name;
2720
this.isLeaf = metric.isLeaf();
2821
}
29-
}
22+
}

carbonj.service/src/main/java/com/demandware/carbonj/service/db/model/MsgPackSeries.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
package com.demandware.carbonj.service.db.model;
88

99
import java.util.List;
10-
import com.fasterxml.jackson.annotation.JsonFormat;
1110
import com.fasterxml.jackson.annotation.JsonProperty;
1211
import com.fasterxml.jackson.annotation.JsonCreator;
1312

@@ -32,12 +31,7 @@ public class MsgPackSeries
3231

3332
public MsgPackSeries( Series series)
3433
{
35-
this.start = series.start;
36-
this.end = series.end;
37-
this.step = series.step;
38-
this.name = series.name;
39-
this.pathExpression = series.name;
40-
this.values = series.values;
34+
this(series.start, series.end, series.step, series.name, series.name, series.values);
4135
}
4236

4337
@JsonCreator
@@ -66,4 +60,4 @@ public String toString()
6660
", values=" + values +
6761
'}';
6862
}
69-
}
63+
}

carbonj.service/src/main/java/com/demandware/carbonj/service/db/model/StorageAggregationPolicySource.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import java.util.List;
1010
import java.util.concurrent.CopyOnWriteArrayList;
11-
import java.util.stream.Collectors;
1211

1312
import org.slf4j.Logger;
1413
import org.slf4j.LoggerFactory;
@@ -26,9 +25,9 @@ public class StorageAggregationPolicySource
2625
private static final Logger log = LoggerFactory.getLogger( StorageAggregationPolicySource.class );
2726

2827
// reuse same instance across multiple metrics.
29-
private CopyOnWriteArrayList<AggregationPolicy> policies = new CopyOnWriteArrayList<>( );
28+
private final CopyOnWriteArrayList<AggregationPolicy> policies = new CopyOnWriteArrayList<>( );
3029

31-
private StorageAggregationRulesLoader rulesLoader;
30+
private final StorageAggregationRulesLoader rulesLoader;
3231

3332
public StorageAggregationPolicySource( StorageAggregationRulesLoader rulesLoader)
3433
{
@@ -75,15 +74,11 @@ public synchronized void cleanup()
7574
{
7675
log.info("checking for obsolete aggregation policies to remove from cache");
7776
List<AggregationPolicy> obsolete = policies.stream()
78-
.filter( p -> p.configChanged() )
79-
.collect( Collectors.toList());
77+
.filter(AggregationPolicy::configChanged)
78+
.toList();
8079
// no need to keep policies that represent obsolete config.
8180
policies.removeAll( obsolete );
8281
log.info("purged obsolete aggregation policies from cache. Number of obsolete policies found: "
8382
+ obsolete.size() + ", total number of policies after purge: " + policies.size());
8483
}
85-
86-
public StorageAggregationRulesLoader getRulesLoader() {
87-
return rulesLoader;
88-
}
8984
}

carbonj.service/src/main/java/com/demandware/carbonj/service/engine/AWSCredential.java

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

carbonj.service/src/main/java/com/demandware/carbonj/service/engine/Consumers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private void reconfigureConsumers(Set<String> newRules, Set<String> currentRules
132132
kinesisApplicationName = kinesisApplicationNamePropValue;
133133
}
134134
} catch (FileNotFoundException e) {
135-
log.warn(" config/" + consumerCfgFile + "not found in the classpath ");
135+
log.warn(consumerCfgFile + " not found in the classpath ");
136136
log.info(" Falling back to default values ");
137137
} catch (Throwable e) {
138138
log.error(e.getMessage(), e);

carbonj.service/src/main/java/com/demandware/carbonj/service/engine/DestinationGroup.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,10 @@ String getDest()
142142
return dest;
143143
}
144144

145+
LineProtocolDestination[] getDestinations() {
146+
return destinations;
147+
}
148+
145149
void close()
146150
{
147151
close( Arrays.asList(destinations) );

carbonj.service/src/main/java/com/demandware/carbonj/service/engine/KinesisConsumer.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@
1515
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream;
1616
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration;
1717
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker;
18+
import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel;
1819
import com.codahale.metrics.Counter;
1920
import com.codahale.metrics.MetricRegistry;
2021
import com.demandware.carbonj.service.engine.kinesis.GzipDataPointCodec;
2122
import com.demandware.carbonj.service.engine.kinesis.kcl.MemLeaseManager;
2223
import com.demandware.carbonj.service.engine.recovery.*;
2324
import com.google.common.base.Preconditions;
25+
import org.apache.commons.lang3.StringUtils;
2426
import org.slf4j.Logger;
2527
import org.slf4j.LoggerFactory;
2628

@@ -45,16 +47,27 @@ public class KinesisConsumer extends Thread {
4547

4648
private Worker worker;
4749

48-
private PointProcessor recoveryPointProcessor;
50+
private final PointProcessor recoveryPointProcessor;
4951

5052
private volatile boolean closed;
5153

52-
private String kinesisConsumerRegion;
54+
private final String kinesisConsumerRegion;
55+
56+
private final String overrideKinesisEndpoint;
5357

5458
public KinesisConsumer(MetricRegistry metricRegistry, PointProcessor pointProcessor, PointProcessor recoveryPointProcessor,
5559
String kinesisStreamName, String kinesisApplicationName,
5660
KinesisConfig kinesisConfig, CheckPointMgr<Date> checkPointMgr,
5761
Counter noOfRestarts, String kinesisConsumerRegion) {
62+
this(metricRegistry, pointProcessor, recoveryPointProcessor, kinesisStreamName, kinesisApplicationName, kinesisConfig,
63+
checkPointMgr, noOfRestarts, kinesisConsumerRegion, null);
64+
}
65+
66+
public KinesisConsumer(MetricRegistry metricRegistry, PointProcessor pointProcessor, PointProcessor recoveryPointProcessor,
67+
String kinesisStreamName, String kinesisApplicationName,
68+
KinesisConfig kinesisConfig, CheckPointMgr<Date> checkPointMgr,
69+
Counter noOfRestarts, String kinesisConsumerRegion,
70+
String overrideKinesisEndpoint) {
5871
this.metricRegistry = metricRegistry;
5972
this.pointProcessor = Preconditions.checkNotNull(pointProcessor);
6073
this.recoveryPointProcessor = recoveryPointProcessor;
@@ -64,6 +77,7 @@ public KinesisConsumer(MetricRegistry metricRegistry, PointProcessor pointProces
6477
this.checkPointMgr = checkPointMgr;
6578
this.noOfRestarts = noOfRestarts;
6679
this.kinesisConsumerRegion = kinesisConsumerRegion;
80+
this.overrideKinesisEndpoint = overrideKinesisEndpoint;
6781
log.info("Kinesis consumer started");
6882
this.start();
6983
}
@@ -91,6 +105,12 @@ public void run () {
91105
kinesisClientLibConfiguration.withMaxRecords(maxRecords);
92106
}
93107

108+
// For testing only
109+
if (!StringUtils.isEmpty(overrideKinesisEndpoint)) {
110+
kinesisClientLibConfiguration.withKinesisEndpoint(overrideKinesisEndpoint);
111+
kinesisClientLibConfiguration.withMetricsLevel(MetricsLevel.NONE);
112+
}
113+
94114
log.info(" Kinesis Client Library started with application name " + kinesisApplicationName + " with stream "
95115
+ kinesisStreamName + " and worker id is " + workerId);
96116

0 commit comments

Comments
 (0)