Skip to content

Overall code maintenance #174

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Feb 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ THE SOFTWARE.

<scm>
<connection>scm:git:ssh://github.com/jenkinsci/influxdb-plugin.git</connection>
<developerConnection>scm:git:ssh://[email protected]/jenkinsci/influxdb-plugin.git</developerConnection>
<developerConnection>scm:git:git://[email protected]/jenkinsci/influxdb-plugin.git</developerConnection>
<url>https://github.com/jenkinsci/influxdb-plugin</url>
<tag>HEAD</tag>
</scm>
Expand Down Expand Up @@ -210,6 +210,29 @@ THE SOFTWARE.
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.11</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>generate-code-coverage-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

<!-- The current maintainers of the plugin -->
<developers>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,131 +179,74 @@ public void perform(Run<?, ?> build, TaskListener listener, EnvVars env) {
addPoints(pointsToWrite, jGen, listener);

AgentPointGenerator agentGen = new AgentPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
if (agentGen.hasReport()) {
addPoints(pointsToWrite, agentGen, listener);
} else {
logger.log(Level.FINE, "Data source empty: Agent Point");
}
addPointsFromPlugin(pointsToWrite, agentGen, listener, "Custom Data");

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

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

try {
CoberturaPointGenerator cGen = new CoberturaPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
if (cGen.hasReport()) {
listener.getLogger().println("[InfluxDB Plugin] Cobertura data found. Writing to InfluxDB...");
addPoints(pointsToWrite, cGen, listener);
}
addPointsFromPlugin(pointsToWrite, cGen, listener, "Cobertura");
} catch (NoClassDefFoundError ignore) {
logger.log(Level.FINE, "Plugin skipped: Cobertura");
logger.fine("Plugin skipped: Cobertura");
}

try {
RobotFrameworkPointGenerator rfGen = new RobotFrameworkPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
if (rfGen.hasReport()) {
listener.getLogger().println("[InfluxDB Plugin] Robot Framework data found. Writing to InfluxDB...");
addPoints(pointsToWrite, rfGen, listener);
}
addPointsFromPlugin(pointsToWrite, rfGen, listener, "Robot Framework");
} catch (NoClassDefFoundError ignore) {
logger.log(Level.FINE, "Plugin skipped: Robot Framework");
logger.fine("Plugin skipped: Robot Framework");
}

try {
JacocoPointGenerator jacoGen = new JacocoPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
if (jacoGen.hasReport()) {
listener.getLogger().println("[InfluxDB Plugin] JaCoCo data found. Writing to InfluxDB...");
addPoints(pointsToWrite, jacoGen, listener);
}
addPointsFromPlugin(pointsToWrite, jacoGen, listener, "JaCoCo");
} catch (NoClassDefFoundError ignore) {
logger.log(Level.FINE, "Plugin skipped: JaCoCo");
logger.fine("Plugin skipped: JaCoCo");
}

try {
PerformancePointGenerator perfGen = new PerformancePointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
if (perfGen.hasReport()) {
listener.getLogger().println("[InfluxDB Plugin] Performance data found. Writing to InfluxDB...");
addPoints(pointsToWrite, perfGen, listener);
}
addPointsFromPlugin(pointsToWrite, perfGen, listener, "Performance");
} catch (NoClassDefFoundError ignore) {
logger.log(Level.FINE, "Plugin skipped: Performance");
logger.fine("Plugin skipped: Performance");
}

try {
GitPointGenerator gitGen = new GitPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
if (gitGen.hasReport()) {
listener.getLogger().println("[InfluxDB Plugin] Git data found. Writing to InfluxDB...");
addPoints(pointsToWrite, gitGen, listener);
} else {
logger.log(Level.FINE, "Plugin skipped: Git");
}
addPointsFromPlugin(pointsToWrite, gitGen, listener, "Git");
} catch (NoClassDefFoundError ignore) {
logger.log(Level.FINE, "Plugin skipped: Git");
logger.fine("Plugin skipped: Git");
}

JUnitPointGenerator junitGen = new JUnitPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix, env);
if (junitGen.hasReport()) {
listener.getLogger().println("[InfluxDB Plugin] JUnit data found. Writing to InfluxDB...");
addPoints(pointsToWrite, junitGen, listener);
} else {
logger.log(Level.FINE, "Plugin skipped: JUnit");
}
addPointsFromPlugin(pointsToWrite, junitGen, listener, "JUnit");

SonarQubePointGenerator sonarGen = new SonarQubePointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix, env);
if (sonarGen.hasReport()) {
listener.getLogger().println("[InfluxDB Plugin] SonarQube data found. Writing to InfluxDB...");
addPoints(pointsToWrite, sonarGen, listener);
} else {
logger.log(Level.FINE, "Plugin skipped: SonarQube");
}
addPointsFromPlugin(pointsToWrite, sonarGen, listener, "SonarQube");

SerenityJsonSummaryFile serenityJsonSummaryFile = new SerenityJsonSummaryFile(env.get("WORKSPACE"));
SerenityPointGenerator serenityGen = new SerenityPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix, serenityJsonSummaryFile);
if (serenityGen.hasReport()) {
listener.getLogger().println("[InfluxDB Plugin] Serenity data found. Writing to InfluxDB...");
addPoints(pointsToWrite, serenityGen, listener);
} else {
logger.log(Level.FINE, "Plugin skipped: Serenity");
}
addPointsFromPlugin(pointsToWrite, serenityGen, listener, "Serenity");

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

try {
PerfPublisherPointGenerator perfPublisherGen = new PerfPublisherPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
if (perfPublisherGen.hasReport()) {
listener.getLogger().println("[InfluxDB Plugin] Performance Publisher data found. Writing to InfluxDB...");
addPoints(pointsToWrite, perfPublisherGen, listener);
}
addPointsFromPlugin(pointsToWrite, perfPublisherGen, listener, "Performance Publisher");
} catch (NoClassDefFoundError ignore) {
logger.log(Level.FINE, "Plugin skipped: Performance Publisher");
logger.fine("Plugin skipped: Performance Publisher");
}

try {
MetricsPointGenerator metricsGen = new MetricsPointGenerator(build, listener, measurementRenderer, timestamp, jenkinsEnvParameterTag, customPrefix);
if (metricsGen.hasReport()) {
listener.getLogger().println("[InfluxDB plugin] Metrics plugin data found. Writing to InfluxDB...");
addPoints(pointsToWrite, metricsGen, listener);
}
addPointsFromPlugin(pointsToWrite, metricsGen, listener, "Metrics");
} catch (NoClassDefFoundError ignore) {
logger.log(Level.FINE, "Plugin skipped: Metrics");
logger.fine("Plugin skipped: Metrics");
}

for (Target target : selectedTargets) {
Expand All @@ -314,7 +257,7 @@ public void perform(Run<?, ?> build, TaskListener listener, EnvVars env) {
String logMessage = String.format("[InfluxDB Plugin] Skipping target '%s' due to invalid URL '%s'",
target.getDescription(),
target.getUrl());
logger.log(Level.WARNING, logMessage);
logger.warning(logMessage);
listener.getLogger().println(logMessage);
continue;
}
Expand All @@ -323,7 +266,7 @@ public void perform(Run<?, ?> build, TaskListener listener, EnvVars env) {
target.getDescription(),
target.getUrl(),
target.getDatabase());
logger.log(Level.FINE, logMessage);
logger.fine(logMessage);
listener.getLogger().println(logMessage);

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

private void addPointsFromPlugin(List<Point> pointsToWrite, PointGenerator generator, TaskListener listener, String plugin) {
if (generator.hasReport()) {
listener.getLogger().println("[InfluxDB plugin] " + plugin + " plugin data found. Writing to InfluxDB...");
addPoints(pointsToWrite, generator, listener);
} else {
logger.fine("Data not found: " + plugin);
}
}

private InfluxDBClient getInfluxDBClient(Run<?, ?> build, Target target, URL url) {
StandardUsernamePasswordCredentials credentials = CredentialsProvider.findCredentialById(target.getCredentialsId(), StandardUsernamePasswordCredentials.class, build);
InfluxDBClient influxDB;
Expand Down
16 changes: 0 additions & 16 deletions src/main/java/jenkinsci/plugins/influxdb/InfluxDbStep.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@ public class InfluxDbStep extends Step {
private String jenkinsEnvParameterTag;
private String measurementName;

@Deprecated
private transient boolean replaceDashWithUnderscore;

@DataBoundConstructor
public InfluxDbStep(String selectedTarget) {
this.selectedTarget = selectedTarget;
Expand Down Expand Up @@ -142,16 +139,6 @@ public void setMeasurementName(String measurementName) {
this.measurementName = measurementName;
}

public boolean getReplaceDashWithUnderscore() {
return replaceDashWithUnderscore;
}

@Deprecated
@DataBoundSetter
public void setReplaceDashWithUnderscore(boolean replaceDashWithUnderscore) {
this.replaceDashWithUnderscore = replaceDashWithUnderscore;
}

public Target getTarget() {
Jenkins jenkins = Jenkins.getInstanceOrNull();
if (jenkins != null) {
Expand All @@ -171,9 +158,6 @@ public Target getTarget() {

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,20 +83,16 @@ private boolean isPublicationInBuild(Target target, Run<?, ?> build) {
if (publisher != null) {
String buildTarget = publisher.getSelectedTarget();
return buildTarget != null && StringUtils.equals(buildTarget, target.getDescription());
} else {
return false;
}
} else {
return false;
}
return false;
}

private boolean isTargetMatchingPath(@Nonnull Target target, @Nonnull String path) {
if (target.isGlobalListener()) {
String pattern = target.getGlobalListenerFilter();
return StringUtils.isBlank(pattern) || Pattern.matches(pattern, path);
} else {
return false;
}
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ public class JenkinsBasePointGeneratorTest {
private static final String JENKINS_ENV_RESOLVED_VALUE_TAG = "resolvedEnvValueTag";
private static final String MEASUREMENT_NAME = "jenkins_data";

private static final String PROJECT_PATH = "project_path=\"folder/master\"";
private static final String NODE_NAME = "slave-1";

private Run<?, ?> build;
private ProjectNameRenderer measurementRenderer;
private Executor executor;
Expand All @@ -63,7 +66,7 @@ public void before() throws Exception {
Mockito.doReturn(job).when(build).getParent();
Mockito.when(build.getEnvironment(listener)).thenReturn(mockedEnvVars);
Mockito.when(executor.getOwner()).thenReturn(computer);
Mockito.when(computer.getName()).thenReturn("slave-1");
Mockito.when(computer.getName()).thenReturn(NODE_NAME);
Mockito.when(job.getName()).thenReturn(JOB_NAME);
Mockito.when(job.getRelativeNameFrom(Mockito.nullable(Jenkins.class))).thenReturn("folder/" + JOB_NAME);
Mockito.when(job.getBuildHealth()).thenReturn(new HealthReport());
Expand All @@ -79,26 +82,27 @@ public void before() throws Exception {
@Test
public void agent_present() {
Mockito.when(build.getExecutor()).thenReturn(executor);
Mockito.when(mockedEnvVars.get("NODE_NAME")).thenReturn("slave-1");
Mockito.when(mockedEnvVars.get("NODE_NAME")).thenReturn(NODE_NAME);
JenkinsBasePointGenerator generator = new JenkinsBasePointGenerator(build, listener, measurementRenderer, currTime, StringUtils.EMPTY, StringUtils.EMPTY, CUSTOM_PREFIX, MEASUREMENT_NAME, mockedEnvVars);
Point[] points = generator.generate();
String lineProtocol = points[0].toLineProtocol();

assertTrue(lineProtocol.contains("build_agent_name=\"slave-1\""));
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
assertTrue(lineProtocol.contains("build_agent_name=\"" + NODE_NAME + "\""));
assertTrue(lineProtocol.contains(PROJECT_PATH));
}

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

assertTrue(lineProtocol.contains("build_agent_name=\"slave-1\""));
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
assertTrue(lineProtocol.contains("build_agent_name=\"" + NODE_NAME + "\""));
assertTrue(lineProtocol.contains(PROJECT_PATH));
}

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

assertTrue(lineProtocol.contains("build_agent_name=\"\""));
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
assertTrue(lineProtocol.contains(PROJECT_PATH));
}

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

assertTrue(lineProtocol.contains("build_branch_name=\"develop\""));
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
assertTrue(lineProtocol.contains(PROJECT_PATH));
}

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

assertTrue(lineProtocol.contains("build_branch_name=\"\""));
assertTrue(lineProtocol.contains("project_path=\"folder/master\""));
assertTrue(lineProtocol.contains(PROJECT_PATH));
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,28 +32,28 @@ public void before() {
public void customProjectNameWithCustomPrefix() {
ProjectNameRenderer projectNameRenderer = new ProjectNameRenderer(CUSTOM_PREFIX, CUSTOM_PROJECT_NAME);
String renderedProjectName = projectNameRenderer.render(build);
assertTrue(renderedProjectName.startsWith("test_prefix_test_projectname"));
assertTrue(renderedProjectName.startsWith(CUSTOM_PREFIX + "_" + CUSTOM_PROJECT_NAME));
}

@Test
public void customProjectNameWithNullPrefix() {
ProjectNameRenderer projectNameRenderer = new ProjectNameRenderer(null, CUSTOM_PROJECT_NAME);
String renderedProjectName = projectNameRenderer.render(build);
assertTrue(renderedProjectName.startsWith("test_projectname"));
assertTrue(renderedProjectName.startsWith(CUSTOM_PROJECT_NAME));
}

@Test
public void nullProjectNameWithCustomPrefix() {
ProjectNameRenderer projectNameRenderer = new ProjectNameRenderer(CUSTOM_PREFIX, null);
String renderedProjectName = projectNameRenderer.render(build);
assertTrue(renderedProjectName.startsWith("test_prefix_master"));
assertTrue(renderedProjectName.startsWith(CUSTOM_PREFIX + "_" + JOB_NAME));
}

@Test
public void nullProjectNameWithNullPrefix() {
ProjectNameRenderer projectNameRenderer = new ProjectNameRenderer(null, null);
String renderedProjectName = projectNameRenderer.render(build);
assertTrue(renderedProjectName.startsWith("master"));
assertTrue(renderedProjectName.startsWith(JOB_NAME));
}

@Test
Expand Down