Exemplo n.º 1
0
def test_s3(minio_address):
    yatai_server_command = [
        'bentoml',
        'yatai-service-start',
        '--no-ui',
        '--grpc-port',
        '50051',
        '--repo-base-url',
        f's3://{bucket_name}/',
        '--s3-endpoint-url',
        'localhost:9000',
    ]
    proc = subprocess.Popen(yatai_server_command,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE)
    yatai_server_url = "localhost:50051"
    svc = ExampleBentoService()
    svc.pack('model', {'model': 'abc'})
    bento_tag = f'{svc.name}:{svc.version}'
    saved_path = svc.save(yatai_url=yatai_server_url)
    yc = get_yatai_client(yatai_server_url)

    assert saved_path.startswith('s3://')

    bento_pb = yc.repository.get(bento_tag)
    with TempDirectory() as temp_dir:
        yc.repository.download_to_directory(bento_pb, f'{temp_dir}/bundle')
        assert os.path.exists(f'{temp_dir}/bundle/bentoml.yml')
    proc.kill()
Exemplo n.º 2
0
def test_yatai_server_containerize_without_push():
    svc = ExampleBentoService()
    svc.pack('model', [1, 2, 3])
    logger.info('Saving bento service to local yatai server')
    svc.save()

    yc = get_yatai_client()
    tag = 'mytag'
    built_tag = yc.repository.containerize(bento=f'{svc.name}:{svc.version}',
                                           tag=tag)
    assert built_tag == f'{tag}:{svc.version}'
Exemplo n.º 3
0
def test_sqlite_and_local_fs():
    with local_yatai_server() as yatai_server_url:
        yc = get_yatai_client(yatai_server_url)
        svc = ExampleBentoService()
        svc.pack('model', [1, 2, 3])
        bento_tag = f'{svc.name}:{svc.version}'
        logger.info(f'Saving BentoML saved bundle {bento_tag}')
        svc.save(yatai_url=yatai_server_url)

        bento_pb = yc.repository.get(bento_tag)
        assert (bento_pb.uri.type == BentoUri.LOCAL
                ), 'BentoService storage type mismatched, expect LOCAL'

        logger.info(f'Deleting saved bundle {bento_tag}')
        delete_svc_result = yc.repository.delete(bento_tag)
        assert delete_svc_result is None
Exemplo n.º 4
0
def test_yatai_server_with_postgres_and_local_storage():
    postgres_db_url = 'postgresql://*****:*****@localhost/bentoml:5432'

    from sqlalchemy_utils import create_database

    create_database(postgres_db_url)

    with local_yatai_service_from_cli(
            db_url=postgres_db_url) as yatai_server_url:
        logger.info('Saving bento service')
        logger.info(f'yatai url is {yatai_server_url}')
        svc = ExampleBentoService()
        svc.pack('model', [1, 2, 3])
        bento_tag = f'{svc.name}:{svc.version}'
        logger.info(f'Saving BentoML saved bundle {bento_tag}')
        svc.save(yatai_url=yatai_server_url)

        yc = get_yatai_client(yatai_server_url)
        bento_pb = yc.repository.get(bento_tag)
        assert (bento_pb.uri.type == BentoUri.LOCAL
                ), 'BentoService storage type mismatched, expect LOCAL'
Exemplo n.º 5
0
def test_yatai_server_containerize_from_cli():
    svc = ExampleBentoService()
    svc.pack('model', [1, 2, 3])
    logger.info('Saving bento service to local yatai server')
    svc.save()
    bento_tag = f'{svc.name}:{svc.version}'
    tag = 'mytagfoo'

    command = [
        'bentoml',
        'containerize',
        bento_tag,
        '--build-arg',
        'EXTRA_PIP_INSTALL_ARGS=--extra-index-url=https://pypi.org',
        '-t',
        tag,
    ]
    docker_proc = subprocess.Popen(command,
                                   stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE)
    stdout = docker_proc.stdout.read().decode('utf-8')
    assert f'{tag}:{svc.version}' in stdout, 'Failed to build container'
Exemplo n.º 6
0
def packed_svc():
    svc = ExampleBentoService()
    svc.pack('model', [1, 2, 3])
    svc.save()
    return svc