def test_deserialize_thermos_task_unbound_refs(): # test unbound {{standard}} refs task_config = TaskConfig(executorConfig=ExecutorConfig( name='thermos', data=MESOS_JOB(task=HELLO_WORLD_UNBOUND).json_dumps())) assigned_task = AssignedTask(task=task_config, instanceId=0) with pytest.raises(TaskInfoError) as execinfo: mesos_task_instance_from_assigned_task(assigned_task) assert "Unexpected unbound refs: {{unbound_cmd}} {{unbound}}" in execinfo.value.message # test bound unscoped refs, valid case. task = BASE_TASK(name='task_name', processes=[ Process(name='process_name', cmdline='echo {{thermos.ports[health]}}') ]) task_config = TaskConfig(executorConfig=ExecutorConfig( name='thermos', data=MESOS_JOB(task=task).json_dumps())) assigned_task = AssignedTask(task=task_config, instanceId=0) assert mesos_task_instance_from_assigned_task(assigned_task) is not None # test unbound unscoped refs for cmdline in ('echo {{hello_{{thermos.ports[health]}}}}', 'echo {{hello_{{thermos.user_id}}}}'): task = BASE_TASK( name='task_name', processes=[Process(name='process_name', cmdline=cmdline)]) task_config = TaskConfig(executorConfig=ExecutorConfig( name='thermos', data=MESOS_JOB(task=task).json_dumps())) assigned_task = AssignedTask(task=task_config, instanceId=0) with pytest.raises(UnexpectedUnboundRefsError): mesos_task_instance_from_assigned_task(assigned_task)
def make_config(announce, *ports): process = Process(name='hello', cmdline=' '.join('{{thermos.ports[%s]}}' % port for port in ports)) return AuroraConfig( Job(name='hello_world', environment='staging42', role='john_doe', cluster='smf1-test', announce=announce, task=Task(name='main', processes=[process], resources=Resources(cpu=0.1, ram=64 * 1048576, disk=64 * 1048576))))
def make_job(role, environment, name, primary_port, portmap): from apache.aurora.config.schema.base import ( Announcer, Job, Process, Resources, Task, ) task = Task(name='ignore2', processes=[Process(name='ignore3', cmdline='ignore4')], resources=Resources(cpu=1, ram=1, disk=1)) job = Job(role=role, environment=environment, name=name, cluster='ignore1', task=task, announce=Announcer(primary_port=primary_port, portmap=portmap)) return job
assignedPorts=assigned_ports, **kw) td = mesos_pb2.TaskInfo() td.task_id.value = task_id td.name = thermos_config.task().name().get() td.data = serialize(at) return td BASE_MTI = MesosTaskInstance(instance=0, role=getpass.getuser()) BASE_TASK = Task(resources=Resources(cpu=1.0, ram=16 * MB, disk=32 * MB)) HELLO_WORLD_TASK_ID = 'hello_world-001' HELLO_WORLD = BASE_TASK(name='hello_world', processes=[ Process(name='hello_world_{{thermos.task_id}}', cmdline='echo hello world') ]) HELLO_WORLD_MTI = BASE_MTI(task=HELLO_WORLD) SLEEP60 = BASE_TASK(processes=[Process(name='sleep60', cmdline='sleep 60')]) SLEEP2 = BASE_TASK(processes=[Process(name='sleep2', cmdline='sleep 2')]) SLEEP60_MTI = BASE_MTI(task=SLEEP60) MESOS_JOB = MesosJob( name='does_not_matter', instances=1, role=getpass.getuser(), ) def thermos_runner_path(build=True):
from apache.aurora.executor.common.sandbox import DirectorySandbox from apache.aurora.executor.http_lifecycle import HttpLifecycleManager from apache.aurora.executor.thermos_task_runner import ThermosTaskRunner from apache.thermos.common.statuses import (INTERNAL_ERROR, INVALID_TASK, TERMINAL_TASK, UNKNOWN_ERROR, UNKNOWN_USER) from gen.apache.thermos.ttypes import TaskState TASK = MesosTaskInstance( instance=0, role=getpass.getuser(), task=Task( resources=Resources(cpu=1.0, ram=16 * MB, disk=32 * MB), name='hello_world', processes=[Process(name='hello_world', cmdline='{{command}}')], )) class TestThermosTaskRunnerIntegration(object): PEX_PATH = None LOG_DIR = None @classmethod def setup_class(cls): cls.LOG_DIR = tempfile.mkdtemp() LogOptions.set_log_dir(cls.LOG_DIR) LogOptions.set_disk_log_level('DEBUG') log.init('executor_logger') if not cls.PEX_PATH: pex_dir = tempfile.mkdtemp()
Process(name = 'hello_world_fails_200', cmdline = 'echo hello world', max_failures = 200)], resources = Resources(cpu = 0.1, ram = 64 * 1048576, disk = 64 * 1048576), ) ) jobs = [HELLO_WORLD] """ REIFIED_CONFIG = Job(name='hello_world', role='john_doe', environment='staging42', cluster='smf1-test', task=Task( name='main', processes=[ Process(name='hello_world', cmdline='echo {{mesos.instance}}') ], resources=Resources(cpu=0.1, ram=64 * 1048576, disk=64 * 1048576), )) REIFIED_LIMITED_CONFIG = Job(name='hello_world', role='john_doe', environment='staging42', cluster='smf1-test', task=Task( name='main', processes=[ Process(name='hello_world_fails_0', cmdline='echo hello world',