hudson.model.Slave Java Examples
The following examples show how to use
hudson.model.Slave.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: AbsolutePathGeneratorITest.java From warnings-ng-plugin with MIT License | 6 votes |
/** * Verifies that the affected files will be copied even if the file name uses the wrong case (Windows only). */ @Test @Issue("JENKINS-58824") public void shouldMapIssueToAffectedFileIfPathIsInWrongCase() { assumeThat(isWindows()).as("Running not on Windows").isTrue(); Slave agent = createAgentWithWrongWorkspaceFolder(); FreeStyleProject project = createJobForAgent(agent); FilePath folder = createFolder(agent, project); createFileInAgentWorkspace(agent, project, "Folder/Test.java", SOURCE_CODE); createFileInAgentWorkspace(agent, project, "warnings.txt", "[javac] " + getAbsolutePathInLowerCase(folder) + ":1: warning: Test Warning for Jenkins"); Java javaJob = new Java(); javaJob.setPattern("warnings.txt"); enableWarnings(project, javaJob); AnalysisResult result = scheduleSuccessfulBuild(project); assertThat(result).hasTotalSize(1); assertThat(result).hasInfoMessages("-> resolved paths in source directory (1 found, 0 not found)"); assertThat(result).doesNotHaveInfoMessages("-> 0 copied, 1 not in workspace, 0 not-found, 0 with I/O error"); }
Example #2
Source File: StepsITest.java From warnings-ng-plugin with MIT License | 6 votes |
/** * Verifies that affected source files are copied to Jenkins build folder, even if the master - agent security * is active, see JENKINS-56007 for details. */ @Test @org.jvnet.hudson.test.Issue("JENKINS-56007") public void shouldCopySourcesIfMasterAgentSecurityIsActive() { Slave agent = createAgentWithEnabledSecurity("agent"); WorkflowJob project = createPipeline(); createFileInAgentWorkspace(agent, project, "Test.java", JAVA_CONTENT); project.setDefinition(new CpsFlowDefinition("node('agent') {\n" + " echo '[javac] Test.java:39: warning: Test Warning'\n" + " recordIssues tool: java()\n" + "}", true)); AnalysisResult result = scheduleSuccessfulBuild(project); assertThat(result).hasNoErrorMessages(); assertThat(result).hasTotalSize(1); assertThat(getConsoleLog(result)).contains("1 copied", "0 not in workspace", "0 not-found", "0 with I/O error"); // TODO: check for the links in the table model assertThat(getSourceCode(result, 0)).contains(JAVA_CONTENT); }
Example #3
Source File: AbsolutePathGeneratorITest.java From warnings-ng-plugin with MIT License | 6 votes |
@SuppressWarnings("checkstyle:IllegalCatch") private Slave createAgentWithWrongWorkspaceFolder() { try { JenkinsRule jenkinsRule = getJenkins(); int size = jenkinsRule.jenkins.getNodes().size(); DumbSlave slave = new DumbSlave("slave" + size, agentWorkspace.getRoot().getPath().toLowerCase(Locale.ENGLISH), jenkinsRule.createComputerLauncher(null)); slave.setLabelString("agent"); jenkinsRule.jenkins.addNode(slave); jenkinsRule.waitOnline(slave); return slave; } catch (Exception e) { throw new AssertionError(e); } }
Example #4
Source File: IntegrationTest.java From warnings-ng-plugin with MIT License | 6 votes |
/** * Creates an {@link DumbSlave agent} with the specified label. Master - agent security will be enabled. * * @param label * the label of the agent * * @return the agent */ protected Slave createAgentWithEnabledSecurity(final String label) { try { Slave agent = createAgent(label); FilePath child = getJenkins().getInstance() .getRootPath() .child("secrets/filepath-filters.d/30-default.conf"); child.delete(); child.write("", "ISO_8859_1"); Objects.requireNonNull(getJenkins().jenkins.getInjector()) .getInstance(AdminWhitelistRule.class).setMasterKillSwitch(false); getJenkins().jenkins.save(); return agent; } catch (IOException | InterruptedException e) { throw new AssertionError(e); } }
Example #5
Source File: JenkinsRule.java From jenkins-test-harness with MIT License | 6 votes |
/** * Waits for a newly created slave to come online. * @see #createSlave() */ public void waitOnline(Slave s) throws Exception { Computer computer = s.toComputer(); AtomicBoolean run = new AtomicBoolean(true); AnnotatedLargeText<?> logText = computer.getLogText(); Computer.threadPoolForRemoting.submit(() -> { long pos = 0; while (run.get() && !logText.isComplete()) { pos = logText.writeLogTo(pos, System.out); Thread.sleep(100); } return null; }); try { if (s.getLauncher().isLaunchSupported()) { computer.connect(false).get(); } else { while (!computer.isOnline()) { Thread.sleep(100); } } } finally { run.set(false); } }
Example #6
Source File: PipelineNodeTest.java From blueocean-plugin with MIT License | 6 votes |
@Test @Issue("JENKINS-49050") public void parallelStagesNonNested() throws Exception { WorkflowJob p = createWorkflowJobWithJenkinsfile(getClass(), "parallelStagesNonNested.jenkinsfile"); Slave s = j.createOnlineSlave(); s.setLabelString("foo"); s.setNumExecutors(2); // Run until completed WorkflowRun run = p.scheduleBuild2(0).waitForStart(); j.waitForCompletion(run); PipelineNodeGraphVisitor pipelineNodeGraphVisitor = new PipelineNodeGraphVisitor(run); List<FlowNodeWrapper> wrappers = pipelineNodeGraphVisitor.getPipelineNodes(); assertEquals(3, wrappers.size()); List<Map> nodes = get("/organizations/jenkins/pipelines/" + p.getName() + "/runs/1/nodes/", List.class); assertEquals(3, nodes.size()); }
Example #7
Source File: PipelineNodeTest.java From blueocean-plugin with MIT License | 6 votes |
@Test public void nestedStagesGroups() throws Exception { WorkflowJob p = createWorkflowJobWithJenkinsfile(getClass(), "nestedStagesGroups.jenkinsfile"); Slave s = j.createOnlineSlave(); s.setLabelString("foo"); s.setNumExecutors(4); // Run until completed WorkflowRun run = p.scheduleBuild2(0).waitForStart(); j.waitForCompletion(run); PipelineNodeGraphVisitor pipelineNodeGraphVisitor = new PipelineNodeGraphVisitor(run); assertTrue(pipelineNodeGraphVisitor.isDeclarative()); List<FlowNodeWrapper> wrappers = pipelineNodeGraphVisitor.getPipelineNodes(); assertEquals(7, wrappers.size()); }
Example #8
Source File: PipelineNodeTest.java From blueocean-plugin with MIT License | 6 votes |
@Test @Issue("JENKINS-49779") public void sequentialParallelStagesWithPost() throws Exception { WorkflowJob p = createWorkflowJobWithJenkinsfile(getClass(), "sequentialParallelWithPost.jenkinsfile"); Slave s = j.createOnlineSlave(); s.setNumExecutors(2); // Run until completed j.buildAndAssertSuccess(p); List<Map> nodes = get("/organizations/jenkins/pipelines/" + p.getName() + "/runs/1/nodes/", List.class); assertEquals(9, nodes.size()); Optional<Map> thirdSeqStage = nodes.stream() .filter(map -> map.get("displayName") .equals("third-sequential-stage")).findFirst(); assertTrue(thirdSeqStage.isPresent()); List<Map> steps = get("/organizations/jenkins/pipelines/" + p.getName() + "/runs/1/nodes/" + thirdSeqStage.get().get("id") + "/steps/", List.class); assertEquals(2, steps.size()); assertEquals("echo 'dummy text third-sequential-stage'", steps.get(0).get("displayDescription")); assertEquals("echo 'dummy text post multiple-stages'", steps.get(1).get("displayDescription")); }
Example #9
Source File: DockerComputerIOLauncher.java From yet-another-docker-plugin with MIT License | 5 votes |
@Override public void afterContainerCreate(DockerClient client, String containerId) throws IOException { // upload archive try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); TarArchiveOutputStream tarOut = new TarArchiveOutputStream(byteArrayOutputStream)) { // @see hudson.model.Slave.JnlpJar.getURL() // byte[] slavejar = IOUtils.toByteArray(Jenkins.getInstance().servletContext.getResourceAsStream("/WEB-INF/slave.jar")); // if (isNull(null)) { // // during the development this path doesn't have the files. // slavejar = Files.readAllBytes(Paths.get("./target/jenkins/WEB-INF/slave.jar")); // } byte[] slaveJar = new Slave.JnlpJar("slave.jar").readFully(); TarArchiveEntry entry = new TarArchiveEntry(SLAVE_JAR); entry.setSize(slaveJar.length); entry.setMode(0664); tarOut.putArchiveEntry(entry); tarOut.write(slaveJar); tarOut.closeArchiveEntry(); tarOut.close(); try (InputStream is = new ByteArrayInputStream(byteArrayOutputStream.toByteArray())) { client.copyArchiveToContainerCmd(containerId) .withTarInputStream(is) .withRemotePath("/") .exec(); } } }
Example #10
Source File: DeclarativeDockerUtilsTest.java From docker-workflow-plugin with MIT License | 5 votes |
@Test public void runsOnSpecifiedSlave() throws Exception { DockerTestUtil.assumeDocker(); Slave s = j.createOnlineSlave(); s.setLabelString("thisspec"); env(s).put("DOCKER_INDICATOR", "SPECIFIED").set(); s = j.createOnlineSlave(); s.setLabelString("thisone"); env(s).put("DOCKER_INDICATOR", "CORRECT").set(); GlobalConfig.get().setDockerLabel("thisone"); GlobalConfig.get().setRegistry(null); expect("org/jenkinsci/plugins/docker/workflow/declarative/agentDockerEnvSpecLabel").runFromRepo(false).logContains("Running on assumed Docker agent").go(); }
Example #11
Source File: DeclarativeDockerUtilsTest.java From docker-workflow-plugin with MIT License | 5 votes |
@Test public void runsOnCorrectSlave() throws Exception { DockerTestUtil.assumeDocker(); Slave s = j.createOnlineSlave(); s.setLabelString("notthis"); env(s).put("DOCKER_INDICATOR", "WRONG").set(); s = j.createOnlineSlave(); s.setLabelString("thisone"); env(s).put("DOCKER_INDICATOR", "CORRECT").set(); GlobalConfig.get().setDockerLabel("thisone"); GlobalConfig.get().setRegistry(null); expect("org/jenkinsci/plugins/docker/workflow/declarative/agentDockerEnvTest").runFromRepo(false).logContains("Running on assumed Docker agent").go(); }
Example #12
Source File: PipelineNodeTest.java From blueocean-plugin with MIT License | 5 votes |
@Test @Issue("JENKINS-49050") public void parallelStagesGroupsAndNestedStages() throws Exception { WorkflowJob p = createWorkflowJobWithJenkinsfile(getClass(), "parallelStagesGroupsAndStages.jenkinsfile"); Slave s = j.createOnlineSlave(); s.setLabelString("foo"); s.setNumExecutors(2); // Run until completed WorkflowRun run = p.scheduleBuild2(0).waitForStart(); j.waitForCompletion(run); PipelineNodeGraphVisitor pipelineNodeGraphVisitor = new PipelineNodeGraphVisitor(run); assertTrue(pipelineNodeGraphVisitor.isDeclarative()); List<FlowNodeWrapper> wrappers = pipelineNodeGraphVisitor.getPipelineNodes(); FlowNodeWrapper flowNodeWrapper = wrappers.get(0); assertEquals("top", flowNodeWrapper.getDisplayName()); assertEquals(2, flowNodeWrapper.edges.size()); flowNodeWrapper = wrappers.get(1); assertEquals("first", flowNodeWrapper.getDisplayName()); assertEquals(1, flowNodeWrapper.edges.size()); assertEquals(1, flowNodeWrapper.getParents().size()); assertEquals("first-inner-first", flowNodeWrapper.edges.get(0).getDisplayName()); assertEquals(7, wrappers.size()); List<Map> nodes = get("/organizations/jenkins/pipelines/" + p.getName() + "/runs/1/nodes/", List.class); assertEquals(7, nodes.size()); }
Example #13
Source File: NodeChangeListenerTest.java From audit-log-plugin with MIT License | 5 votes |
@Issue("JENKINS-56647") @Test public void testOnUpdated() throws Exception { Slave slave = j.createOnlineSlave(); HtmlForm form = j.createWebClient().getPage(slave, "configure").getFormByName("config"); HtmlInput element = form.getInputByName("_.name"); element.setValueAttribute("newSlaveName"); j.submit(form); List<LogEvent> events = app.getEvents(); assertThat(events).hasSize(2); assertThat(events).extracting(event -> ((AuditMessage) event.getMessage()).getId().toString()).contains("createNode", "updateNode"); }
Example #14
Source File: IntegrationTest.java From warnings-ng-plugin with MIT License | 5 votes |
/** * Creates an {@link DumbSlave agent} with the specified label. * * @param label * the label of the agent * * @return the agent */ @SuppressWarnings("illegalcatch") protected Slave createAgent(final String label) { try { return getJenkins().createOnlineSlave(new LabelAtom(label)); } catch (Exception e) { throw new AssertionError(e); } }
Example #15
Source File: AbsolutePathGeneratorITest.java From warnings-ng-plugin with MIT License | 5 votes |
private FilePath createFolder(final Slave agent, final FreeStyleProject project) { try { FilePath folder = getAgentWorkspace(agent, project).child("Folder"); folder.mkdirs(); return folder; } catch (IOException | InterruptedException exception) { throw new AssertionError(exception); } }
Example #16
Source File: AbsolutePathGeneratorITest.java From warnings-ng-plugin with MIT License | 5 votes |
private FreeStyleProject createJobForAgent(final Slave agent) { try { FreeStyleProject project = createFreeStyleProject(); project.setAssignedNode(agent); return project; } catch (IOException exception) { throw new AssertionError(exception); } }
Example #17
Source File: PipelineNodeTest.java From blueocean-plugin with MIT License | 4 votes |
@Ignore("Fails on ci.jenkins.io but not locally. Reasons unclear. Likely a timing issue.") @Test public void sequentialParallelStagesLongRun() throws Exception { WorkflowJob p = createWorkflowJobWithJenkinsfile(getClass(), "sequential_parallel_stages_long_run_time.jenkinsfile"); Slave s = j.createOnlineSlave(); s.setNumExecutors(3); WorkflowRun run = p.scheduleBuild2(0).waitForStart(); j.waitForCompletion(run); List<String> watchedStages = Arrays.asList("first-sequential-stage", "second-sequential-stage", "third-sequential-stage"); run = p.scheduleBuild2(0).waitForStart(); Thread.sleep(1000); long loopCount = 0; while (run.isBuilding()) { PipelineNodeContainerImpl pipelineNodeContainer = new PipelineNodeContainerImpl(run, new Link("foo")); List<BluePipelineNode> nodes = pipelineNodeContainer.getNodes(); for (BluePipelineNode node : nodes) { if (StringUtils.isEmpty(node.getFirstParent()) && watchedStages.contains(node.getDisplayName())) { LOGGER.error("node {} has getFirstParent null", node); fail("node with getFirstParent null:" + node); } // we try to find edges with id for a non existing node in the list List<BluePipelineNode.Edge> emptyEdges = node.getEdges().stream().filter(edge -> !nodes.stream() .filter(bluePipelineNode -> bluePipelineNode.getId().equals(edge.getId())) .findFirst().isPresent() ).collect(Collectors.toList()); if (!emptyEdges.isEmpty()) { // TODO remove this weird if but it's only to have breakpoint in IDE assertTrue("edges with unknown nodes" + nodes, !emptyEdges.isEmpty()); } } LOGGER.debug("nodes size {}", nodes.size()); if (nodes.size() != 9) { LOGGER.info("loop: " + loopCount + ", nodes size {}", nodes.size()); LOGGER.info("nodes != 9 {}", nodes); fail("nodes != 9: " + nodes); } Thread.sleep(100); } }
Example #18
Source File: PipelineNodeTest.java From blueocean-plugin with MIT License | 4 votes |
@Test @Issue("JENKINS-49050") public void sequentialParallelStages() throws Exception { WorkflowJob p = createWorkflowJobWithJenkinsfile(getClass(), "sequentialParallel.jenkinsfile"); Slave s = j.createOnlineSlave(); s.setNumExecutors(2); // Run until completed WorkflowRun run = p.scheduleBuild2(0).waitForStart(); j.waitForCompletion(run); PipelineNodeGraphVisitor pipelineNodeGraphVisitor = new PipelineNodeGraphVisitor(run); assertTrue(pipelineNodeGraphVisitor.isDeclarative()); List<FlowNodeWrapper> wrappers = pipelineNodeGraphVisitor.getPipelineNodes(); assertEquals(9, wrappers.size()); Optional<FlowNodeWrapper> optionalFlowNodeWrapper = wrappers.stream().filter(nodeWrapper -> nodeWrapper.getDisplayName().equals("first-sequential-stage")) .findFirst(); // we ensure "multiple-stages" is parent of "first-sequential-stage" assertTrue(optionalFlowNodeWrapper.isPresent()); assertEquals(1, optionalFlowNodeWrapper.get().edges.size()); assertEquals("second-sequential-stage", optionalFlowNodeWrapper.get().edges.get(0).getDisplayName()); final String parentId = optionalFlowNodeWrapper.get().getFirstParent().getId(); optionalFlowNodeWrapper = wrappers.stream().filter(nodeWrapper -> nodeWrapper.getId().equals(parentId)) .findFirst(); assertTrue(optionalFlowNodeWrapper.isPresent()); assertEquals("multiple-stages", optionalFlowNodeWrapper.get().getDisplayName()); assertEquals(1, optionalFlowNodeWrapper.get().edges.size()); optionalFlowNodeWrapper.get().edges.stream() .filter(nodeWrapper -> nodeWrapper.getDisplayName().equals("first-sequential-stage")) .findFirst(); assertTrue(optionalFlowNodeWrapper.isPresent()); optionalFlowNodeWrapper = wrappers.stream().filter(nodeWrapper -> nodeWrapper.getDisplayName().equals("other-single-stage")) .findFirst(); assertTrue(optionalFlowNodeWrapper.isPresent()); final String otherParentId = optionalFlowNodeWrapper.get().getFirstParent().getId(); optionalFlowNodeWrapper = wrappers.stream().filter(nodeWrapper -> nodeWrapper.getId().equals(otherParentId)) .findFirst(); assertTrue(optionalFlowNodeWrapper.isPresent()); assertEquals("parent", optionalFlowNodeWrapper.get().getDisplayName()); assertEquals(3, optionalFlowNodeWrapper.get().edges.size()); optionalFlowNodeWrapper = wrappers.stream().filter(nodeWrapper -> nodeWrapper.getDisplayName().equals("second-sequential-stage")) .findFirst(); assertTrue(optionalFlowNodeWrapper.isPresent()); assertEquals(1, optionalFlowNodeWrapper.get().edges.size()); assertEquals("third-sequential-stage", optionalFlowNodeWrapper.get().edges.get(0).getDisplayName()); optionalFlowNodeWrapper = wrappers.stream().filter(nodeWrapper -> nodeWrapper.getDisplayName().equals("third-sequential-stage")) .findFirst(); assertTrue(optionalFlowNodeWrapper.isPresent()); assertEquals(1, optionalFlowNodeWrapper.get().edges.size()); assertEquals("second-solo", optionalFlowNodeWrapper.get().edges.get(0).getDisplayName()); List<Map> nodes = get("/organizations/jenkins/pipelines/" + p.getName() + "/runs/1/nodes/", List.class); assertEquals(9, nodes.size()); Optional<Map> firstSeqStage = nodes.stream() .filter(map -> map.get("displayName") .equals("first-sequential-stage")).findFirst(); assertTrue(firstSeqStage.isPresent()); String firstParentId = (String) firstSeqStage.get().get("firstParent"); Optional<Map> parentStage = nodes.stream() .filter(map -> map.get("id") .equals(firstParentId)).findFirst(); assertTrue(parentStage.isPresent()); assertEquals("multiple-stages", parentStage.get().get("displayName")); // ensure no issue getting steps for each node for (Map<String, String> node : nodes) { String id = node.get("id"); List<Map> steps = get("/organizations/jenkins/pipelines/" + p.getName() + "/runs/1/nodes/" + id + "/steps/", List.class); assertFalse(steps.get(0).isEmpty()); } }
Example #19
Source File: EC2FleetNodeComputer.java From ec2-spot-jenkins-plugin with Apache License 2.0 | 4 votes |
public EC2FleetNodeComputer(final Slave slave, @Nonnull final String name, @Nonnull final EC2FleetCloud cloud) { super(slave); this.name = name; this.cloud = cloud; }
Example #20
Source File: JenkinsRule.java From jenkins-test-harness with MIT License | 4 votes |
/** * Same as {@link #showAgentLogs(Slave, Map)} but taking a preconfigured list of loggers as a convenience. */ public void showAgentLogs(Slave s, LoggerRule loggerRule) throws Exception { showAgentLogs(s, loggerRule.getRecordedLevels()); }
Example #21
Source File: IntegrationTest.java From warnings-ng-plugin with MIT License | 3 votes |
/** * Creates the specified file with the given content to the workspace of the specified agent. * * @param agent * the agent to get the workspace for * @param job * the job to get the workspace for * @param fileName * the file name * @param content * the content to write */ protected void createFileInAgentWorkspace(final Slave agent, final TopLevelItem job, final String fileName, final String content) { try { FilePath workspace = getAgentWorkspace(agent, job); FilePath child = workspace.child(fileName); child.copyFrom(new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8))); } catch (IOException | InterruptedException e) { throw new AssertionError(e); } }
Example #22
Source File: IntegrationTest.java From warnings-ng-plugin with MIT License | 3 votes |
/** * Copies the specified files to the workspace of the specified agent. Uses the specified new file name in the * workspace. * * @param agent * the agent to get the workspace for * @param job * the job to get the workspace for * @param from * the file to copy * @param to * the file name in the workspace */ protected void copySingleFileToAgentWorkspace(final Slave agent, final TopLevelItem job, final String from, final String to) { FilePath workspace = getAgentWorkspace(agent, job); copySingleFileToWorkspace(workspace, from, to); }
Example #23
Source File: IntegrationTest.java From warnings-ng-plugin with MIT License | 2 votes |
/** * Returns the agent workspace of a job. * * @param agent * the agent * @param job * the job * * @return path to the workspace */ protected FilePath getAgentWorkspace(final Slave agent, final TopLevelItem job) { FilePath workspace = agent.getWorkspaceFor(job); assertThat(workspace).isNotNull(); return workspace; }
Example #24
Source File: JenkinsRule.java From jenkins-test-harness with MIT License | 2 votes |
/** * Forward agent logs to standard error of the test process. * Otherwise log messages would be sent only to {@link Computer#getLogText} etc., * or discarded entirely (if below {@link Level#INFO}). * @param s an <em>online</em> agent * @param loggers {@link Logger#getName} tied to log level */ public void showAgentLogs(Slave s, Map<String, Level> loggers) throws Exception { s.getChannel().call(new RemoteLogDumper(s.getNodeName(), loggers)); }