From 5d56a80555ebe5a419dae3b1b849ffa78449b410 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sat, 8 Dec 2012 00:52:19 +0100 Subject: o Storing Jenkins builds discovered from the feed. --- .../esper/testing/jenkins/JenkinsServer.java | 104 +++++++-------------- 1 file changed, 35 insertions(+), 69 deletions(-) (limited to 'src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java') 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 49b8995..9d12456 100644 --- a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java +++ b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServer.java @@ -1,99 +1,65 @@ package io.trygvis.esper.testing.jenkins; -import fj.*; import fj.data.*; -import static fj.data.Option.*; import io.trygvis.esper.testing.object.*; -import org.codehaus.httpcache4j.util.*; -import org.joda.time.*; -import java.io.*; import java.net.*; +import java.sql.*; import java.util.*; -import java.util.HashSet; import java.util.List; -import java.util.concurrent.*; - -public class JenkinsServer implements Closeable { +public class JenkinsServer implements TransactionalActor { private final JenkinsClient client; public final URI uri; - private final ObjectManager jobManager; - private boolean shouldRun = true; - private final Thread thread; + public JenkinsServer(JenkinsClient client, URI uri) { + this.client = client; + this.uri = uri; + } - private Option> jenkins = none(); + public void act(Connection c) throws Exception { + JenkinsDao dao = new JenkinsDao(c); + Option> option = client.fetchRss(URI.create(uri.toASCIIString() + "/rssAll")); - public JenkinsServer(final ScheduledExecutorService executorService, final JenkinsClient client, URI uri) { - this.client = client; - this.uri = URIBuilder.fromURI(uri).addRawPath("api/xml").toURI(); + if(option.isNone()) { + return; + } - jobManager = new ObjectManager<>("JenkinsJob", Collections.emptySet(), new ObjectFactory() { - public JenkinsJob create(URI uri) { - return new JenkinsJob(executorService, client, uri); - } - }); + List list = option.some(); - thread = new Thread(new Runnable() { - public void run() { - JenkinsServer.this.run(); - } - }); - thread.setDaemon(true); - thread.start(); - } + System.out.println("Got " + list.size() + " entries."); - public void close() throws IOException { - shouldRun = false; - thread.interrupt(); - while (thread.isAlive()) { - try { - thread.join(); - } catch (InterruptedException e) { - continue; - } - } - } + int i = 0; - private void run() { - while (shouldRun) { - try { - doWork(); - } catch (Exception e) { - e.printStackTrace(System.out); - } + for (JenkinsEntryXml entry : list) { + Option o = dao.selectBuildByEntryId(entry.id); - try { - Thread.sleep(10 * 1000); - } catch (InterruptedException e) { - // ignore + if(o.isSome()) { + System.out.println("Old event: " + entry.id); + continue; } - } - } - public Option> getJenkins() { - return jenkins; - } + System.out.println("New event: " + entry.id + ", fetching build info"); - public Collection getJobs() { - return jobManager.getObjects(); - } + i++; - private void doWork() { - try { - JenkinsXml xml = client.fetchJobs(uri); + Option o2 = client.fetchBuild(URI.create(entry.uri.toASCIIString() + "/api/xml")); - List jobUris = new ArrayList<>(xml.jobs.size()); - for (JenkinsJobEntryXml job : xml.jobs) { - jobUris.add(URI.create(job.url)); + if(o2.isNone()) { + continue; } - this.jenkins = some(P.p(xml, new LocalDateTime())); + JenkinsBuildXml build = o2.some(); + + UUID uuid = dao.insertBuild(entry.id, build.uri, build.result, build.number, build.duration, build.timestamp); - jobManager.update(new HashSet<>(jobUris)); - } catch (Throwable e) { - e.printStackTrace(System.out); + System.out.println("Build inserted: " + uuid + ", i=" + i); + +// if(i == 1) { +// break; +// } } + + System.out.println("Inserted " + i + " new events."); } } -- cgit v1.2.3