Skip to content

Commit

Permalink
feat(sweeps): Sweeps on Launch CLI uses launch config, relpath fixes (#…
Browse files Browse the repository at this point in the history
…4073)

* sdk changes for sweepslaunchkube

* tests

* tests

* fix tests

* update circleci tox

* format

* old tests fix

* reverted test

* pull master

* review comments
  • Loading branch information
hu-po committed Aug 11, 2022
1 parent c9a6ac1 commit 47e2ebe
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 153 deletions.
15 changes: 14 additions & 1 deletion tests/unit_tests_old/test_cli.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import json
import os
import platform
import subprocess
Expand Down Expand Up @@ -222,6 +223,18 @@ def test_sweep_pause(runner, mock_server, test_settings, stop_method):

def test_sweep_scheduler(runner, mock_server, test_settings):
with runner.isolated_filesystem():
with open("mock_launch_config.json", "w") as f:
json.dump(
{
"queue": "default",
"resource": "local-process",
"job": "mock-launch-job",
"scheduler": {
"resource": "local-process",
},
},
f,
)
sweep_config = {
"name": "My Sweep",
"method": "grid",
Expand All @@ -232,7 +245,7 @@ def test_sweep_scheduler(runner, mock_server, test_settings):
assert (
runner.invoke(
cli.sweep,
["--queue", "default", "--job", "mock_job_artifact", sweep_id],
["--launch_config", "mock_launch_config.json", sweep_id],
).exit_code
== 0
)
142 changes: 75 additions & 67 deletions tests/unit_tests_old/tests_launch/test_launch_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,47 +177,57 @@ def patched_pop_empty_queue(self, queue):


def test_launch_sweep_scheduler(runner, test_settings, live_mock_server):
# Create a test sweep
sweep_config = {
"name": "My Sweep",
"method": "grid",
"parameters": {"parameter1": {"values": [1, 2, 3]}},
}
sweep_id = wandb.sweep(sweep_config)
assert sweep_id == "test"
# Create the default queue
result = runner.invoke(
cli.launch,
[
"https://wandb.ai/mock_server_entity/test_project/runs/run",
"--project",
"test_project",
"--entity",
"mock_server_entity",
"--queue",
"default",
],
)
assert result.exit_code == 0
ctx = live_mock_server.get_ctx()
assert len(ctx["run_queues"]["1"]) == 1
# Run the launch sweep scheduler CLI command
result = runner.invoke(
cli.scheduler,
[
"--project",
"test_project",
"--entity",
"mock_server_entity",
"--queue",
"default",
# TODO(hupo): No mock job artifacts for now
# "--job",
# "mock_job_artifact",
sweep_id,
],
)
assert result.exit_code == 0
with runner.isolated_filesystem():
with open("mock_launch_config.json", "w") as f:
json.dump(
{
"queue": "default",
"resource": "local-process",
"job": "mock-launch-job",
"scheduler": {
"resource": "local-process",
},
},
f,
)
# Create a test sweep
sweep_config = {
"name": "My Sweep",
"method": "grid",
"parameters": {"parameter1": {"values": [1, 2, 3]}},
}
sweep_id = wandb.sweep(sweep_config)
assert sweep_id == "test"
# Create the default queue
result = runner.invoke(
cli.launch,
[
"https://wandb.ai/mock_server_entity/test_project/runs/run",
"--project",
"test_project",
"--entity",
"mock_server_entity",
"--queue",
"default",
],
)
assert result.exit_code == 0
ctx = live_mock_server.get_ctx()
assert len(ctx["run_queues"]["1"]) == 1
# Run the launch sweep scheduler CLI command
result = runner.invoke(
cli.scheduler,
[
"--project",
"test_project",
"--entity",
"mock_server_entity",
"--launch_config",
"mock_launch_config.json",
sweep_id,
],
)
assert result.exit_code == 0


# this test includes building a docker container which can take some time.
Expand Down Expand Up @@ -298,41 +308,39 @@ def test_launch_no_docker_exec(


def test_sweep_launch_scheduler(runner, test_settings, live_mock_server):
sweep_config = {
"name": "My Sweep",
"method": "grid",
"parameters": {"parameter1": {"values": [1, 2, 3]}},
}
sweep_config_path = os.path.expanduser("sweep-config.yaml")
with runner.isolated_filesystem():
with open(sweep_config_path, "w") as f:
json.dump(sweep_config, f)
with open("sweep-config.yaml", "w") as f:
json.dump(
{
"name": "My Sweep",
"method": "grid",
"parameters": {"parameter1": {"values": [1, 2, 3]}},
},
f,
)
with open("launch-config.yaml", "w") as f:
json.dump(
{
"queue": "default",
"resource": "local-process",
"job": "mock-launch-job",
"scheduler": {
"resource": "local-process",
},
},
f,
)
result = runner.invoke(
cli.sweep,
[
sweep_config_path,
"--queue",
"default",
"--job",
"mock_job_artifact",
"sweep-config.yaml",
"--launch_config",
"launch-config.yaml",
"--entity",
"mock_server_entity",
],
)
assert result.exit_code == 0
# If no --job is specified this should error out
result = runner.invoke(
cli.sweep,
[
sweep_config_path,
"--queue",
"default",
"--entity",
"mock_server_entity",
],
)
assert result.exit_code != 0
assert "Must specify --job flag" in result.output


@pytest.mark.timeout(320)
Expand Down

0 comments on commit 47e2ebe

Please sign in to comment.