Пример #1
0
 def test_get_metadata_invalid_service_id(self):
     with mock.patch.object(openeogeotrellis.service_registry, 'KazooClient') as KazooClient:
         reg = ZooKeeperServiceRegistry()
         client = KazooClient.return_value
         client.get.side_effect = NoNodeError
         with pytest.raises(ServiceNotFoundException, match="Service 'foobar' does not exist."):
             reg.get_metadata('foobar')
Пример #2
0
    def test_get_metadata(self):
        with mock.patch.object(openeogeotrellis.service_registry, 'KazooClient') as KazooClient:
            reg = ZooKeeperServiceRegistry()
            reg.persist(user_id='u9876', metadata=dummy_service_metadata, api_version="0.4.0")

            # Extract "created" data
            client = KazooClient.return_value
            assert client.create.call_count == 1
            path, raw = client.create.call_args_list[0][0]
            # Set up return value for zookeeper "get"
            assert isinstance(raw, bytes)
            storage = {path: raw}
            client.get.side_effect = lambda p: (storage[p], "dummy")
            metadata = reg.get_metadata('u9876', 's1234')
            assert metadata == dummy_service_metadata
Пример #3
0
 def test_get_metadata(self):
     with mock.patch.object(openeogeotrellis.service_registry, 'KazooClient') as KazooClient:
         reg = ZooKeeperServiceRegistry()
         reg.register(
             SecondaryService(service_metadata=dummy_service_metadata, host='oeo.net', port=5678, server=mock.Mock)
         )
         # Extract "created" data
         client = KazooClient.return_value
         assert client.create.call_count == 1
         path, raw = client.create.call_args_list[0][0]
         # Set up return value for zookeeper "get"
         assert isinstance(raw, bytes)
         storage = {path: raw}
         client.get.side_effect = lambda p: (storage[p], "dummy")
         metadata = reg.get_metadata('s1234')
         assert metadata == dummy_service_metadata
Пример #4
0
    def test_get_metadata_all(self):
        with mock.patch.object(openeogeotrellis.service_registry, 'KazooClient') as KazooClient:
            reg = ZooKeeperServiceRegistry()
            reg.persist(user_id='u9876', metadata=dummy_service_metadata, api_version="0.4.0")

            # Extract "created" data
            client = KazooClient.return_value
            assert client.create.call_count == 1
            path, raw = client.create.call_args_list[0][0]
            # Set up return value for zookeeper "get"
            assert isinstance(raw, bytes)
            storage = {path: raw}
            client.get_children.side_effect = lambda up: [] if up.endswith("/_anonymous") else [path.split('/')[-1]]
            client.get.side_effect = lambda p: (storage[p], "dummy")
            metadata_all = reg.get_metadata_all('u9876')
            assert metadata_all == {'s1234': dummy_service_metadata}
Пример #5
0
    def test_register(self):
        with mock.patch.object(openeogeotrellis.service_registry, 'KazooClient') as KazooClient:
            reg = ZooKeeperServiceRegistry()
            reg.persist(user_id='u9876', metadata=dummy_service_metadata, api_version="0.4.0")

        client = KazooClient.return_value
        # print(client.mock_calls)
        client.ensure_path.assert_any_call('/openeo/services')

        assert client.create.call_count == 1
        path, raw = client.create.call_args_list[0][0]
        assert path == '/openeo/services/u9876/s1234'
        data = json.loads(raw.decode('utf-8'))
        metadata = data["metadata"]
        assert metadata["id"] == "s1234"
        assert metadata["process"] == {"process_graph": dummy_process_graph}
        assert metadata["url"] == dummy_service_metadata.url
Пример #6
0
    def test_register(self):
        with mock.patch.object(openeogeotrellis.service_registry, 'KazooClient') as KazooClient:
            reg = ZooKeeperServiceRegistry()
            reg.register(
                SecondaryService(service_metadata=dummy_service_metadata, host='oeo.net', port=5678, server=mock.Mock())
            )

        client = KazooClient.return_value
        # print(client.mock_calls)
        client.ensure_path.assert_any_call('/openeo/services')

        assert client.create.call_count == 1
        path, raw = client.create.call_args_list[0][0]
        assert path == '/openeo/services/s1234'
        data = json.loads(raw.decode('utf-8'))
        metadata = data["metadata"]
        assert metadata["id"] == "s1234"
        assert metadata["process"] == {"process_graph": dummy_process_graph}
        assert metadata["url"] == dummy_service_metadata.url
Пример #7
0
    def test_stop_service(self):
        with mock.patch.object(openeogeotrellis.service_registry, 'KazooClient') as KazooClient:
            reg = ZooKeeperServiceRegistry()
            server = mock.Mock()
            reg.register(dummy_service_metadata.id, SecondaryService(host='oeo.net', port=5678, server=server))
            reg.persist(user_id='u9876', metadata=dummy_service_metadata, api_version="0.4.0")

            reg.stop_service('u9876', dummy_service_metadata.id)

        client = KazooClient.return_value
        # print(client.mock_calls)
        client.delete.assert_any_call('/openeo/services/u9876/s1234')
        server.stop.assert_called_once()
Пример #8
0
    def __init__(self):
        # TODO: do this with a config instead of hardcoding rules?
        self._service_registry = (InMemoryServiceRegistry()
                                  if ConfigParams().is_ci_context else
                                  ZooKeeperServiceRegistry())

        super().__init__(
            secondary_services=GpsSecondaryServices(
                service_registry=self._service_registry),
            catalog=get_layer_catalog(service_registry=self._service_registry),
            batch_jobs=GpsBatchJobs(),
        )
Пример #9
0
    def test_get_metadata_all_before(self):
        with mock.patch.object(openeogeotrellis.service_registry, 'KazooClient') as KazooClient:
            reg = ZooKeeperServiceRegistry()

            older_metadata = dummy_service_metadata._replace(created=datetime(1976, 7, 19, 0, 0, 0))
            newer_metadata = dummy_service_metadata._replace(id='s1235', created=datetime(1987, 7, 11, 0, 0, 0))

            reg.persist(user_id='u9876', metadata=older_metadata, api_version="0.4.0")
            reg.persist(user_id='u9876', metadata=newer_metadata, api_version="0.4.0")

            # Extract "created" data
            client = KazooClient.return_value
            assert client.create.call_count == 2

            storage = {call[0][0]: call[0][1] for call in client.create.call_args_list}

            client.get_children.side_effect = lambda p: [older_metadata.id, newer_metadata.id] if p.endswith("/u9876") else ['u9876']
            client.get.side_effect = lambda p: (storage[p], "dummy")

            expired_services = reg.get_metadata_all_before(upper=datetime(1981, 4, 24, 3, 0, 0))

        assert expired_services == [('u9876', older_metadata)]
Пример #10
0
    def test_stop_service(self):
        with mock.patch.object(openeogeotrellis.service_registry, 'KazooClient') as KazooClient:
            reg = ZooKeeperServiceRegistry()
            server = mock.Mock()
            reg.register(
                SecondaryService(service_metadata=dummy_service_metadata, host='oeo.net', port=5678, server=server)
            )
            reg.stop_service(dummy_service_metadata.id)

        client = KazooClient.return_value
        # print(client.mock_calls)
        client.delete.assert_called_with('/openeo/services/s1234')
        server.stop.assert_called_once()
Пример #11
0
def remove_secondary_services_before(upper: datetime) -> None:
    _log.info("removing secondary services before {d}...".format(d=upper))

    secondary_services = GpsSecondaryServices(ZooKeeperServiceRegistry())
    secondary_services.remove_services_before(upper)