public Void call() throws InterruptedException, IOException { while(true) { Thread.sleep(500); JobWithDetails jwd = server.getJobs().get(jobName).details(); try { // Throws NPE until the first build succeeds jwd.getLastSuccessfulBuild(); } catch (NullPointerException e) { continue; } // build succeeded return null; } } }
bentenSlackFields.add(new BentenSlackField("Last Successful Build",Integer.toString(jobWithDetails.getLastSuccessfulBuild().getNumber()),true)); bentenSlackFields.add(new BentenSlackField("Last Failed Build",Integer.toString(jobWithDetails.getLastFailedBuild().getNumber()),true)); bentenSlackFields.add(new BentenSlackField("Is in Queue",Boolean.toString(jobWithDetails.isInQueue()),true));
@Test public void testCreateJob() throws Exception { final String sourceJob = "pr"; final String jobName = "test-job-" + UUID.randomUUID().toString(); String sourceXml = server.getJobXml(sourceJob); server.createJob(jobName, sourceXml); Map<String, Job> jobs = server.getJobs(); assertTrue(jobs.containsKey(jobName)); JobWithDetails thisJob = jobs.get(jobName).details(); assertNotNull(thisJob); assertTrue(thisJob.getBuilds().size() == 0); thisJob.build(ImmutableMap.of("foo_param", "MUST_PROVIDE_VALUES_DEFAULTS_DONT_WORK")); // wait to see if the job finishes, but with a timeout Future<Void> future = executor.submit(new PerformPollingTest(server, jobName)); // If this times out, either jenkins is slow or our test failed! // IME, usually takes about 10-15 seconds future.get(30, TimeUnit.SECONDS); Build b = server.getJobs().get(jobName).details().getLastSuccessfulBuild(); assertTrue(b != null); }