diff options
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.java | 78 |
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); } |