Пример #1
0
def test_namespace_to_dict():
    _namespaces = {
        'head':
        Namespace(
            host='1.2.3.4',
            name='encoder',
            parallel=2,
            pea_id=-1,
            polling=PollingType.ANY,
            port_ctrl=39011,
            port_expose=8000,
            uses_after='_pass',
            uses_before=None,
        ),
        'tail':
        Namespace(
            host='1.2.3.4',
            name='encoder',
            parallel=2,
            pea_id=-1,
            polling=PollingType.ANY,
            port_ctrl=46937,
            port_expose=8000,
            uses_after='_pass',
            uses_before=None,
        ),
        'peas': [
            Namespace(
                host='1.2.3.4',
                name='encoder',
                parallel=2,
                pea_id=-1,
                polling=PollingType.ANY,
                port_ctrl=44747,
                port_expose=8000,
                uses='helloworld.encoder.yml',
                uses_after='_pass',
                uses_before=None,
            ),
            Namespace(
                host='1.2.3.4',
                name='encoder',
                parallel=2,
                pea_id=-1,
                polling=PollingType.ANY,
                port_ctrl=48957,
                port_expose=8000,
                uses='helloworld.encoder.yml',
                uses_after='_pass',
                uses_before=None,
            ),
        ],
    }
    _dict_args = ArgNamespace.flatten_to_dict(args=_namespaces)
    assert 'head' in _dict_args
    assert 'tail' in _dict_args
    assert 'peas' in _dict_args
    assert len(_dict_args['peas']) == 2
    assert _namespaces['head'].polling.value == _dict_args['head']['polling']
    assert _namespaces['peas'][0].uses == _dict_args['peas'][0]['uses']
Пример #2
0
async def test_scale_remote_pod_async(
    deployment_params, async_jinad_client, slow_down_tests
):
    num_replicas, scale_to, shards = deployment_params
    args = set_deployment_parser().parse_args(
        ['--replicas', str(num_replicas), '--shards', str(shards)]
    )
    payload = replace_enum_to_str(ArgNamespace.flatten_to_dict(args))

    workspace_id = await async_jinad_client.workspaces.create(
        paths=[os.path.join(cur_dir, cur_dir)]
    )
    success, pod_id = await async_jinad_client.deployments.create(
        workspace_id=workspace_id, payload=payload
    )
    assert success

    resp = await async_jinad_client.deployments.get(pod_id)
    remote_pod_args = resp['arguments']['object']['arguments']
    assert remote_pod_args['replicas'] == num_replicas
    assert remote_pod_args['shards'] == shards

    await async_jinad_client.deployments.scale(id=pod_id, replicas=scale_to)
    resp = await async_jinad_client.deployments.get(pod_id)
    remote_pod_args = resp['arguments']['object']['arguments']
    assert remote_pod_args['replicas'] == scale_to
    assert remote_pod_args['shards'] == shards
    assert await async_jinad_client.deployments.delete(pod_id)
Пример #3
0
def test_scale_remote_pod(pod_params):
    num_replicas, scale_to, shards = pod_params
    pod_id = None
    args = set_pod_parser().parse_args(
        ['--replicas', str(num_replicas), '--shards', str(shards)]
    )
    payload = replace_enum_to_str(ArgNamespace.flatten_to_dict(args))
    try:
        workspace_id = jinad_client.workspaces.create(
            paths=[os.path.join(cur_dir, cur_dir)]
        )
        success, pod_id = jinad_client.pods.create(
            workspace_id=workspace_id, payload=payload
        )
        assert success
        remote_pod_args = jinad_client.pods.get(pod_id)['arguments']['object'][
            'arguments'
        ]
        assert remote_pod_args['identity'] == pod_id
        assert remote_pod_args['replicas'] == num_replicas
        assert remote_pod_args['shards'] == shards

        jinad_client.pods.scale(id=pod_id, replicas=scale_to)
        remote_pod_args = jinad_client.pods.get(pod_id)['arguments']['object'][
            'arguments'
        ]
        assert remote_pod_args['identity'] == pod_id
        assert remote_pod_args['replicas'] == scale_to
        assert remote_pod_args['shards'] == shards
    finally:
        if pod_id:
            assert jinad_client.pods.delete(pod_id), 'Pod termination failed'
            print(f'Remote Pod {pod_id} successfully terminated')
Пример #4
0
async def test_jinad_pod_create_async_given_unprocessable_entity(
        pod_args, async_jinad_client):
    payload = replace_enum_to_str(ArgNamespace.flatten_to_dict(pod_args))
    payload['pod_role'] = 'RANDOM'  # patch an invalid pod role type

    workspace_id = await async_jinad_client.workspaces.create(
        paths=[os.path.join(cur_dir, cur_dir)])
    success, resp = await async_jinad_client.deployments.create(
        workspace_id=workspace_id, payload=payload)
    assert not success
    assert 'validation error in the payload' in resp
Пример #5
0
async def test_rolloing_update_remote_pod(async_jinad_client, pod_args):
    payload = replace_enum_to_str(ArgNamespace.flatten_to_dict(pod_args))
    workspace_id = await async_jinad_client.workspaces.create(
        paths=[os.path.join(cur_dir, cur_dir)]
    )
    success, pod_id = await async_jinad_client.deployments.create(
        workspace_id=workspace_id, payload=payload
    )
    assert success
    await async_jinad_client.deployments.rolling_update(
        id=pod_id, uses_with={'foo': 'bar-new', 'dump_path': 'test'}
    )
    # TODO: HOW TO CHECK PEA ARGS IN JINAD? ROLLING UPDATE WON'T CHANGE POD ARGS
    # TODO: PEA_STORE IS EMPTY
    _ = await async_jinad_client.deployments.get(pod_id)
    assert async_jinad_client.deployments.delete(pod_id)
    assert async_jinad_client.workspaces.delete(workspace_id)
Пример #6
0
async def test_remote_jinad_pod_async(pod_args, async_jinad_client):
    payload = replace_enum_to_str(ArgNamespace.flatten_to_dict(pod_args))

    workspace_id = await async_jinad_client.workspaces.create(
        paths=[os.path.join(cur_dir, cur_dir)])
    assert await async_jinad_client.deployments.alive()
    # create pod
    success, pod_id = await async_jinad_client.deployments.create(
        workspace_id=workspace_id, payload=payload)
    assert success
    # get pod status
    resp = await async_jinad_client.deployments.get(pod_id)
    remote_pod_args = resp['arguments']['object']['arguments']
    # delete pod
    assert await async_jinad_client.deployments.delete(pod_id)
    resp = await async_jinad_client.deployments.get(pod_id)
    assert resp == pod_id + ' not found in store'