aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java')
-rw-r--r--src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java78
1 files changed, 41 insertions, 37 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java
index a913b63..1d11aa8 100644
--- a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java
+++ b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java
@@ -9,8 +9,8 @@ import java.sql.*;
import java.util.List;
import java.util.*;
-import static fj.data.Option.*;
import static io.trygvis.esper.testing.jenkins.JenkinsClient.*;
+import static java.lang.System.*;
public class JenkinsServer implements TransactionalActor {
private static final Logger logger = LoggerFactory.getLogger(JenkinsServer.class);
@@ -23,8 +23,10 @@ public class JenkinsServer implements TransactionalActor {
}
public void act(Connection c) throws Exception {
+ long start = currentTimeMillis();
+
JenkinsDao dao = new JenkinsDao(c);
- Option<List<JenkinsEntryXml>> option = client.fetchRss(URI.create(server.url.toASCIIString() + "/rssAll"));
+ Option<List<JenkinsEntryXml>> option = client.fetchRss(URI.create(server.url.toASCIIString() + "/rssLatest"));
if (option.isNone()) {
return;
@@ -46,24 +48,42 @@ public class JenkinsServer implements TransactionalActor {
logger.info("New build: " + entry.id + ", fetching info");
- i++;
-
- Option<JenkinsBuildXml> o2 = client.fetchBuild(apiXml(entry.url));
+ Option<JenkinsBuildXml> buildXmlOption = client.fetchBuild(apiXml(entry.url));
- if (o2.isNone()) {
+ if (buildXmlOption.isNone()) {
continue;
}
- JenkinsBuildXml build = o2.some();
+ JenkinsBuildXml build = buildXmlOption.some();
- Option<UUID> job = findJob(dao, server, build);
+ URI jobUrl = createJobUrl(build.url.toASCIIString());
- if (job.isNone()) {
- continue;
+ Option<JenkinsJobDto> jobDtoOption = dao.selectJobByUrl(jobUrl);
+
+ UUID job;
+
+ if (jobDtoOption.isSome()) {
+ job = jobDtoOption.some().uuid;
+ } else {
+ logger.info("New job: " + jobUrl + ", fetching info");
+
+ Option<JenkinsJobXml> jobXmlOption = client.fetchJob(apiXml(jobUrl));
+
+ if (jobXmlOption.isNone()) {
+ continue;
+ }
+
+ JenkinsJobXml xml = jobXmlOption.some();
+
+ job = dao.insertJob(server.uuid, xml.url, xml.displayName);
+
+ logger.info("New job: " + xml.displayName.orSome(xml.url.toASCIIString()) + ", uuid=" + job);
}
+ i++;
+
UUID uuid = dao.insertBuild(
- job.some(),
+ job,
entry.id,
build.url,
build.result,
@@ -74,33 +94,9 @@ public class JenkinsServer implements TransactionalActor {
logger.info("Build inserted: " + uuid + ", i=" + i);
}
- logger.info("Inserted " + i + " new events.");
- }
-
- private Option<UUID> findJob(JenkinsDao dao, JenkinsServerDto server, JenkinsBuildXml build) throws SQLException {
- URI jobUrl = createJobUrl(build.url.toASCIIString());
-
- Option<JenkinsJobDto> o2 = dao.selectJobByUrl(jobUrl);
-
- if (o2.isSome()) {
- return some(o2.some().uuid);
- }
-
- logger.info("New job: " + jobUrl + ", fetching info");
-
- Option<JenkinsJobXml> o = client.fetchJob(apiXml(jobUrl));
-
- if (o.isNone()) {
- return none();
- }
-
- JenkinsJobXml xml = o.some();
-
- UUID uuid = dao.insertJob(server.uuid, xml.url, xml.displayName);
+ long end = currentTimeMillis();
- logger.info("New job: " + xml.displayName.orSome(xml.url.toASCIIString()) + ", uuid=" + uuid);
-
- return some(uuid);
+ logger.info("Inserted " + i + " new builds in " + (end - start) + "ms.");
}
/**
@@ -115,6 +111,14 @@ public class JenkinsServer implements TransactionalActor {
return URI.create(u);
}
+ if (u.matches(".*/[.-_a-zA-Z]*\\$.*/[0-9]*/")) {
+ u = u.substring(0, u.lastIndexOf("/"));
+ u = u.substring(0, u.lastIndexOf("/"));
+ u = u.substring(0, u.lastIndexOf("/") + 1);
+
+ return URI.create(u);
+ }
+
if (u.endsWith("/")) {
u = u.substring(0, u.length() - 1);
}