def test__placement_exclusive_job(exclusive_host): excl_constraint = pod_pb2.Constraint( type=1, # Label constraint label_constraint=pod_pb2.LabelConstraint( kind=2, # Host condition=2, # Equal requirement=1, label=peloton_pb2_v1alpha.Label(key="peloton/exclusive", value="exclusive-test-label"), ), ) # We have 1 exclusive host and 2 non-exclusive hosts. Set number of # instances to be a few more than what can run simulatenously on # a single exclusive host job = StatelessJob(job_file="test_stateless_job_cpus_large_spec.yaml") job.job_spec.default_spec.constraint.CopyFrom(excl_constraint) job.job_spec.instance_count = 6 job.create() job.wait_for_state(goal_state="RUNNING") job.wait_for_all_pods_running(num_pods=4) job.stop() job.wait_for_terminated() # check that all of them ran on exclusive host pod_summaries = job.list_pods() for s in pod_summaries: if s.status.host: assert "exclusive" in s.status.host
def test__placement_non_exclusive_job(exclusive_host): # We have 1 exclusive host and 2 non-exclusive hosts. Set number of # instances to be a few more than what can run simulatenously # on 2 non-exclusive hosts job = StatelessJob(job_file="test_stateless_job_cpus_large_spec.yaml") job.job_spec.instance_count = 10 job.create() job.wait_for_state(goal_state="RUNNING") job.wait_for_all_pods_running(num_pods=5) job.stop() job.wait_for_terminated() # check that none of them ran on exclusive host pod_summaries = job.list_pods() for s in pod_summaries: if s.status.host: assert "exclusive" not in s.status.host