@Test public void shouldNotMatchJobPlanIfTheAgentWasLaunchedByADifferentPluginFromThatConfiguredForTheJob() { AgentConfig agentConfig = new AgentConfig("uuid"); agentConfig.setElasticAgentId("elastic-agent-id-1"); String elasticPluginId = "elastic-plugin-id-1"; agentConfig.setElasticPluginId(elasticPluginId); AgentInstance agentInstance = new AgentInstance(agentConfig, REMOTE, mock(SystemEnvironment.class), null); DefaultJobPlan jobPlan1 = new DefaultJobPlan(); jobPlan1.setElasticProfile(new ElasticProfile("foo", "elastic-plugin-id-2")); List<JobPlan> jobPlans = asList(jobPlan1, new DefaultJobPlan()); assertThat(agentInstance.firstMatching(jobPlans), is(nullValue())); }
@Test public void shouldNotMatchJobPlanIfJobRequiresElasticAgent_MatchingIsManagedByBuildAssignmentService() { AgentConfig agentConfig = new AgentConfig("uuid"); agentConfig.setElasticAgentId("elastic-agent-id-1"); String elasticPluginId = "elastic-plugin-id-1"; agentConfig.setElasticPluginId(elasticPluginId); AgentInstance agentInstance = new AgentInstance(agentConfig, REMOTE, mock(SystemEnvironment.class), null); DefaultJobPlan jobPlan1 = new DefaultJobPlan(); jobPlan1.setElasticProfile(new ElasticProfile("foo", elasticPluginId)); List<JobPlan> jobPlans = asList(jobPlan1, new DefaultJobPlan()); assertThat(agentInstance.firstMatching(jobPlans), is(nullValue())); }
private DefaultJobPlan jobPlan() { JobIdentifier jobIdentifier = new JobIdentifier("pipelineName", 1, "1", "defaultStage", "1", "job1", 100L); return new DefaultJobPlan(new Resources(), new ArrayList<>(), new ArrayList<>(), 1L, jobIdentifier, null, new EnvironmentVariables(), new EnvironmentVariables(), null); } }
private DefaultJobPlan jobForPipeline(String pipelineName) { JobIdentifier jobIdentifier = new JobIdentifier(pipelineName, 1, "1", "defaultStage", "1", "job1", 100L); return new DefaultJobPlan(new Resources(), new ArrayList<>(), new ArrayList<>(), 1L, jobIdentifier, null, new EnvironmentVariables(), new EnvironmentVariables(), null); }
@Test public void shouldNotMatchJobPlanIfTheAgentIsElasticAndJobHasResourcesDefined() { AgentConfig agentConfig = new AgentConfig("uuid", "hostname", "11.1.1.1", new ResourceConfigs(new ResourceConfig("r1"))); agentConfig.setElasticAgentId("elastic-agent-id-1"); String elasticPluginId = "elastic-plugin-id-1"; agentConfig.setElasticPluginId(elasticPluginId); AgentInstance agentInstance = new AgentInstance(agentConfig, REMOTE, mock(SystemEnvironment.class), null); DefaultJobPlan jobPlan1 = new DefaultJobPlan(); jobPlan1.setResources(asList(new Resource("r1"))); List<JobPlan> jobPlans = asList(jobPlan1, new DefaultJobPlan()); assertThat(agentInstance.firstMatching(jobPlans), is(nullValue())); }
@Test public void shouldApplyEnvironmentVariablesWhenRunningTheJob() { EnvironmentVariables variables = new EnvironmentVariables(); variables.add("VARIABLE_NAME", "variable value"); DefaultJobPlan plan = new DefaultJobPlan(new Resources(), new ArrayList<>(), new ArrayList<>(), -1, null, null, variables, new EnvironmentVariables(), null); EnvironmentVariableContext variableContext = new EnvironmentVariableContext(); plan.applyTo(variableContext); assertThat(variableContext.getProperty("VARIABLE_NAME"), is("variable value")); }
@Test public void shouldBeAbleToSerializeAndDeserialize() throws ClassNotFoundException, IOException { DefaultJobPlan original = new DefaultJobPlan(new Resources(), new ArrayList<>(), new ArrayList<>(), 0, new JobIdentifier(), "uuid", new EnvironmentVariables(), new EnvironmentVariables(), null); DefaultJobPlan clone = (DefaultJobPlan) serializeAndDeserialize(original); assertThat(clone, is(original)); } }
private DefaultJobPlan jobPlan(String pipelineName, String jobName, String resource, String uuid) { JobIdentifier jobIdentifier = new JobIdentifier(pipelineName, 1, "1", "stage1", "1", jobName, 1L); DefaultJobPlan plan = new DefaultJobPlan(new Resources(resource), new ArrayList<>(), null, 100, jobIdentifier, null, new EnvironmentVariables(), new EnvironmentVariables(), null); plan.setAgentUuid(uuid); return plan; }
@Test public void shouldRespectTriggerVariablesOverConfigVariables() { final EnvironmentVariables environmentVariables = new EnvironmentVariables(Arrays.asList( new EnvironmentVariable("blah", "value"), new EnvironmentVariable("foo", "bar"))); final EnvironmentVariables triggerEnvironmentVariables = new EnvironmentVariables(Arrays.asList( new EnvironmentVariable("blah", "override"), new EnvironmentVariable("another", "anotherValue"))); DefaultJobPlan original = new DefaultJobPlan(new Resources(), new ArrayList<>(), new ArrayList<>(), 0, new JobIdentifier(), "uuid", environmentVariables, triggerEnvironmentVariables, null); EnvironmentVariableContext variableContext = new EnvironmentVariableContext(); original.applyTo(variableContext); assertThat(variableContext.getProperty("blah"), is("override")); assertThat(variableContext.getProperty("foo"), is("bar")); //becuase its a security issue to let operator set values for unconfigured variables assertThat(variableContext.getProperty("another"), is(nullValue())); }
private BuildAssignment createAssignment(EnvironmentVariableContext environmentVariableContext) throws IOException { JobPlan plan = new DefaultJobPlan(new Resources(), new ArrayList<>(), new ArrayList<>(), -1, new JobIdentifier(PIPELINE_NAME, 1, "1", STAGE_NAME, "1", JOB_NAME, 123L), null, new EnvironmentVariables(), new EnvironmentVariables(), null); MaterialRevisions materialRevisions = materialRevisions(); BuildCause buildCause = BuildCause.createWithModifications(materialRevisions, TRIGGERED_BY_USER); List<Builder> builders = new ArrayList<>(); builders.add(new CommandBuilder("ls", "", dir, new RunIfConfigs(), new NullBuilder(), "")); return BuildAssignment.create(plan, buildCause, builders, dir, environmentVariableContext, new ArtifactStores()); }
private BuildAssignment createAssignment(EnvironmentVariableContext environmentVariableContext) throws IOException { JobPlan plan = new DefaultJobPlan(new Resources(), new ArrayList<>(), new ArrayList<>(), -1, new JobIdentifier(PIPELINE_NAME, 1, "1", STAGE_NAME, "1", JOB_NAME, 123L), null, new EnvironmentVariables(), new EnvironmentVariables(), null); MaterialRevisions materialRevisions = materialRevisions(); BuildCause buildCause = BuildCause.createWithModifications(materialRevisions, TRIGGERED_BY_USER); List<Builder> builders = new ArrayList<>(); builders.add(new CommandBuilder("ant", "", dir, new RunIfConfigs(), new NullBuilder(), "")); return BuildAssignment.create(plan, buildCause, builders, dir, environmentVariableContext, new ArtifactStores()); }
private BuildAssignment createAssignment(List<ArtifactPlan> artifactPlans, String[] fileToCreate) throws IOException { MaterialRevisions materialRevisions = materialRevisions(); BuildCause buildCause = BuildCause.createWithModifications(materialRevisions, ""); List<Builder> builders = new ArrayList<>(); builders.add(new CreateFileBuilder(fileToCreate)); DefaultJobPlan plan = new DefaultJobPlan(new Resources(), artifactPlans, new ArrayList<>(), -1, new JobIdentifier(PIPELINE_NAME, -2, "1", STAGE_NAME, "1", JOB_NAME), null, new EnvironmentVariables(), new EnvironmentVariables(), null); return BuildAssignment.create(plan, buildCause, builders, buildWorkingDirectory, new EnvironmentVariableContext(), new ArtifactStores()); }
private BuildWork getBuildWorkWithP4MaterialRevision(P4Material p4Material) { pipelineConfig.setMaterialConfigs(new Materials(p4Material).convertToConfigs()); JobPlan plan = new DefaultJobPlan(new Resources(), new ArrayList<>(), new ArrayList<>(), -1, new JobIdentifier(PIPELINE_NAME, 1, "1", STAGE_NAME, "1", JOB_NAME, 123L), null, new EnvironmentVariables(), new EnvironmentVariables(), null); MaterialRevisions materialRevisions = new MaterialRevisions(new MaterialRevision(p4Material, new Modification("user", "comment", "a@b.com", new Date(), "10"))); BuildCause buildCause = BuildCause.createWithModifications(materialRevisions, TRIGGERED_BY_USER); List<Builder> builders = new ArrayList<>(); builders.add(new CommandBuilder("ant", "", dir, new RunIfConfigs(), new NullBuilder(), "")); BuildAssignment assignment = BuildAssignment.create(plan, buildCause, builders, dir, environmentVariableContext, new ArtifactStores()); return new BuildWork(assignment, systemEnvironment.consoleLogCharset()); }
public static DefaultJobPlan jobPlan(String jobName, long id) { return new DefaultJobPlan(new Resources(new Resource("foo"), new Resource("bar")), new ArrayList<>(), new ArrayList<>(), id, defaultJobIdentifier(jobName), null, new EnvironmentVariables(), new EnvironmentVariables(), null); }
private DefaultJobPlan jobPlan(String pipelineName) { return new DefaultJobPlan(null, null, null, 0, new JobIdentifier(pipelineName, 0, "label", "stage", "1", "blahBuildName", 0L), null, new EnvironmentVariables(), new EnvironmentVariables(), null); } }
@Test public void shouldCreateJobPlan() { ResourceConfigs resourceConfigs = new ResourceConfigs(); ArtifactConfigs artifactConfigs = new ArtifactConfigs(); JobConfig jobConfig = new JobConfig(new CaseInsensitiveString("test"), resourceConfigs, artifactConfigs); JobPlan plan = instanceFactory.createJobPlan(jobConfig, new DefaultSchedulingContext()); assertThat(plan, is(new DefaultJobPlan(new Resources(resourceConfigs), ArtifactPlan.toArtifactPlans(artifactConfigs), new ArrayList<>(), -1, new JobIdentifier(), null, new EnvironmentVariables(), new EnvironmentVariables(), null))); }
public JobPlan createJobPlan(JobConfig config, SchedulingContext context) { JobIdentifier identifier = new JobIdentifier(); String elasticProfileId = config.getElasticProfileId(); ElasticProfile elasticProfile = null; if (elasticProfileId != null) { elasticProfile = context.getElasticProfile(elasticProfileId); } final EnvironmentVariables variables = EnvironmentVariables.toEnvironmentVariables(context.overrideEnvironmentVariables(config.getVariables()).getEnvironmentVariablesConfig()); return new DefaultJobPlan(new Resources(config.resourceConfigs()), ArtifactPlan.toArtifactPlans(config.artifactConfigs()), ArtifactPropertiesGenerator.toArtifactProperties(config.getProperties()), -1, identifier, null, variables, new EnvironmentVariables(), elasticProfile); } }
public static JobPlan createJobPlan(JobConfig jobConfig, JobIdentifier jobIdentifier, SchedulingContext schedulingContext) { final EnvironmentVariables environmentVariables = EnvironmentVariables.toEnvironmentVariables(schedulingContext.overrideEnvironmentVariables(jobConfig.getVariables()).getEnvironmentVariablesConfig()); final List<ArtifactPropertiesGenerator> artifactPropertiesGenerators = ArtifactPropertiesGenerator.toArtifactProperties(jobConfig.getProperties()); final List<ArtifactPlan> artifactPlans = ArtifactPlan.toArtifactPlans(jobConfig.artifactConfigs()); return new DefaultJobPlan(new Resources(jobConfig.resourceConfigs()), artifactPlans, artifactPropertiesGenerators, -1, jobIdentifier, null, environmentVariables, new EnvironmentVariables(), null); }
public static JobPlan jobPlanWithAssociatedEntities(String jobName, long id, List<ArtifactPlan> artifactPlans, List<ArtifactPropertiesGenerator> artifactPropertiesGenerators) { ConfigurationProperty configurationProperty = new ConfigurationProperty(new ConfigurationKey("image"), new ConfigurationValue("elastic-agent")); ElasticProfile elasticProfile = new ElasticProfile("elastic", "plugin", configurationProperty); EnvironmentVariables variables = new EnvironmentVariables(); variables.add("some_var", "blah"); return new DefaultJobPlan(new Resources(new Resource("foo"), new Resource("bar")), artifactPlans, artifactPropertiesGenerators, id, defaultJobIdentifier(jobName), null, variables, new EnvironmentVariables(), elasticProfile); } }