From b371aca4a0a0593c6dbee9049b2180ebca842c28 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Fri, 28 Oct 2022 10:36:32 +0100 Subject: [PATCH 1/3] JENKINS-69966 Fix plugin on 2.375 --- .../plugins/cloudstats/CloudAction/summary.groovy | 2 +- .../plugins/cloudstats/CloudStatistics/index.groovy | 8 ++++---- .../jenkinsci/plugins/cloudstats/StatsWidget/index.groovy | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/resources/org/jenkinsci/plugins/cloudstats/CloudAction/summary.groovy b/src/main/resources/org/jenkinsci/plugins/cloudstats/CloudAction/summary.groovy index 4693342..43b8299 100644 --- a/src/main/resources/org/jenkinsci/plugins/cloudstats/CloudAction/summary.groovy +++ b/src/main/resources/org/jenkinsci/plugins/cloudstats/CloudAction/summary.groovy @@ -18,7 +18,7 @@ Health.Report report = index.cloudHealth(action.cloud.name).current HealthReport hr = report.weather h2 { - l.icon("class": "${hr.iconClassName} icon-md", alt: hr.score) + l.icon("class": "${hr.iconClassName} icon-md", alt: hr.score + "") st.nbsp() text("${action.displayName} (Health ${report})") } diff --git a/src/main/resources/org/jenkinsci/plugins/cloudstats/CloudStatistics/index.groovy b/src/main/resources/org/jenkinsci/plugins/cloudstats/CloudStatistics/index.groovy index 1cb91fa..235ee5c 100644 --- a/src/main/resources/org/jenkinsci/plugins/cloudstats/CloudStatistics/index.groovy +++ b/src/main/resources/org/jenkinsci/plugins/cloudstats/CloudStatistics/index.groovy @@ -56,13 +56,13 @@ l.layout(permission: stats.getRequiredPermission()) { td() td { def score = ch.overall - l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score) + l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score + "") st.nbsp() text(score) } td { def score = ch.current - l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score) + l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score + "") st.nbsp() text(score) } @@ -76,13 +76,13 @@ l.layout(permission: stats.getRequiredPermission()) { td(template) td { def score = th.overall - l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score) + l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score + "") st.nbsp() text(score) } td { def score = th.current - l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score) + l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score + "") st.nbsp() text(score) } diff --git a/src/main/resources/org/jenkinsci/plugins/cloudstats/StatsWidget/index.groovy b/src/main/resources/org/jenkinsci/plugins/cloudstats/StatsWidget/index.groovy index 1a56d13..b2be470 100644 --- a/src/main/resources/org/jenkinsci/plugins/cloudstats/StatsWidget/index.groovy +++ b/src/main/resources/org/jenkinsci/plugins/cloudstats/StatsWidget/index.groovy @@ -50,7 +50,7 @@ if (widget.displayed) { tr { def score = index.cloudHealth(cloudName).getCurrent() td(colspan: 2) { - l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score) + l.icon("class": "${score.weather.iconClassName} icon-sm", alt: score.weather.score + "") st.nbsp() if (cloudViews && j.getCloud(cloudName) != null) { a(href: rootURL + "/cloud/" + cloudName) { @@ -68,7 +68,7 @@ if (widget.displayed) { tr { td() td { - l.icon("class": "${health.current.weather.iconClassName} icon-sm", alt: health.current.weather.score) + l.icon("class": "${health.current.weather.iconClassName} icon-sm", alt: health.current.weather.score + "") st.nbsp() text(templateName) } From 89fef0c3ecab70497204e30b4b6dd6b20de24e09 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Fri, 28 Oct 2022 11:48:39 +0100 Subject: [PATCH 2/3] Wait for async to complete --- pom.xml | 13 +++++++++++ .../cloudstats/CloudStatisticsTest.java | 23 +++++++++---------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 582a64c..176fbc5 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,19 @@ 2.3 test + + org.awaitility + awaitility + 4.2.0 + test + + + + org.hamcrest + hamcrest + + + diff --git a/src/test/java/org/jenkinsci/plugins/cloudstats/CloudStatisticsTest.java b/src/test/java/org/jenkinsci/plugins/cloudstats/CloudStatisticsTest.java index b47dade..705a77d 100644 --- a/src/test/java/org/jenkinsci/plugins/cloudstats/CloudStatisticsTest.java +++ b/src/test/java/org/jenkinsci/plugins/cloudstats/CloudStatisticsTest.java @@ -31,12 +31,7 @@ import hudson.BulkChange; import hudson.ExtensionList; import hudson.Functions; -import hudson.model.Computer; -import hudson.model.FreeStyleBuild; -import hudson.model.FreeStyleProject; -import hudson.model.Label; -import hudson.model.LoadStatistics; -import hudson.model.Node; +import hudson.model.*; import hudson.model.queue.QueueTaskFuture; import hudson.security.AuthorizationStrategy; import hudson.slaves.NodeProvisioner; @@ -56,12 +51,16 @@ import javax.annotation.Nonnull; import java.io.ObjectStreamException; import java.net.URL; +import java.time.Duration; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.concurrent.Callable; +import java.util.concurrent.TimeUnit; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.awaitility.Awaitility.await; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsString; @@ -229,13 +228,13 @@ public void ui() throws Exception { Id okId = new Id("MyCloud", "working-template", "future-agent"); provisioningListener.onStarted(okId); - slave = TrackedAgent.create(okId, j); - provisioningListener.onComplete(okId, slave); - slave.toComputer().waitUntilOnline(); - Thread.sleep(500); - slave.toComputer().doDoDelete(); + final Node agent = TrackedAgent.create(okId, j); + provisioningListener.onComplete(okId, agent); + agent.toComputer().waitUntilOnline(); + Thread.sleep(1000L); + agent.toComputer().doDoDelete(); - Thread.sleep(500); + await().atMost(10, SECONDS).until(() -> j.jenkins.getNode(agent.getNodeName()) == null); // Then ProvisioningActivity failedToProvision = cs.getActivityFor(failId); From c4b29eb941a1b525ac2ca2c52dc69bf5bcc4dfaf Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Fri, 28 Oct 2022 14:42:01 +0100 Subject: [PATCH 3/3] Incrementalified --- .gitignore | 1 - .mvn/extensions.xml | 7 +++++++ .mvn/maven.config | 2 ++ pom.xml | 13 ++++++++----- 4 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 .mvn/extensions.xml create mode 100644 .mvn/maven.config diff --git a/.gitignore b/.gitignore index d807477..3d66646 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -/.* *.iml /work diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml new file mode 100644 index 0000000..9ac2968 --- /dev/null +++ b/.mvn/extensions.xml @@ -0,0 +1,7 @@ + + + io.jenkins.tools.incrementals + git-changelist-maven-extension + 1.4 + + diff --git a/.mvn/maven.config b/.mvn/maven.config new file mode 100644 index 0000000..2a0299c --- /dev/null +++ b/.mvn/maven.config @@ -0,0 +1,2 @@ +-Pconsume-incrementals +-Pmight-produce-incrementals diff --git a/pom.xml b/pom.xml index 176fbc5..c0c3cfe 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ cloud-stats - 0.28-SNAPSHOT + ${revision}${changelist} hpi Cloud Statistics Plugin Report Jenkins dynamic provisioning activities and statistics @@ -29,10 +29,10 @@ - scm:git:git://github.com/jenkinsci/cloud-stats-plugin.git - scm:git:git@github.com:jenkinsci/cloud-stats-plugin.git - https://github.com/jenkinsci/cloud-stats-plugin - HEAD + scm:git:git://github.com/${gitHubRepo}.git + scm:git:git@github.com:${gitHubRepo}.git + https://github.com/${gitHubRepo} + ${scmTag} @@ -72,6 +72,9 @@ + 0.28 + -SNAPSHOT + jenkinsci/cloud-stats-plugin 2.235.1 8 false