Skip to content
Snippets Groups Projects
Commit 887160db authored by adrianciu's avatar adrianciu Committed by Adrian Ciu
Browse files

esd-concretize-buildcache: fixed factory for SpackOperation; additional tests

parent f3f6195f
No related branches found
No related tags found
1 merge request!5Methods for caching; CLI
...@@ -31,7 +31,7 @@ testing-pytest: ...@@ -31,7 +31,7 @@ testing-pytest:
- chmod +x dedal/utils/bootstrap.sh - chmod +x dedal/utils/bootstrap.sh
- ./dedal/utils/bootstrap.sh - ./dedal/utils/bootstrap.sh
- pip install . - pip install .
- pytest ./dedal/tests/ -s --junitxml=test-results.xml --ignore=./dedal/tests/spack_create_cache.py - pytest ./dedal/tests/ -s --junitxml=test-results.xml
artifacts: artifacts:
when: always when: always
reports: reports:
......
...@@ -6,12 +6,14 @@ from dedal.spack_factory.SpackOperationUseCache import SpackOperationUseCache ...@@ -6,12 +6,14 @@ from dedal.spack_factory.SpackOperationUseCache import SpackOperationUseCache
class SpackOperationCreator: class SpackOperationCreator:
@staticmethod @staticmethod
def get_spack_operator(spack_config: SpackConfig = None): def get_spack_operator(spack_config: SpackConfig = None, use_cache: bool = False) -> SpackOperation:
if spack_config is None: if spack_config is None:
return SpackOperation(SpackConfig()) return SpackOperation()
elif spack_config.concretization_dir is None and spack_config.buildcache_dir is None: elif spack_config.concretization_dir is None and spack_config.buildcache_dir is None:
return SpackOperation(spack_config) return SpackOperation(spack_config)
elif spack_config.concretization_dir and spack_config.buildcache_dir: elif (spack_config.concretization_dir and spack_config.buildcache_dir) and not use_cache:
return SpackOperationCreateCache(spack_config) return SpackOperationCreateCache(spack_config)
else: elif (spack_config.concretization_dir and spack_config.buildcache_dir) and use_cache:
return SpackOperationUseCache(spack_config) return SpackOperationUseCache(spack_config)
else:
return SpackOperation(SpackConfig())
from pathlib import Path from pathlib import Path
import pytest
from dedal.configuration.GpgConfig import GpgConfig from dedal.configuration.GpgConfig import GpgConfig
from dedal.configuration.SpackConfig import SpackConfig from dedal.configuration.SpackConfig import SpackConfig
...@@ -14,6 +16,8 @@ Ebrains Harbour does not support deletion via API, so the clean up must be done ...@@ -14,6 +16,8 @@ Ebrains Harbour does not support deletion via API, so the clean up must be done
""" """
@pytest.mark.skip(
reason="Skipping until an OCI registry which supports via API deletion; Clean up for OCI registry repo must be added before this test.")
def test_spack_create_cache_concretization(tmp_path): def test_spack_create_cache_concretization(tmp_path):
install_dir = tmp_path install_dir = tmp_path
concretization_dir = install_dir / 'concretization' concretization_dir = install_dir / 'concretization'
...@@ -32,6 +36,8 @@ def test_spack_create_cache_concretization(tmp_path): ...@@ -32,6 +36,8 @@ def test_spack_create_cache_concretization(tmp_path):
assert len(spack_operation.cache_dependency.list_tags()) > 0 assert len(spack_operation.cache_dependency.list_tags()) > 0
@pytest.mark.skip(
reason="Skipping until an OCI registry which supports via API deletion; Clean up for OCI registry repo must be added before this test.")
def test_spack_create_cache_installation(tmp_path): def test_spack_create_cache_installation(tmp_path):
install_dir = tmp_path install_dir = tmp_path
concretization_dir = install_dir / 'concretization' concretization_dir = install_dir / 'concretization'
......
import pytest
from dedal.configuration.SpackConfig import SpackConfig from dedal.configuration.SpackConfig import SpackConfig
from dedal.model.SpackDescriptor import SpackDescriptor from dedal.model.SpackDescriptor import SpackDescriptor
from dedal.spack_factory.SpackOperationCreator import SpackOperationCreator from dedal.spack_factory.SpackOperationCreator import SpackOperationCreator
...@@ -10,9 +11,10 @@ def test_spack_from_cache_concretize(tmp_path): ...@@ -10,9 +11,10 @@ def test_spack_from_cache_concretize(tmp_path):
install_dir = tmp_path install_dir = tmp_path
env = SpackDescriptor('test-spack-env', install_dir, test_spack_env_git) env = SpackDescriptor('test-spack-env', install_dir, test_spack_env_git)
repo = SpackDescriptor('ebrains-spack-builds', install_dir, ebrains_spack_builds_git) repo = SpackDescriptor('ebrains-spack-builds', install_dir, ebrains_spack_builds_git)
spack_config = SpackConfig(env, install_dir=install_dir, concretization_dir=install_dir) spack_config = SpackConfig(env, install_dir=install_dir, concretization_dir=install_dir / 'concretize',
buildcache_dir=install_dir / 'buildcache')
spack_config.add_repo(repo) spack_config.add_repo(repo)
spack_operation = SpackOperationCreator.get_spack_operator(spack_config) spack_operation = SpackOperationCreator.get_spack_operator(spack_config, use_cache=True)
assert isinstance(spack_operation, SpackOperationUseCache) assert isinstance(spack_operation, SpackOperationUseCache)
spack_operation.install_spack() spack_operation.install_spack()
spack_operation.setup_spack_env() spack_operation.setup_spack_env()
...@@ -21,13 +23,15 @@ def test_spack_from_cache_concretize(tmp_path): ...@@ -21,13 +23,15 @@ def test_spack_from_cache_concretize(tmp_path):
assert file_exists_and_not_empty(concretization_file_path) == True assert file_exists_and_not_empty(concretization_file_path) == True
@pytest.mark.skip(reason="Skipping test::test_spack_from_cache_install until all the functionalities in SpackOperationUseCache")
def test_spack_from_cache_install(tmp_path): def test_spack_from_cache_install(tmp_path):
install_dir = tmp_path install_dir = tmp_path
env = SpackDescriptor('test-spack-env', install_dir, test_spack_env_git) env = SpackDescriptor('test-spack-env', install_dir, test_spack_env_git)
repo = SpackDescriptor('ebrains-spack-builds', install_dir, ebrains_spack_builds_git) repo = SpackDescriptor('ebrains-spack-builds', install_dir, ebrains_spack_builds_git)
spack_config = SpackConfig(env, install_dir=install_dir, concretization_dir=install_dir) spack_config = SpackConfig(env, install_dir=install_dir, concretization_dir=install_dir / 'concretize',
buildcache_dir=install_dir / 'buildcache')
spack_config.add_repo(repo) spack_config.add_repo(repo)
spack_operation = SpackOperationCreator.get_spack_operator(spack_config) spack_operation = SpackOperationCreator.get_spack_operator(spack_config, use_cache=True)
assert isinstance(spack_operation, SpackOperationUseCache) assert isinstance(spack_operation, SpackOperationUseCache)
spack_operation.install_spack() spack_operation.install_spack()
spack_operation.setup_spack_env() spack_operation.setup_spack_env()
......
from dedal.spack_factory.SpackOperationCreateCache import SpackOperationCreateCache
from dedal.configuration.SpackConfig import SpackConfig
from dedal.model.SpackDescriptor import SpackDescriptor
from dedal.spack_factory.SpackOperation import SpackOperation
from dedal.spack_factory.SpackOperationCreator import SpackOperationCreator
from dedal.spack_factory.SpackOperationUseCache import SpackOperationUseCache
from dedal.tests.testing_variables import ebrains_spack_builds_git, test_spack_env_git
def test_spack_creator_scratch_1(tmp_path):
install_dir = tmp_path
env = SpackDescriptor('test-spack-env', install_dir, test_spack_env_git)
repo = SpackDescriptor('ebrains-spack-builds', install_dir, ebrains_spack_builds_git)
spack_config = SpackConfig(env, install_dir=install_dir)
spack_config.add_repo(repo)
spack_operation = SpackOperationCreator.get_spack_operator(spack_config)
assert isinstance(spack_operation, SpackOperation)
def test_spack_creator_scratch_2(tmp_path):
spack_config = None
spack_operation = SpackOperationCreator.get_spack_operator(spack_config)
assert isinstance(spack_operation, SpackOperation)
def test_spack_creator_scratch_3():
spack_config = SpackConfig()
spack_operation = SpackOperationCreator.get_spack_operator(spack_config)
assert isinstance(spack_operation, SpackOperation)
def test_spack_creator_create_cache(tmp_path):
install_dir = tmp_path
env = SpackDescriptor('test-spack-env', install_dir, test_spack_env_git)
repo = SpackDescriptor('ebrains-spack-builds', install_dir, ebrains_spack_builds_git)
spack_config = SpackConfig(env, install_dir=install_dir, concretization_dir=install_dir, buildcache_dir=install_dir)
spack_config.add_repo(repo)
spack_operation = SpackOperationCreator.get_spack_operator(spack_config)
assert isinstance(spack_operation, SpackOperationCreateCache)
def test_spack_creator_use_cache(tmp_path):
install_dir = tmp_path
env = SpackDescriptor('test-spack-env', install_dir, test_spack_env_git)
repo = SpackDescriptor('ebrains-spack-builds', install_dir, ebrains_spack_builds_git)
spack_config = SpackConfig(env, install_dir=install_dir, concretization_dir=install_dir, buildcache_dir=install_dir)
spack_config.add_repo(repo)
spack_operation = SpackOperationCreator.get_spack_operator(spack_config, use_cache=True)
assert isinstance(spack_operation, SpackOperationUseCache)
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment