Skip to content

Commit 17b0542

Browse files
committed
GPI-1232 Synchronous importer for local sizes
1 parent 0cf447b commit 17b0542

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

src/galaxy/api/importer.py

+13
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,16 @@ async def _import_element(self, id_, context_):
8787
self._notification_failure(id_, UnknownError())
8888
finally:
8989
self._notification_partially_finished(id_)
90+
91+
92+
class SynchroneousImporter(Importer):
93+
async def _import_elements(self, ids_, context_):
94+
try:
95+
for id_ in ids_:
96+
await self._import_element(id_, context_)
97+
self._notification_finished()
98+
self._complete()
99+
except asyncio.CancelledError:
100+
logger.debug("Importing %s cancelled", self._name)
101+
finally:
102+
self._import_in_progress = False

src/galaxy/api/plugin.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
Subscription, SubscriptionGame
1414
)
1515
from galaxy.task_manager import TaskManager
16-
from galaxy.api.importer import Importer, CollectionImporter
16+
from galaxy.api.importer import Importer, CollectionImporter, SynchroneousImporter
1717

1818

1919
logger = logging.getLogger(__name__)
@@ -104,7 +104,7 @@ def __init__(self, platform, version, reader, writer, handshake_token):
104104
self._user_presence_import_finished,
105105
self.user_presence_import_complete
106106
)
107-
self._local_size_importer = Importer(
107+
self._local_size_importer = SynchroneousImporter(
108108
self._external_task_manager,
109109
"local size",
110110
self.get_local_size,

tests/test_local_size.py

+11-8
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ async def test_get_local_size_success(plugin, read, write):
1919
}
2020
read.side_effect = [async_return_value(create_message(request)), async_return_value(b"", 10)]
2121
plugin.get_local_size.side_effect = [
22-
async_return_value(100000000000),
22+
async_return_value(100000000000, 1),
2323
async_return_value(None),
2424
async_return_value(3333333)
2525
]
@@ -89,12 +89,15 @@ async def test_get_local_size_error(exception, code, message, plugin, read, writ
8989
plugin.get_local_size.assert_called()
9090
plugin.local_size_import_complete.assert_called_once_with()
9191

92-
assert get_messages(write) == [
93-
{
94-
"jsonrpc": "2.0",
95-
"id": request_id,
96-
"result": None
97-
},
92+
direct_response = {
93+
"jsonrpc": "2.0",
94+
"id": request_id,
95+
"result": None
96+
}
97+
responses = get_messages(write)
98+
assert direct_response in responses
99+
responses.remove(direct_response)
100+
assert responses == [
98101
{
99102
"jsonrpc": "2.0",
100103
"method": "local_size_import_failure",
@@ -145,6 +148,7 @@ async def test_prepare_get_local_size_context_error(plugin, read, write):
145148
@pytest.mark.asyncio
146149
async def test_import_already_in_progress_error(plugin, read, write):
147150
plugin.prepare_local_size_context.return_value = async_return_value(None)
151+
plugin.get_local_size.return_value = async_return_value(100, 5)
148152
requests = [
149153
{
150154
"jsonrpc": "2.0",
@@ -185,4 +189,3 @@ async def test_import_already_in_progress_error(plugin, read, write):
185189
"message": "Import already in progress"
186190
}
187191
} in responses
188-

0 commit comments

Comments
 (0)