Skip to content

Commit dbe56f4

Browse files
authored
Overall code maintenance (#174)
* Update developerConnection * Use variables for static values * Replace static text with variable * Remove deprecated field * Replace duplicate code with method * Use log level methods directly * Simplify code * Add jacoco code coverage to build * Update jacoco
1 parent bbadeaf commit dbe56f4

File tree

6 files changed

+76
-117
lines changed

6 files changed

+76
-117
lines changed

pom.xml

+24-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ THE SOFTWARE.
4141

4242
<scm>
4343
<connection>scm:git:ssh://github.com/jenkinsci/influxdb-plugin.git</connection>
44-
<developerConnection>scm:git:ssh://[email protected]/jenkinsci/influxdb-plugin.git</developerConnection>
44+
<developerConnection>scm:git:git://[email protected]/jenkinsci/influxdb-plugin.git</developerConnection>
4545
<url>https://github.com/jenkinsci/influxdb-plugin</url>
4646
<tag>HEAD</tag>
4747
</scm>
@@ -210,6 +210,29 @@ THE SOFTWARE.
210210
</dependency>
211211
</dependencies>
212212

213+
<build>
214+
<plugins>
215+
<plugin>
216+
<groupId>org.jacoco</groupId>
217+
<artifactId>jacoco-maven-plugin</artifactId>
218+
<version>0.8.11</version>
219+
<executions>
220+
<execution>
221+
<goals>
222+
<goal>prepare-agent</goal>
223+
</goals>
224+
</execution>
225+
<execution>
226+
<id>generate-code-coverage-report</id>
227+
<phase>test</phase>
228+
<goals>
229+
<goal>report</goal>
230+
</goals>
231+
</execution>
232+
</executions>
233+
</plugin>
234+
</plugins>
235+
</build>
213236

214237
<!-- The current maintainers of the plugin -->
215238
<developers>

src/main/java/jenkinsci/plugins/influxdb/InfluxDbPublicationService.java

+32-80
Original file line numberDiff line numberDiff line change
@@ -179,131 +179,74 @@ public void perform(Run<?, ?> build, TaskListener listener, EnvVars env) {
179179
addPoints(pointsToWrite, jGen, listener);
180180

181181
AgentPointGenerator agentGen = new AgentPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
182-
if (agentGen.hasReport()) {
183-
addPoints(pointsToWrite, agentGen, listener);
184-
} else {
185-
logger.log(Level.FINE, "Data source empty: Agent Point");
186-
}
182+
addPointsFromPlugin(pointsToWrite, agentGen, listener, "Custom Data");
187183

188184
CustomDataPointGenerator cdGen = new CustomDataPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix, customData, customDataTags, measurementName);
189-
if (cdGen.hasReport()) {
190-
listener.getLogger().println("[InfluxDB Plugin] Custom data found. Writing to InfluxDB...");
191-
addPoints(pointsToWrite, cdGen, listener);
192-
} else {
193-
logger.log(Level.FINE, "Data source empty: Custom Data");
194-
}
185+
addPointsFromPlugin(pointsToWrite, cdGen, listener, "Custom Data");
195186

196187
CustomDataMapPointGenerator cdmGen = new CustomDataMapPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix, customDataMap, customDataMapTags);
197-
if (cdmGen.hasReport()) {
198-
listener.getLogger().println("[InfluxDB Plugin] Custom data map found. Writing to InfluxDB...");
199-
addPoints(pointsToWrite, cdmGen, listener);
200-
} else {
201-
logger.log(Level.FINE, "Data source empty: Custom Data Map");
202-
}
188+
addPointsFromPlugin(pointsToWrite, cdmGen, listener, "Custom Data Map");
203189

204190
try {
205191
CoberturaPointGenerator cGen = new CoberturaPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
206-
if (cGen.hasReport()) {
207-
listener.getLogger().println("[InfluxDB Plugin] Cobertura data found. Writing to InfluxDB...");
208-
addPoints(pointsToWrite, cGen, listener);
209-
}
192+
addPointsFromPlugin(pointsToWrite, cGen, listener, "Cobertura");
210193
} catch (NoClassDefFoundError ignore) {
211-
logger.log(Level.FINE, "Plugin skipped: Cobertura");
194+
logger.fine("Plugin skipped: Cobertura");
212195
}
213196

214197
try {
215198
RobotFrameworkPointGenerator rfGen = new RobotFrameworkPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
216-
if (rfGen.hasReport()) {
217-
listener.getLogger().println("[InfluxDB Plugin] Robot Framework data found. Writing to InfluxDB...");
218-
addPoints(pointsToWrite, rfGen, listener);
219-
}
199+
addPointsFromPlugin(pointsToWrite, rfGen, listener, "Robot Framework");
220200
} catch (NoClassDefFoundError ignore) {
221-
logger.log(Level.FINE, "Plugin skipped: Robot Framework");
201+
logger.fine("Plugin skipped: Robot Framework");
222202
}
223203

224204
try {
225205
JacocoPointGenerator jacoGen = new JacocoPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
226-
if (jacoGen.hasReport()) {
227-
listener.getLogger().println("[InfluxDB Plugin] JaCoCo data found. Writing to InfluxDB...");
228-
addPoints(pointsToWrite, jacoGen, listener);
229-
}
206+
addPointsFromPlugin(pointsToWrite, jacoGen, listener, "JaCoCo");
230207
} catch (NoClassDefFoundError ignore) {
231-
logger.log(Level.FINE, "Plugin skipped: JaCoCo");
208+
logger.fine("Plugin skipped: JaCoCo");
232209
}
233210

234211
try {
235212
PerformancePointGenerator perfGen = new PerformancePointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
236-
if (perfGen.hasReport()) {
237-
listener.getLogger().println("[InfluxDB Plugin] Performance data found. Writing to InfluxDB...");
238-
addPoints(pointsToWrite, perfGen, listener);
239-
}
213+
addPointsFromPlugin(pointsToWrite, perfGen, listener, "Performance");
240214
} catch (NoClassDefFoundError ignore) {
241-
logger.log(Level.FINE, "Plugin skipped: Performance");
215+
logger.fine("Plugin skipped: Performance");
242216
}
243217

244218
try {
245219
GitPointGenerator gitGen = new GitPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
246-
if (gitGen.hasReport()) {
247-
listener.getLogger().println("[InfluxDB Plugin] Git data found. Writing to InfluxDB...");
248-
addPoints(pointsToWrite, gitGen, listener);
249-
} else {
250-
logger.log(Level.FINE, "Plugin skipped: Git");
251-
}
220+
addPointsFromPlugin(pointsToWrite, gitGen, listener, "Git");
252221
} catch (NoClassDefFoundError ignore) {
253-
logger.log(Level.FINE, "Plugin skipped: Git");
222+
logger.fine("Plugin skipped: Git");
254223
}
255224

256225
JUnitPointGenerator junitGen = new JUnitPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix, env);
257-
if (junitGen.hasReport()) {
258-
listener.getLogger().println("[InfluxDB Plugin] JUnit data found. Writing to InfluxDB...");
259-
addPoints(pointsToWrite, junitGen, listener);
260-
} else {
261-
logger.log(Level.FINE, "Plugin skipped: JUnit");
262-
}
226+
addPointsFromPlugin(pointsToWrite, junitGen, listener, "JUnit");
263227

264228
SonarQubePointGenerator sonarGen = new SonarQubePointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix, env);
265-
if (sonarGen.hasReport()) {
266-
listener.getLogger().println("[InfluxDB Plugin] SonarQube data found. Writing to InfluxDB...");
267-
addPoints(pointsToWrite, sonarGen, listener);
268-
} else {
269-
logger.log(Level.FINE, "Plugin skipped: SonarQube");
270-
}
229+
addPointsFromPlugin(pointsToWrite, sonarGen, listener, "SonarQube");
271230

272231
SerenityJsonSummaryFile serenityJsonSummaryFile = new SerenityJsonSummaryFile(env.get("WORKSPACE"));
273232
SerenityPointGenerator serenityGen = new SerenityPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix, serenityJsonSummaryFile);
274-
if (serenityGen.hasReport()) {
275-
listener.getLogger().println("[InfluxDB Plugin] Serenity data found. Writing to InfluxDB...");
276-
addPoints(pointsToWrite, serenityGen, listener);
277-
} else {
278-
logger.log(Level.FINE, "Plugin skipped: Serenity");
279-
}
233+
addPointsFromPlugin(pointsToWrite, serenityGen, listener, "Serenity");
280234

281235
ChangeLogPointGenerator changeLogGen = new ChangeLogPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
282-
if (changeLogGen.hasReport()) {
283-
listener.getLogger().println("[InfluxDB Plugin] Change Log data found. Writing to InfluxDB...");
284-
addPoints(pointsToWrite, changeLogGen, listener);
285-
} else {
286-
logger.log(Level.FINE, "Data source empty: Change Log");
287-
}
236+
addPointsFromPlugin(pointsToWrite, changeLogGen, listener, "Change log");
288237

289238
try {
290239
PerfPublisherPointGenerator perfPublisherGen = new PerfPublisherPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
291-
if (perfPublisherGen.hasReport()) {
292-
listener.getLogger().println("[InfluxDB Plugin] Performance Publisher data found. Writing to InfluxDB...");
293-
addPoints(pointsToWrite, perfPublisherGen, listener);
294-
}
240+
addPointsFromPlugin(pointsToWrite, perfPublisherGen, listener, "Performance Publisher");
295241
} catch (NoClassDefFoundError ignore) {
296-
logger.log(Level.FINE, "Plugin skipped: Performance Publisher");
242+
logger.fine("Plugin skipped: Performance Publisher");
297243
}
298244

299245
try {
300246
MetricsPointGenerator metricsGen = new MetricsPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
301-
if (metricsGen.hasReport()) {
302-
listener.getLogger().println("[InfluxDB plugin] Metrics plugin data found. Writing to InfluxDB...");
303-
addPoints(pointsToWrite, metricsGen, listener);
304-
}
247+
addPointsFromPlugin(pointsToWrite, metricsGen, listener, "Metrics");
305248
} catch (NoClassDefFoundError ignore) {
306-
logger.log(Level.FINE, "Plugin skipped: Metrics");
249+
logger.fine("Plugin skipped: Metrics");
307250
}
308251

309252
for (Target target : selectedTargets) {
@@ -314,7 +257,7 @@ public void perform(Run<?, ?> build, TaskListener listener, EnvVars env) {
314257
String logMessage = String.format("[InfluxDB Plugin] Skipping target '%s' due to invalid URL '%s'",
315258
target.getDescription(),
316259
target.getUrl());
317-
logger.log(Level.WARNING, logMessage);
260+
logger.warning(logMessage);
318261
listener.getLogger().println(logMessage);
319262
continue;
320263
}
@@ -323,7 +266,7 @@ public void perform(Run<?, ?> build, TaskListener listener, EnvVars env) {
323266
target.getDescription(),
324267
target.getUrl(),
325268
target.getDatabase());
326-
logger.log(Level.FINE, logMessage);
269+
logger.fine(logMessage);
327270
listener.getLogger().println(logMessage);
328271

329272
try (InfluxDBClient influxDB = getInfluxDBClient(build, target, url)) {
@@ -335,6 +278,15 @@ public void perform(Run<?, ?> build, TaskListener listener, EnvVars env) {
335278
listener.getLogger().println("[InfluxDB Plugin] Completed.");
336279
}
337280

281+
private void addPointsFromPlugin(List<Point> pointsToWrite, PointGenerator generator, TaskListener listener, String plugin) {
282+
if (generator.hasReport()) {
283+
listener.getLogger().println("[InfluxDB plugin] " + plugin + " plugin data found. Writing to InfluxDB...");
284+
addPoints(pointsToWrite, generator, listener);
285+
} else {
286+
logger.fine("Data not found: " + plugin);
287+
}
288+
}
289+
338290
private InfluxDBClient getInfluxDBClient(Run<?, ?> build, Target target, URL url) {
339291
StandardUsernamePasswordCredentials credentials = CredentialsProvider.findCredentialById(target.getCredentialsId(), StandardUsernamePasswordCredentials.class, build);
340292
InfluxDBClient influxDB;

src/main/java/jenkinsci/plugins/influxdb/InfluxDbStep.java

-16
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ public class InfluxDbStep extends Step {
3636
private String jenkinsEnvParameterTag;
3737
private String measurementName;
3838

39-
@Deprecated
40-
private transient boolean replaceDashWithUnderscore;
41-
4239
@DataBoundConstructor
4340
public InfluxDbStep(String selectedTarget) {
4441
this.selectedTarget = selectedTarget;
@@ -142,16 +139,6 @@ public void setMeasurementName(String measurementName) {
142139
this.measurementName = measurementName;
143140
}
144141

145-
public boolean getReplaceDashWithUnderscore() {
146-
return replaceDashWithUnderscore;
147-
}
148-
149-
@Deprecated
150-
@DataBoundSetter
151-
public void setReplaceDashWithUnderscore(boolean replaceDashWithUnderscore) {
152-
this.replaceDashWithUnderscore = replaceDashWithUnderscore;
153-
}
154-
155142
public Target getTarget() {
156143
Jenkins jenkins = Jenkins.getInstanceOrNull();
157144
if (jenkins != null) {
@@ -171,9 +158,6 @@ public Target getTarget() {
171158

172159
@Override
173160
public StepExecution start(StepContext context) throws Exception {
174-
if (replaceDashWithUnderscore) {
175-
context.get(TaskListener.class).getLogger().println("[InfluxDB Plugin][WARNING] Option \"replaceDashWithUnderscore\" is deprecated and will be removed. It is ignored now. Please remove it.");
176-
}
177161
return new InfluxDbStepExecution(this, context);
178162
}
179163

src/main/java/jenkinsci/plugins/influxdb/global/GlobalRunListener.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,16 @@ private boolean isPublicationInBuild(Target target, Run<?, ?> build) {
8383
if (publisher != null) {
8484
String buildTarget = publisher.getSelectedTarget();
8585
return buildTarget != null && StringUtils.equals(buildTarget, target.getDescription());
86-
} else {
87-
return false;
8886
}
89-
} else {
90-
return false;
9187
}
88+
return false;
9289
}
9390

9491
private boolean isTargetMatchingPath(@Nonnull Target target, @Nonnull String path) {
9592
if (target.isGlobalListener()) {
9693
String pattern = target.getGlobalListenerFilter();
9794
return StringUtils.isBlank(pattern) || Pattern.matches(pattern, path);
98-
} else {
99-
return false;
10095
}
96+
return false;
10197
}
10298
}

src/test/java/jenkinsci/plugins/influxdb/generators/JenkinsBasePointGeneratorTest.java

+14-10
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ public class JenkinsBasePointGeneratorTest {
4141
private static final String JENKINS_ENV_RESOLVED_VALUE_TAG = "resolvedEnvValueTag";
4242
private static final String MEASUREMENT_NAME = "jenkins_data";
4343

44+
private static final String PROJECT_PATH = "project_path=\"folder/master\"";
45+
private static final String NODE_NAME = "slave-1";
46+
4447
private Run<?, ?> build;
4548
private ProjectNameRenderer measurementRenderer;
4649
private Executor executor;
@@ -63,7 +66,7 @@ public void before() throws Exception {
6366
Mockito.doReturn(job).when(build).getParent();
6467
Mockito.when(build.getEnvironment(listener)).thenReturn(mockedEnvVars);
6568
Mockito.when(executor.getOwner()).thenReturn(computer);
66-
Mockito.when(computer.getName()).thenReturn("slave-1");
69+
Mockito.when(computer.getName()).thenReturn(NODE_NAME);
6770
Mockito.when(job.getName()).thenReturn(JOB_NAME);
6871
Mockito.when(job.getRelativeNameFrom(Mockito.nullable(Jenkins.class))).thenReturn("folder/" + JOB_NAME);
6972
Mockito.when(job.getBuildHealth()).thenReturn(new HealthReport());
@@ -79,26 +82,27 @@ public void before() throws Exception {
7982
@Test
8083
public void agent_present() {
8184
Mockito.when(build.getExecutor()).thenReturn(executor);
82-
Mockito.when(mockedEnvVars.get("NODE_NAME")).thenReturn("slave-1");
85+
Mockito.when(mockedEnvVars.get("NODE_NAME")).thenReturn(NODE_NAME);
8386
JenkinsBasePointGenerator generator = new JenkinsBasePointGenerator(build, listener, measurementRenderer, currTime, StringUtils.EMPTY, StringUtils.EMPTY, CUSTOM_PREFIX, MEASUREMENT_NAME, mockedEnvVars);
8487
Point[] points = generator.generate();
8588
String lineProtocol = points[0].toLineProtocol();
8689

87-
assertTrue(lineProtocol.contains("build_agent_name=\"slave-1\""));
88-
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
90+
assertTrue(lineProtocol.contains("build_agent_name=\"" + NODE_NAME + "\""));
91+
assertTrue(lineProtocol.contains(PROJECT_PATH));
8992
}
9093

94+
@Test
9195
public void agent_present_in_log() throws Exception {
9296
Mockito.when(build.getExecutor()).thenReturn(executor);
9397
Mockito.when(mockedEnvVars.get("NODE_NAME")).thenReturn("");
94-
Reader reader = new StringReader(JenkinsBasePointGenerator.AGENT_LOG_PATTERN + "slave-1");
98+
Reader reader = new StringReader(JenkinsBasePointGenerator.AGENT_LOG_PATTERN + NODE_NAME);
9599
Mockito.when(build.getLogReader()).thenReturn(reader);
96100
JenkinsBasePointGenerator generator = new JenkinsBasePointGenerator(build, listener, measurementRenderer, currTime, StringUtils.EMPTY, StringUtils.EMPTY, CUSTOM_PREFIX, MEASUREMENT_NAME, mockedEnvVars);
97101
Point[] points = generator.generate();
98102
String lineProtocol = points[0].toLineProtocol();
99103

100-
assertTrue(lineProtocol.contains("build_agent_name=\"slave-1\""));
101-
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
104+
assertTrue(lineProtocol.contains("build_agent_name=\"" + NODE_NAME + "\""));
105+
assertTrue(lineProtocol.contains(PROJECT_PATH));
102106
}
103107

104108
@Test
@@ -109,7 +113,7 @@ public void agent_not_present() {
109113
String lineProtocol = points[0].toLineProtocol();
110114

111115
assertTrue(lineProtocol.contains("build_agent_name=\"\""));
112-
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
116+
assertTrue(lineProtocol.contains(PROJECT_PATH));
113117
}
114118

115119
@Test
@@ -121,7 +125,7 @@ public void branch_present() {
121125
String lineProtocol = points[0].toLineProtocol();
122126

123127
assertTrue(lineProtocol.contains("build_branch_name=\"develop\""));
124-
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
128+
assertTrue(lineProtocol.contains(PROJECT_PATH));
125129
}
126130

127131
@Test
@@ -132,7 +136,7 @@ public void brach_not_present() {
132136
String lineProtocol = points[0].toLineProtocol();
133137

134138
assertTrue(lineProtocol.contains("build_branch_name=\"\""));
135-
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
139+
assertTrue(lineProtocol.contains(PROJECT_PATH));
136140
}
137141

138142

src/test/java/jenkinsci/plugins/influxdb/renderer/ProjectNameRendererTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,28 +32,28 @@ public void before() {
3232
public void customProjectNameWithCustomPrefix() {
3333
ProjectNameRenderer projectNameRenderer = new ProjectNameRenderer(CUSTOM_PREFIX, CUSTOM_PROJECT_NAME);
3434
String renderedProjectName = projectNameRenderer.render(build);
35-
assertTrue(renderedProjectName.startsWith("test_prefix_test_projectname"));
35+
assertTrue(renderedProjectName.startsWith(CUSTOM_PREFIX + "_" + CUSTOM_PROJECT_NAME));
3636
}
3737

3838
@Test
3939
public void customProjectNameWithNullPrefix() {
4040
ProjectNameRenderer projectNameRenderer = new ProjectNameRenderer(null, CUSTOM_PROJECT_NAME);
4141
String renderedProjectName = projectNameRenderer.render(build);
42-
assertTrue(renderedProjectName.startsWith("test_projectname"));
42+
assertTrue(renderedProjectName.startsWith(CUSTOM_PROJECT_NAME));
4343
}
4444

4545
@Test
4646
public void nullProjectNameWithCustomPrefix() {
4747
ProjectNameRenderer projectNameRenderer = new ProjectNameRenderer(CUSTOM_PREFIX, null);
4848
String renderedProjectName = projectNameRenderer.render(build);
49-
assertTrue(renderedProjectName.startsWith("test_prefix_master"));
49+
assertTrue(renderedProjectName.startsWith(CUSTOM_PREFIX + "_" + JOB_NAME));
5050
}
5151

5252
@Test
5353
public void nullProjectNameWithNullPrefix() {
5454
ProjectNameRenderer projectNameRenderer = new ProjectNameRenderer(null, null);
5555
String renderedProjectName = projectNameRenderer.render(build);
56-
assertTrue(renderedProjectName.startsWith("master"));
56+
assertTrue(renderedProjectName.startsWith(JOB_NAME));
5757
}
5858

5959
@Test

0 commit comments

Comments
 (0)