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.java104
1 files changed, 35 insertions, 69 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 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<URI, JenkinsJob> jobManager;
- private boolean shouldRun = true;
- private final Thread thread;
+ public JenkinsServer(JenkinsClient client, URI uri) {
+ this.client = client;
+ this.uri = uri;
+ }
- private Option<P2<JenkinsXml, LocalDateTime>> jenkins = none();
+ public void act(Connection c) throws Exception {
+ JenkinsDao dao = new JenkinsDao(c);
+ Option<List<JenkinsEntryXml>> 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.<URI>emptySet(), new ObjectFactory<URI, JenkinsJob>() {
- public JenkinsJob create(URI uri) {
- return new JenkinsJob(executorService, client, uri);
- }
- });
+ List<JenkinsEntryXml> 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<JenkinsBuildDto> 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<P2<JenkinsXml, LocalDateTime>> getJenkins() {
- return jenkins;
- }
+ System.out.println("New event: " + entry.id + ", fetching build info");
- public Collection<JenkinsJob> getJobs() {
- return jobManager.getObjects();
- }
+ i++;
- private void doWork() {
- try {
- JenkinsXml xml = client.fetchJobs(uri);
+ Option<JenkinsBuildXml> o2 = client.fetchBuild(URI.create(entry.uri.toASCIIString() + "/api/xml"));
- List<URI> 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.");
}
}