def test_base_simulation_data_storage(): substance = Substance.from_components("C") with tempfile.TemporaryDirectory() as base_directory: data_directory = os.path.join(base_directory, "data_directory") data_object = create_dummy_simulation_data(data_directory, substance) backend_directory = os.path.join(base_directory, "storage_dir") storage = LocalFileStorage(backend_directory) storage_key = storage.store_object(data_object, data_directory) # Regenerate the data directory. os.makedirs(data_directory, exist_ok=True) assert storage.has_object(data_object) assert storage_key == storage.store_object(data_object, data_directory) retrieved_object, retrieved_directory = storage.retrieve_object( storage_key, StoredSimulationData) assert backend_directory in retrieved_directory assert data_object.json() == retrieved_object.json()
def test_simple_store_and_retrieve(data_class): """Tests storing and retrieving a simple object.""" with tempfile.TemporaryDirectory() as temporary_directory: local_storage = LocalFileStorage(temporary_directory) storage_object = data_class() # Make sure the validation fails with pytest.raises(ValueError): local_storage.store_object(storage_object) # This should now pass. storage_object.some_attribute = 10 storage_key = local_storage.store_object(storage_object) assert local_storage.has_object(storage_object) retrieved_object, _ = local_storage.retrieve_object(storage_key) assert retrieved_object is not None assert storage_object.json() == retrieved_object.json() # Ensure that the same key is returned when storing duplicate # data new_storage_key = local_storage.store_object(storage_object) assert storage_key == new_storage_key