mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-11-03 12:53:35 +08:00
This is configurable with two new options: - `calculate_dataset_hash`: in which cases Galaxy should calculate a hash for a new dataset. Possible values: 'always', 'upload' (the default), 'never'. - `hash_function`. Possible values: 'md5', 'sha1', 'sha256', 'sha512' Hashes are calculated via a Celery task, so currently only if the 'enable_celery_tasks' option is set to true.
50 lines
2.2 KiB
Python
50 lines
2.2 KiB
Python
from typing import Optional
|
|
|
|
from galaxy_test.base.populators import DatasetPopulator
|
|
from galaxy_test.driver import integration_util
|
|
|
|
|
|
class TestDatasetHashingIntegration(integration_util.IntegrationTestCase):
|
|
dataset_populator: DatasetPopulator
|
|
calculate_dataset_hash: Optional[str] = None
|
|
|
|
def setUp(self) -> None:
|
|
super().setUp()
|
|
self.dataset_populator = DatasetPopulator(self.galaxy_interactor)
|
|
|
|
@classmethod
|
|
def handle_galaxy_config_kwds(cls, config) -> None:
|
|
super().handle_galaxy_config_kwds(config)
|
|
if cls.calculate_dataset_hash is not None:
|
|
config["enable_celery_tasks"] = True
|
|
config["calculate_dataset_hash"] = cls.calculate_dataset_hash
|
|
|
|
def test_hashing(self, history_id: str) -> None:
|
|
hda = self.dataset_populator.new_dataset(history_id, wait=True)
|
|
if self.calculate_dataset_hash in [None, "always", "upload"]:
|
|
hashes = self.dataset_populator.wait_for_dataset_hashes(history_id=history_id, dataset_id=hda["id"])
|
|
assert hashes[0]["hash_value"] == "a17dcdfd36f47303a4824f1309d43ac14d7491ab3b8abb28782ac8e8d3b680ea"
|
|
else:
|
|
assert hda["hashes"] == [], hda
|
|
inputs = {"input1": {"src": "hda", "id": hda["id"]}}
|
|
run_response = self.dataset_populator.run_tool_raw("cat1", inputs=inputs, history_id=history_id)
|
|
self.dataset_populator.wait_for_tool_run(history_id=history_id, run_response=run_response)
|
|
cat_dataset = self.dataset_populator.get_history_dataset_details(history_id=history_id)
|
|
if self.calculate_dataset_hash == "always":
|
|
hashes = self.dataset_populator.wait_for_dataset_hashes(history_id=history_id, dataset_id=cat_dataset["id"])
|
|
assert hashes[0]["hash_value"] == "a17dcdfd36f47303a4824f1309d43ac14d7491ab3b8abb28782ac8e8d3b680ea"
|
|
else:
|
|
assert cat_dataset["hashes"] == [], cat_dataset
|
|
|
|
|
|
class TestDatasetHashingAlwaysIntegration(TestDatasetHashingIntegration):
|
|
calculate_dataset_hash = "always"
|
|
|
|
|
|
class TestDatasetHashingUploadIntegration(TestDatasetHashingIntegration):
|
|
calculate_dataset_hash = "upload"
|
|
|
|
|
|
class TestDatasetHashingNeverIntegration(TestDatasetHashingIntegration):
|
|
calculate_dataset_hash = "never"
|