blob: f60517de532d0606a5b8ab8664948a1aa9388e57 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import pytest
from click.testing import CliRunner
from submarine.cli import main
from submarine.client.api.environment_client import EnvironmentClient
from submarine.client.models.environment_spec import EnvironmentSpec
from submarine.client.models.kernel_spec import KernelSpec
TEST_CONSOLE_WIDTH = 191
@pytest.mark.e2e
def test_all_environment_e2e():
"""E2E Test for using submarine CLI to access submarine environment
To run this test, you should first set
your submarine CLI config `port` to 8080 and `hostname` to localhost
i.e. please execute the commands in your terminal:
submarine config set connection.hostname localhost
submarine config set connection.port 8080
"""
# set env to display full table
runner = CliRunner(env={"COLUMNS": str(TEST_CONSOLE_WIDTH)})
# check if cli config is correct for testing
result = runner.invoke(main.entry_point, ["config", "get", "connection.port"])
assert result.exit_code == 0
assert "connection.port=8080" in result.output
submarine_client = EnvironmentClient(host="http://localhost:8080")
kernel_spec = KernelSpec(
name="submarine_jupyter_py3",
channels=["defaults"],
conda_dependencies=[],
pip_dependencies=[],
)
environment_spec = EnvironmentSpec(
name="mytest",
kernel_spec=kernel_spec,
docker_image="apache/submarine:jupyter-notebook-gpu-0.8.0",
)
environment = submarine_client.create_environment(environment_spec=environment_spec)
environment_name = environment["environmentSpec"]["name"]
# test list environment
result = runner.invoke(main.entry_point, ["list", "environment"])
assert result.exit_code == 0
assert "List of Environments" in result.output
assert environment["environmentSpec"]["name"] in result.output
assert environment["environmentSpec"]["dockerImage"] in result.output
assert environment["environmentId"] in result.output
# test get environment
result = runner.invoke(main.entry_point, ["get", "environment", environment_name])
assert f"Environment(name = {environment_name} )" in result.output
assert environment["environmentSpec"]["name"] in result.output
# test delete environment
result = runner.invoke(main.entry_point, ["delete", "environment", environment_name])
assert f"Environment(name = {environment_name} ) deleted" in result.output
# test get environment fail after delete
result = runner.invoke(main.entry_point, ["get", "environment", environment_name])
assert "[Api Error] Environment not found." in result.output