コード例 #1
0
def test_canary_second():
    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME,
                    'plan continue deploy world-deploy')
    sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy',
                                  'world-deploy', 'world-0:[server]',
                                  'PENDING')

    # because the plan strategy is serial, the second phase just clears a wait bit without
    # proceeding to launch anything:
    expected_tasks = ['hello-0']
    try:
        sdk_tasks.check_running(config.SERVICE_NAME,
                                len(expected_tasks) + 1,
                                timeout_seconds=30)
        assert False, "Shouldn't have deployed a second task"
    except AssertionError as arg:
        raise arg
    except:
        pass  # expected
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))

    assert sdk_cmd.svc_cli(config.PACKAGE_NAME,
                           config.SERVICE_NAME,
                           'pod list',
                           json=True) == expected_tasks

    pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME)
    log.info(pl)

    assert pl['status'] == 'WAITING'

    assert len(pl['phases']) == 2

    phase = pl['phases'][0]
    assert phase['status'] == 'WAITING'
    steps = phase['steps']
    assert len(steps) == 4
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'WAITING'
    assert steps[2]['status'] == 'PENDING'
    assert steps[3]['status'] == 'PENDING'

    phase = pl['phases'][1]
    assert phase['status'] == 'PENDING'
    steps2 = phase['steps']
    assert len(steps) == 4
    assert steps2[0]['status'] == 'PENDING'
    assert steps2[1]['status'] == 'WAITING'
    assert steps2[2]['status'] == 'PENDING'
    assert steps2[3]['status'] == 'PENDING'
コード例 #2
0
def test_canary_second():
    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME,
                    "plan continue deploy world-deploy")
    sdk_plan.wait_for_step_status(config.SERVICE_NAME, "deploy",
                                  "world-deploy", "world-0:[server]",
                                  "PENDING")

    # because the plan strategy is serial, the second phase just clears a wait bit without
    # proceeding to launch anything:
    expected_tasks = ["hello-0"]
    try:
        sdk_tasks.check_running(config.SERVICE_NAME,
                                len(expected_tasks) + 1,
                                timeout_seconds=30)
        assert False, "Shouldn't have deployed a second task"
    except AssertionError as arg:
        raise arg
    except Exception:
        pass  # expected
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))

    rc, stdout, _ = sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME,
                                    "pod list")
    assert rc == 0, "Pod list failed"
    assert json.loads(stdout) == expected_tasks

    pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME)
    log.info(pl)

    assert pl["status"] == "WAITING"

    assert len(pl["phases"]) == 2

    phase = pl["phases"][0]
    assert phase["status"] == "WAITING"
    steps = phase["steps"]
    assert len(steps) == 4
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "WAITING"
    assert steps[2]["status"] == "PENDING"
    assert steps[3]["status"] == "PENDING"

    phase = pl["phases"][1]
    assert phase["status"] == "PENDING"
    steps2 = phase["steps"]
    assert len(steps) == 4
    assert steps2[0]["status"] == "PENDING"
    assert steps2[1]["status"] == "WAITING"
    assert steps2[2]["status"] == "PENDING"
    assert steps2[3]["status"] == "PENDING"
コード例 #3
0
def test_canary_second():
    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "plan continue deploy world-deploy")
    sdk_plan.wait_for_step_status(
        config.SERVICE_NAME, "deploy", "world-deploy", "world-0:[server]", "PENDING"
    )

    # because the plan strategy is serial, the second phase just clears a wait bit without
    # proceeding to launch anything:
    expected_tasks = ["hello-0"]
    try:
        sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks) + 1, timeout_seconds=30)
        assert False, "Shouldn't have deployed a second task"
    except AssertionError as arg:
        raise arg
    except Exception:
        pass  # expected
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))

    rc, stdout, _ = sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "pod list")
    assert rc == 0, "Pod list failed"
    assert json.loads(stdout) == expected_tasks

    pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME)
    log.info(pl)

    assert pl["status"] == "WAITING"

    assert len(pl["phases"]) == 2

    phase = pl["phases"][0]
    assert phase["status"] == "WAITING"
    steps = phase["steps"]
    assert len(steps) == 4
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "WAITING"
    assert steps[2]["status"] == "PENDING"
    assert steps[3]["status"] == "PENDING"

    phase = pl["phases"][1]
    assert phase["status"] == "PENDING"
    steps2 = phase["steps"]
    assert len(steps) == 4
    assert steps2[0]["status"] == "PENDING"
    assert steps2[1]["status"] == "WAITING"
    assert steps2[2]["status"] == "PENDING"
    assert steps2[3]["status"] == "PENDING"
コード例 #4
0
def fail_placement(options):
    """
    This assumes that the DC/OS cluster is reporting that all agents are in a single zone.
    """

    # scheduler should fail to deploy, don't wait for it to complete:
    sdk_install.install(
        config.PACKAGE_NAME,
        config.SERVICE_NAME,
        0,
        additional_options=options,
        wait_for_deployment=False,
    )
    sdk_plan.wait_for_step_status(config.SERVICE_NAME, "deploy", "world",
                                  "world-0:[server]", "COMPLETE")

    pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME)

    # check that everything is still stuck looking for a match:
    assert pl["status"] == "IN_PROGRESS"

    assert len(pl["phases"]) == 2

    phase1 = pl["phases"][0]
    assert phase1["status"] == "COMPLETE"
    steps1 = phase1["steps"]
    assert len(steps1) == 1

    phase2 = pl["phases"][1]
    assert phase2["status"] == "IN_PROGRESS"
    steps2 = phase2["steps"]
    assert len(steps2) == 3
    assert steps2[0]["status"] == "COMPLETE"
    assert steps2[1]["status"] in ("COMPLETE", "PREPARED", "PENDING")
    assert steps2[2]["status"] in ("PREPARED", "PENDING")

    try:
        sdk_tasks.check_running(config.SERVICE_NAME, 4, timeout_seconds=30)
        assert False, "Should have failed to deploy world-2"
    except AssertionError as arg:
        raise arg
    except Exception:
        pass  # expected to fail

    sdk_install.uninstall(config.PACKAGE_NAME, config.SERVICE_NAME)
コード例 #5
0
def fail_placement(options):
    """
    This assumes that the DC/OS cluster is reporting that all agents are in a single zone.
    """

    # scheduler should fail to deploy, don't wait for it to complete:
    sdk_install.install(
        config.PACKAGE_NAME,
        config.SERVICE_NAME,
        0,
        additional_options=options,
        wait_for_deployment=False,
    )
    sdk_plan.wait_for_step_status(
        config.SERVICE_NAME, "deploy", "world", "world-0:[server]", "COMPLETE"
    )

    pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME)

    # check that everything is still stuck looking for a match:
    assert pl["status"] == "IN_PROGRESS"

    assert len(pl["phases"]) == 2

    phase1 = pl["phases"][0]
    assert phase1["status"] == "COMPLETE"
    steps1 = phase1["steps"]
    assert len(steps1) == 1

    phase2 = pl["phases"][1]
    assert phase2["status"] == "IN_PROGRESS"
    steps2 = phase2["steps"]
    assert len(steps2) == 2
    assert steps2[0]["status"] == "COMPLETE"
    assert steps2[1]["status"] in ("PREPARED", "PENDING")

    try:
        sdk_tasks.check_running(config.SERVICE_NAME, 3, timeout_seconds=30)
        assert False, "Should have failed to deploy world-1"
    except AssertionError as arg:
        raise arg
    except Exception:
        pass  # expected to fail

    sdk_install.uninstall(config.PACKAGE_NAME, config.SERVICE_NAME)
コード例 #6
0
def fail_placement(options):
    """
    This assumes that the DC/OS cluster is reporting that all agents are in a single zone.
    """

    # scheduler should fail to deploy, don't wait for it to complete:
    sdk_install.install(config.PACKAGE_NAME,
                        config.SERVICE_NAME,
                        0,
                        additional_options=options,
                        wait_for_deployment=False)
    sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy', 'world',
                                  'world-0:[server]', 'COMPLETE')

    pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME)

    # check that everything is still stuck looking for a match:
    assert pl['status'] == 'IN_PROGRESS'

    assert len(pl['phases']) == 2

    phase1 = pl['phases'][0]
    assert phase1['status'] == 'COMPLETE'
    steps1 = phase1['steps']
    assert len(steps1) == 1

    phase2 = pl['phases'][1]
    assert phase2['status'] == 'IN_PROGRESS'
    steps2 = phase2['steps']
    assert len(steps2) == 2
    assert steps2[0]['status'] == 'COMPLETE'
    assert steps2[1]['status'] in ('PREPARED', 'PENDING')

    try:
        sdk_tasks.check_running(config.SERVICE_NAME, 3, timeout_seconds=30)
        assert False, "Should have failed to deploy world-1"
    except AssertionError as arg:
        raise arg
    except:
        pass  # expected to fail

    sdk_install.uninstall(config.PACKAGE_NAME, config.SERVICE_NAME)
コード例 #7
0
def test_canary_second():
    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'plan continue deploy world-deploy')
    sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy', 'world-deploy', 'world-0:[server]', 'PENDING')

    # because the plan strategy is serial, the second phase just clears a wait bit without
    # proceeding to launch anything:
    expected_tasks = ['hello-0']
    try:
        sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks) + 1, timeout_seconds=30)
        assert False, "Shouldn't have deployed a second task"
    except AssertionError as arg:
        raise arg
    except:
        pass # expected
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))

    assert sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'pod list', json=True) == expected_tasks

    pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME)
    log.info(pl)

    assert pl['status'] == 'WAITING'

    assert len(pl['phases']) == 2

    phase = pl['phases'][0]
    assert phase['status'] == 'WAITING'
    steps = phase['steps']
    assert len(steps) == 4
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'WAITING'
    assert steps[2]['status'] == 'PENDING'
    assert steps[3]['status'] == 'PENDING'

    phase = pl['phases'][1]
    assert phase['status'] == 'PENDING'
    steps2 = phase['steps']
    assert len(steps) == 4
    assert steps2[0]['status'] == 'PENDING'
    assert steps2[1]['status'] == 'WAITING'
    assert steps2[2]['status'] == 'PENDING'
    assert steps2[3]['status'] == 'PENDING'
コード例 #8
0
def test_increase_cpu():
    hello_0_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-0-server')
    config.bump_hello_cpus()

    pl = sdk_plan.wait_for_plan_status(config.SERVICE_NAME, 'deploy',
                                       'WAITING')
    log.info(pl)

    assert pl['status'] == 'WAITING'

    assert len(pl['phases']) == 2

    phase = pl['phases'][0]
    assert phase['status'] == 'WAITING'
    steps = phase['steps']
    assert len(steps) == 5
    assert steps[0]['status'] == 'WAITING'
    assert steps[1]['status'] == 'WAITING'
    assert steps[2]['status'] == 'PENDING'
    assert steps[3]['status'] == 'PENDING'
    assert steps[4]['status'] == 'PENDING'

    phase = pl['phases'][1]
    assert phase['status'] == 'COMPLETE'
    steps = phase['steps']
    assert len(steps) == 4
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'COMPLETE'
    assert steps[2]['status'] == 'COMPLETE'
    assert steps[3]['status'] == 'COMPLETE'

    # check that all prior tasks are still running, no changes yet
    expected_tasks = [
        'hello-0', 'hello-1', 'hello-2', 'hello-3', 'hello-4', 'world-0',
        'world-1', 'world-2', 'world-3'
    ]
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))
    assert sdk_cmd.svc_cli(config.PACKAGE_NAME,
                           config.SERVICE_NAME,
                           'pod list',
                           json=True) == expected_tasks
    assert hello_0_ids == sdk_tasks.get_task_ids(config.SERVICE_NAME,
                                                 'hello-0-server')

    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME,
                    'plan continue deploy hello-deploy')

    sdk_tasks.check_tasks_updated(config.SERVICE_NAME, 'hello-0-server',
                                  hello_0_ids)
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))

    pl = sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy',
                                       'hello-deploy', 'hello-0:[server]',
                                       'COMPLETE')
    log.info(pl)

    assert pl['status'] == 'WAITING'

    assert len(pl['phases']) == 2

    phase = pl['phases'][0]
    assert phase['status'] == 'WAITING'
    steps = phase['steps']
    assert len(steps) == 5
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'WAITING'
    assert steps[2]['status'] == 'PENDING'
    assert steps[3]['status'] == 'PENDING'
    assert steps[4]['status'] == 'PENDING'

    phase = pl['phases'][1]
    assert phase['status'] == 'COMPLETE'
    steps = phase['steps']
    assert len(steps) == 4
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'COMPLETE'
    assert steps[2]['status'] == 'COMPLETE'
    assert steps[3]['status'] == 'COMPLETE'

    hello_1_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-1-server')
    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME,
                    'plan continue deploy hello-deploy')
    sdk_tasks.check_tasks_updated(config.SERVICE_NAME, 'hello-1-server',
                                  hello_1_ids)

    pl = sdk_plan.wait_for_completed_deployment(config.SERVICE_NAME)
    log.info(pl)

    assert pl['status'] == 'COMPLETE'

    assert len(pl['phases']) == 2

    phase = pl['phases'][0]
    assert phase['status'] == 'COMPLETE'
    steps = phase['steps']
    assert len(steps) == 5
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'COMPLETE'
    assert steps[2]['status'] == 'COMPLETE'
    assert steps[3]['status'] == 'COMPLETE'
    assert steps[4]['status'] == 'COMPLETE'

    phase = pl['phases'][1]
    assert phase['status'] == 'COMPLETE'
    steps = phase['steps']
    assert len(steps) == 4
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'COMPLETE'
    assert steps[2]['status'] == 'COMPLETE'
    assert steps[3]['status'] == 'COMPLETE'
コード例 #9
0
def test_increase_cpu():
    hello_0_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-0-server")
    config.bump_hello_cpus()

    pl = sdk_plan.wait_for_plan_status(config.SERVICE_NAME, "deploy", "WAITING")
    log.info(pl)

    assert pl["status"] == "WAITING"

    assert len(pl["phases"]) == 2

    phase = pl["phases"][0]
    assert phase["status"] == "WAITING"
    steps = phase["steps"]
    assert len(steps) == 5
    assert steps[0]["status"] == "WAITING"
    assert steps[1]["status"] == "WAITING"
    assert steps[2]["status"] == "PENDING"
    assert steps[3]["status"] == "PENDING"
    assert steps[4]["status"] == "PENDING"

    phase = pl["phases"][1]
    assert phase["status"] == "COMPLETE"
    steps = phase["steps"]
    assert len(steps) == 4
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "COMPLETE"
    assert steps[2]["status"] == "COMPLETE"
    assert steps[3]["status"] == "COMPLETE"

    # check that all prior tasks are still running, no changes yet
    expected_tasks = [
        "hello-0",
        "hello-1",
        "hello-2",
        "hello-3",
        "hello-4",
        "world-0",
        "world-1",
        "world-2",
        "world-3",
    ]
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))
    rc, stdout, _ = sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "pod list")
    assert rc == 0, "Pod list failed"
    assert json.loads(stdout) == expected_tasks

    assert hello_0_ids == sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-0-server")

    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "plan continue deploy hello-deploy")

    sdk_tasks.check_tasks_updated(config.SERVICE_NAME, "hello-0-server", hello_0_ids)
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))

    pl = sdk_plan.wait_for_step_status(
        config.SERVICE_NAME, "deploy", "hello-deploy", "hello-0:[server]", "COMPLETE"
    )
    log.info(pl)

    assert pl["status"] == "WAITING"

    assert len(pl["phases"]) == 2

    phase = pl["phases"][0]
    assert phase["status"] == "WAITING"
    steps = phase["steps"]
    assert len(steps) == 5
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "WAITING"
    assert steps[2]["status"] == "PENDING"
    assert steps[3]["status"] == "PENDING"
    assert steps[4]["status"] == "PENDING"

    phase = pl["phases"][1]
    assert phase["status"] == "COMPLETE"
    steps = phase["steps"]
    assert len(steps) == 4
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "COMPLETE"
    assert steps[2]["status"] == "COMPLETE"
    assert steps[3]["status"] == "COMPLETE"

    hello_1_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-1-server")
    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "plan continue deploy hello-deploy")
    sdk_tasks.check_tasks_updated(config.SERVICE_NAME, "hello-1-server", hello_1_ids)

    pl = sdk_plan.wait_for_completed_deployment(config.SERVICE_NAME)
    log.info(pl)

    assert pl["status"] == "COMPLETE"

    assert len(pl["phases"]) == 2

    phase = pl["phases"][0]
    assert phase["status"] == "COMPLETE"
    steps = phase["steps"]
    assert len(steps) == 5
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "COMPLETE"
    assert steps[2]["status"] == "COMPLETE"
    assert steps[3]["status"] == "COMPLETE"
    assert steps[4]["status"] == "COMPLETE"

    phase = pl["phases"][1]
    assert phase["status"] == "COMPLETE"
    steps = phase["steps"]
    assert len(steps) == 4
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "COMPLETE"
    assert steps[2]["status"] == "COMPLETE"
    assert steps[3]["status"] == "COMPLETE"
コード例 #10
0
def test_increase_cpu():
    hello_0_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-0-server')
    sdk_marathon.bump_cpu_count_config(config.SERVICE_NAME, 'HELLO_CPUS')

    pl = sdk_plan.wait_for_plan_status(config.SERVICE_NAME, 'deploy', 'WAITING')
    log.info(pl)

    assert pl['status'] == 'WAITING'

    assert len(pl['phases']) == 2

    phase = pl['phases'][0]
    assert phase['status'] == 'WAITING'
    steps = phase['steps']
    assert len(steps) == 5
    assert steps[0]['status'] == 'WAITING'
    assert steps[1]['status'] == 'WAITING'
    assert steps[2]['status'] == 'PENDING'
    assert steps[3]['status'] == 'PENDING'
    assert steps[4]['status'] == 'PENDING'

    phase = pl['phases'][1]
    assert phase['status'] == 'COMPLETE'
    steps = phase['steps']
    assert len(steps) == 4
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'COMPLETE'
    assert steps[2]['status'] == 'COMPLETE'
    assert steps[3]['status'] == 'COMPLETE'

    # check that all prior tasks are still running, no changes yet
    expected_tasks = [
        'hello-0', 'hello-1', 'hello-2', 'hello-3', 'hello-4',
        'world-0', 'world-1', 'world-2', 'world-3']
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))
    assert sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'pod list', json=True) == expected_tasks
    assert hello_0_ids == sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-0-server')

    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'plan continue deploy hello-deploy')

    sdk_tasks.check_tasks_updated(config.SERVICE_NAME, 'hello-0-server', hello_0_ids)
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))

    pl = sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy', 'hello-deploy', 'hello-0:[server]', 'COMPLETE')
    log.info(pl)

    assert pl['status'] == 'WAITING'

    assert len(pl['phases']) == 2

    phase = pl['phases'][0]
    assert phase['status'] == 'WAITING'
    steps = phase['steps']
    assert len(steps) == 5
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'WAITING'
    assert steps[2]['status'] == 'PENDING'
    assert steps[3]['status'] == 'PENDING'
    assert steps[4]['status'] == 'PENDING'

    phase = pl['phases'][1]
    assert phase['status'] == 'COMPLETE'
    steps = phase['steps']
    assert len(steps) == 4
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'COMPLETE'
    assert steps[2]['status'] == 'COMPLETE'
    assert steps[3]['status'] == 'COMPLETE'

    hello_1_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-1-server')
    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'plan continue deploy hello-deploy')
    sdk_tasks.check_tasks_updated(config.SERVICE_NAME, 'hello-1-server', hello_1_ids)

    pl = sdk_plan.wait_for_completed_deployment(config.SERVICE_NAME)
    log.info(pl)

    assert pl['status'] == 'COMPLETE'

    assert len(pl['phases']) == 2

    phase = pl['phases'][0]
    assert phase['status'] == 'COMPLETE'
    steps = phase['steps']
    assert len(steps) == 5
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'COMPLETE'
    assert steps[2]['status'] == 'COMPLETE'
    assert steps[3]['status'] == 'COMPLETE'
    assert steps[4]['status'] == 'COMPLETE'

    phase = pl['phases'][1]
    assert phase['status'] == 'COMPLETE'
    steps = phase['steps']
    assert len(steps) == 4
    assert steps[0]['status'] == 'COMPLETE'
    assert steps[1]['status'] == 'COMPLETE'
    assert steps[2]['status'] == 'COMPLETE'
    assert steps[3]['status'] == 'COMPLETE'
コード例 #11
0
def test_increase_cpu():
    hello_0_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-0-server")
    config.bump_hello_cpus()

    pl = sdk_plan.wait_for_plan_status(config.SERVICE_NAME, "deploy",
                                       "WAITING")
    log.info(pl)

    assert pl["status"] == "WAITING"

    assert len(pl["phases"]) == 2

    phase = pl["phases"][0]
    assert phase["status"] == "WAITING"
    steps = phase["steps"]
    assert len(steps) == 5
    assert steps[0]["status"] == "WAITING"
    assert steps[1]["status"] == "WAITING"
    assert steps[2]["status"] == "PENDING"
    assert steps[3]["status"] == "PENDING"
    assert steps[4]["status"] == "PENDING"

    phase = pl["phases"][1]
    assert phase["status"] == "COMPLETE"
    steps = phase["steps"]
    assert len(steps) == 4
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "COMPLETE"
    assert steps[2]["status"] == "COMPLETE"
    assert steps[3]["status"] == "COMPLETE"

    # check that all prior tasks are still running, no changes yet
    expected_tasks = [
        "hello-0",
        "hello-1",
        "hello-2",
        "hello-3",
        "hello-4",
        "world-0",
        "world-1",
        "world-2",
        "world-3",
    ]
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))
    rc, stdout, _ = sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME,
                                    "pod list")
    assert rc == 0, "Pod list failed"
    assert json.loads(stdout) == expected_tasks

    assert hello_0_ids == sdk_tasks.get_task_ids(config.SERVICE_NAME,
                                                 "hello-0-server")

    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME,
                    "plan continue deploy hello-deploy")

    sdk_tasks.check_tasks_updated(config.SERVICE_NAME, "hello-0-server",
                                  hello_0_ids)
    sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks))

    pl = sdk_plan.wait_for_step_status(config.SERVICE_NAME, "deploy",
                                       "hello-deploy", "hello-0:[server]",
                                       "COMPLETE")
    log.info(pl)

    assert pl["status"] == "WAITING"

    assert len(pl["phases"]) == 2

    phase = pl["phases"][0]
    assert phase["status"] == "WAITING"
    steps = phase["steps"]
    assert len(steps) == 5
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "WAITING"
    assert steps[2]["status"] == "PENDING"
    assert steps[3]["status"] == "PENDING"
    assert steps[4]["status"] == "PENDING"

    phase = pl["phases"][1]
    assert phase["status"] == "COMPLETE"
    steps = phase["steps"]
    assert len(steps) == 4
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "COMPLETE"
    assert steps[2]["status"] == "COMPLETE"
    assert steps[3]["status"] == "COMPLETE"

    hello_1_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-1-server")
    sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME,
                    "plan continue deploy hello-deploy")
    sdk_tasks.check_tasks_updated(config.SERVICE_NAME, "hello-1-server",
                                  hello_1_ids)

    pl = sdk_plan.wait_for_completed_deployment(config.SERVICE_NAME)
    log.info(pl)

    assert pl["status"] == "COMPLETE"

    assert len(pl["phases"]) == 2

    phase = pl["phases"][0]
    assert phase["status"] == "COMPLETE"
    steps = phase["steps"]
    assert len(steps) == 5
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "COMPLETE"
    assert steps[2]["status"] == "COMPLETE"
    assert steps[3]["status"] == "COMPLETE"
    assert steps[4]["status"] == "COMPLETE"

    phase = pl["phases"][1]
    assert phase["status"] == "COMPLETE"
    steps = phase["steps"]
    assert len(steps) == 4
    assert steps[0]["status"] == "COMPLETE"
    assert steps[1]["status"] == "COMPLETE"
    assert steps[2]["status"] == "COMPLETE"
    assert steps[3]["status"] == "COMPLETE"