Skip to content
This repository was archived by the owner on Aug 11, 2020. It is now read-only.

Commit 7d0125b

Browse files
BartoszCkikossak
authored andcommitted
Add tests for starting hyperopt
1 parent f5e060d commit 7d0125b

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed

tests/functional/test_hyperparameters.py

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,105 @@ def test_should_send_request_and_print_proper_message_when_error_code_returned_w
372372
assert self.EXPECTED_HEADERS["X-API-Key"] != "some_key"
373373

374374

375+
class TestStartHyperparameters(object):
376+
URL = "https://services.paperspace.io/experiments/v1/hyperopt/e0ucpl6adyfgg/start/"
377+
COMMAND = [
378+
"hyperparameters", "start",
379+
"--id", "e0ucpl6adyfgg",
380+
]
381+
382+
EXPECTED_HEADERS = paperspace.client.default_headers.copy()
383+
EXPECTED_HEADERS_WITH_CHANGED_API_KEY = paperspace.client.default_headers.copy()
384+
EXPECTED_HEADERS_WITH_CHANGED_API_KEY["X-API-Key"] = "some_key"
385+
EXPECTED_RESPONSE = {"message": "success"}
386+
EXPECTED_STDOUT = "Hyperparameter tuning started\n"
387+
388+
EXPECTED_RESPONSE_JSON_WITH_ERROR = {"error": "Could not find cluster meeting requirements"}
389+
EXPECTED_STDOUT_WHEN_ERROR_RECEIVED = "Could not find cluster meeting requirements\n"
390+
391+
COMMAND_WITH_API_KEY_PARAMETER_USED = [
392+
"hyperparameters", "start",
393+
"--id", "e0ucpl6adyfgg",
394+
"--apiKey", "some_key",
395+
]
396+
EXPECTED_RESPONSE_WHEN_WRONG_API_KEY_WAS_USED = {"details": "Incorrect API Key provided", "error": "Forbidden"}
397+
EXPECTED_STDOUT_WHEN_WRONG_API_KEY_WAS_USED = "Forbidden\nIncorrect API Key provided\n"
398+
399+
@mock.patch("paperspace.client.requests.put")
400+
def test_should_send_get_request_and_print_proper_message_when_start_command_was_used(self, post_patched):
401+
post_patched.return_value = MockResponse(self.EXPECTED_RESPONSE, 201)
402+
403+
runner = CliRunner()
404+
result = runner.invoke(cli.cli, self.COMMAND)
405+
406+
post_patched.assert_called_once_with(self.URL,
407+
headers=self.EXPECTED_HEADERS,
408+
json=None,
409+
params=None)
410+
411+
assert result.output == self.EXPECTED_STDOUT
412+
assert self.EXPECTED_HEADERS["X-API-Key"] != "some_key"
413+
414+
@mock.patch("paperspace.client.requests.put")
415+
def test_should_replace_api_key_in_headers_when_api_key_parameter_was_used(self, post_patched):
416+
post_patched.return_value = MockResponse(self.EXPECTED_RESPONSE, 201)
417+
418+
runner = CliRunner()
419+
result = runner.invoke(cli.cli, self.COMMAND_WITH_API_KEY_PARAMETER_USED)
420+
421+
post_patched.assert_called_once_with(self.URL,
422+
headers=self.EXPECTED_HEADERS_WITH_CHANGED_API_KEY,
423+
json=None,
424+
params=None)
425+
426+
assert result.output == self.EXPECTED_STDOUT
427+
assert self.EXPECTED_HEADERS["X-API-Key"] != "some_key"
428+
429+
@mock.patch("paperspace.client.requests.put")
430+
def test_should_print_proper_message_when_error_message_received(self, put_patched):
431+
put_patched.return_value = MockResponse(self.EXPECTED_RESPONSE_JSON_WITH_ERROR, 400)
432+
433+
runner = CliRunner()
434+
result = runner.invoke(cli.cli, self.COMMAND)
435+
436+
put_patched.assert_called_once_with(self.URL,
437+
headers=self.EXPECTED_HEADERS,
438+
json=None,
439+
params=None)
440+
441+
assert result.output == self.EXPECTED_STDOUT_WHEN_ERROR_RECEIVED
442+
443+
@mock.patch("paperspace.client.requests.put")
444+
def test_should_print_proper_message_when_wrong_api_key_was_used(self, put_patched):
445+
put_patched.return_value = MockResponse(self.EXPECTED_RESPONSE_WHEN_WRONG_API_KEY_WAS_USED, 403)
446+
447+
runner = CliRunner()
448+
result = runner.invoke(cli.cli, self.COMMAND)
449+
450+
put_patched.assert_called_once_with(self.URL,
451+
headers=self.EXPECTED_HEADERS,
452+
json=None,
453+
params=None)
454+
455+
assert result.output == self.EXPECTED_STDOUT_WHEN_WRONG_API_KEY_WAS_USED
456+
assert self.EXPECTED_HEADERS["X-API-Key"] != "some_key"
457+
458+
@mock.patch("paperspace.client.requests.put")
459+
def test_should_send_request_and_print_proper_message_when_error_code_returned_without_json_data(self, put_patched):
460+
put_patched.return_value = MockResponse(status_code=500)
461+
462+
runner = CliRunner()
463+
result = runner.invoke(cli.cli, self.COMMAND)
464+
465+
put_patched.assert_called_once_with(self.URL,
466+
headers=self.EXPECTED_HEADERS,
467+
json=None,
468+
params=None)
469+
470+
assert result.output == "Unknown error while starting hyperparameter tuning\n"
471+
assert self.EXPECTED_HEADERS["X-API-Key"] != "some_key"
472+
473+
375474
class TestHyperparametersList(object):
376475
URL = "https://services.paperspace.io/experiments/v1/hyperopt/"
377476
COMMAND = ["hyperparameters", "list"]

0 commit comments

Comments
 (0)