|
| 1 | +from time import sleep |
| 2 | + |
| 3 | +import pytest |
| 4 | + |
| 5 | +from alchemiscale.compute import client |
| 6 | +from alchemiscale.storage.models import ComputeManagerID, ComputeManagerInstruction |
| 7 | +from alchemiscale.tests.integration.compute.utils import get_compute_settings_override |
| 8 | + |
| 9 | + |
| 10 | +class TestComputeManager: |
| 11 | + |
| 12 | + def test_wrong_credential( |
| 13 | + self, |
| 14 | + scope_test, |
| 15 | + n4js_preloaded, |
| 16 | + manager_client_wrong_credential: client.AlchemiscaleComputeManagerClient, |
| 17 | + uvicorn_server, |
| 18 | + ): |
| 19 | + with pytest.raises(client.AlchemiscaleComputeManagerClientError): |
| 20 | + manager_client_wrong_credential.get_info() |
| 21 | + |
| 22 | + def test_refresh_credential( |
| 23 | + self, |
| 24 | + n4js_preloaded, |
| 25 | + compute_client: client.AlchemiscaleComputeManagerClient, |
| 26 | + uvicorn_server, |
| 27 | + ): |
| 28 | + settings = get_compute_settings_override() |
| 29 | + assert compute_client._jwtoken is None |
| 30 | + compute_client._get_token() |
| 31 | + |
| 32 | + token = compute_client._jwtoken |
| 33 | + assert token is not None |
| 34 | + |
| 35 | + # token shouldn't change this fast |
| 36 | + compute_client.get_info() |
| 37 | + assert token == compute_client._jwtoken |
| 38 | + |
| 39 | + # should change if we wait a bit |
| 40 | + sleep(settings.JWT_EXPIRE_SECONDS + 2) |
| 41 | + compute_client.get_info() |
| 42 | + assert token != compute_client._jwtoken |
| 43 | + |
| 44 | + def test_api_check( |
| 45 | + self, |
| 46 | + n4js_preloaded, |
| 47 | + compute_manager_client: client.AlchemiscaleComputeManagerClient, |
| 48 | + uvicorn_server, |
| 49 | + ): |
| 50 | + compute_manager_client._api_check() |
| 51 | + |
| 52 | + def test_registration( |
| 53 | + self, |
| 54 | + n4js_preloaded, |
| 55 | + compute_manager_client: client.AlchemiscaleComputeManagerClient, |
| 56 | + ): |
| 57 | + compute_manager_id = ComputeManagerID.from_manager_id("testmanager") |
| 58 | + returned_id = compute_manager_client.register(compute_manager_id) |
| 59 | + |
| 60 | + assert compute_manager_id == returned_id |
| 61 | + |
| 62 | + def test_deregistration( |
| 63 | + self, |
| 64 | + n4js_preloaded, |
| 65 | + compute_manager_client: client.AlchemiscaleComputeManagerClient, |
| 66 | + ): |
| 67 | + compute_manager_id = ComputeManagerID.from_manager_id("testmanager") |
| 68 | + compute_manager_client.register(compute_manager_id) |
| 69 | + returned_id = compute_manager_client.deregister(compute_manager_id) |
| 70 | + assert compute_manager_id == returned_id |
| 71 | + |
| 72 | + def test_get_instruction( |
| 73 | + self, |
| 74 | + n4js_preloaded, |
| 75 | + compute_manager_client: client.AlchemiscaleComputeManagerClient, |
| 76 | + ): |
| 77 | + compute_manager_id = ComputeManagerID.from_manager_id("testmanager") |
| 78 | + compute_manager_client.register(compute_manager_id) |
| 79 | + instruction, payload = compute_manager_client.get_instruction( |
| 80 | + compute_manager_id |
| 81 | + ) |
| 82 | + |
| 83 | + assert instruction == ComputeManagerInstruction.OK, (instruction, payload) |
| 84 | + assert payload == {"compute_service_ids": [], "num_registered": 0} |
| 85 | + |
| 86 | + def test_update_status( |
| 87 | + self, |
| 88 | + n4js_preloaded, |
| 89 | + computer_manager_client: client.AlchemiscaleComputeManagerClient, |
| 90 | + ): |
| 91 | + raise NotImplementedError |
0 commit comments