你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 15:10:13 +08:00
Fix getting variant of test dependency
这个提交包含在:
@@ -23,6 +23,7 @@ from reframe.core.builtins import (
|
||||
sanity_function,
|
||||
variable,
|
||||
)
|
||||
from reframe.core.exceptions import DependencyError
|
||||
from reframe.utility import udeps
|
||||
|
||||
from reframe_tests.tests.regression_checks import RegressionCheck
|
||||
@@ -110,14 +111,34 @@ class GprMaxBaseTest(RunOnlyRegressionTest):
|
||||
|
||||
regression_checks = variable(typ.List[RegressionCheck], value=[])
|
||||
|
||||
test_dependency = variable(type(None), str, value=None)
|
||||
# TODO: Make this a ReFrame variable
|
||||
# Not currently possible as ReFrame does not think an object of type
|
||||
# reframe.core.meta.RegressionTestMeta is copyable, and so ReFrame
|
||||
# test classes cannot be specified in a variable.
|
||||
test_dependency: Optional[type["GprMaxBaseTest"]] = None
|
||||
# test_dependency = variable(type(None), type, value=None)
|
||||
|
||||
def get_test_dependency_variant_name(self, **kwargs) -> Optional[str]:
|
||||
if self.test_dependency is None:
|
||||
return None
|
||||
|
||||
variant_nums = self.test_dependency.get_variant_nums(model=self.model, **kwargs)
|
||||
|
||||
if len(variant_nums) < 1:
|
||||
kwargs.setdefault("model", self.model)
|
||||
raise DependencyError(
|
||||
f"No variant of '{self.test_dependency.__name__}' meets conditions: {kwargs}",
|
||||
)
|
||||
|
||||
return self.test_dependency.variant_name(variant_nums[0])
|
||||
|
||||
def get_test_dependency(self) -> Optional["GprMaxBaseTest"]:
|
||||
"""Get test variant with the same model and number of models"""
|
||||
if self.test_dependency is None:
|
||||
variant = self.get_test_dependency_variant_name()
|
||||
if variant is None:
|
||||
return None
|
||||
else:
|
||||
return self.getdep(self.test_dependency)
|
||||
return self.getdep(variant)
|
||||
|
||||
def build_reference_filepath(self, name: Union[str, os.PathLike]) -> Path:
|
||||
target = self.get_test_dependency()
|
||||
@@ -148,7 +169,9 @@ class GprMaxBaseTest(RunOnlyRegressionTest):
|
||||
"""Test depends on the Python virtual environment building correctly"""
|
||||
self.depends_on("CreatePyenvTest", udeps.by_env)
|
||||
if self.test_dependency is not None:
|
||||
self.depends_on(self.test_dependency, udeps.by_env)
|
||||
variant = self.get_test_dependency_variant_name()
|
||||
self.depends_on(variant, udeps.by_env)
|
||||
# self.depends_on(self.test_dependency, udeps.by_env)
|
||||
|
||||
@require_deps
|
||||
def get_pyenv_path(self, CreatePyenvTest):
|
||||
|
@@ -1,4 +1,5 @@
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
import reframe.utility.typecheck as typ
|
||||
from numpy import prod
|
||||
@@ -88,6 +89,9 @@ class BScanMixin(GprMaxMixin):
|
||||
f"mv {self.model}_merged.h5 {self.output_file}",
|
||||
]
|
||||
|
||||
def get_test_dependency_variant_name(self) -> Optional[str]:
|
||||
return super().get_test_dependency_variant_name(num_models=self.num_models)
|
||||
|
||||
|
||||
class TaskfarmMixin(GprMaxMixin):
|
||||
# num_tasks = required
|
||||
@@ -95,7 +99,7 @@ class TaskfarmMixin(GprMaxMixin):
|
||||
@run_after("setup")
|
||||
def add_taskfarm_flag(self):
|
||||
"""Add taskfarm specific commandline arguments"""
|
||||
self.executable_opts += ["-taskfarm"]
|
||||
self.executable_opts += ["--taskfarm"]
|
||||
|
||||
|
||||
class AntennaModelMixin(GprMaxMixin):
|
||||
|
@@ -37,18 +37,18 @@ class Test2DModelYZ(GprMaxRegressionTest):
|
||||
class Test2DModelXYMpi(MpiMixin, Test2DModelXY):
|
||||
tags = {"test", "mpi", "2d", "waveform", "hertzian_dipole"}
|
||||
mpi_layout = parameter([[4, 4, 1]])
|
||||
test_dependency = "Test2DModelXY"
|
||||
test_dependency = Test2DModelXY
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class Test2DModelXZMpi(MpiMixin, Test2DModelXZ):
|
||||
tags = {"test", "mpi", "2d", "waveform", "hertzian_dipole"}
|
||||
mpi_layout = parameter([[4, 1, 4]])
|
||||
test_dependency = "Test2DModelXZ"
|
||||
test_dependency = Test2DModelXZ
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class Test2DModelYZMpi(MpiMixin, Test2DModelYZ):
|
||||
tags = {"test", "mpi", "2d", "waveform", "hertzian_dipole"}
|
||||
mpi_layout = parameter([[1, 4, 4]])
|
||||
test_dependency = "Test2DModelYZ"
|
||||
test_dependency = Test2DModelYZ
|
||||
|
@@ -49,18 +49,18 @@ class TestEdgeGeometry(AntennaModelMixin, GprMaxRegressionTest):
|
||||
class TestBoxGeometryDefaultPmlMpi(MpiMixin, TestBoxGeometryDefaultPml):
|
||||
tags = {"test", "mpi", "geometery", "box"}
|
||||
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
|
||||
test_dependency = "TestBoxGeometryDefaultPml"
|
||||
test_dependency = TestBoxGeometryDefaultPml
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class TestBoxGeometryNoPmlMpi(MpiMixin, TestBoxGeometryNoPml):
|
||||
tags = {"test", "mpi", "geometery", "box"}
|
||||
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
|
||||
test_dependency = "TestBoxGeometryNoPml"
|
||||
test_dependency = TestBoxGeometryNoPml
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class TestEdgeGeometryMpi(MpiMixin, TestEdgeGeometry):
|
||||
tags = {"test", "mpi", "geometry", "edge", "transmission_line", "waveform", "antenna"}
|
||||
mpi_layout = parameter([[3, 3, 3]])
|
||||
test_dependency = "TestEdgeGeometry"
|
||||
test_dependency = TestEdgeGeometry
|
||||
|
@@ -23,4 +23,4 @@ class TestDispersiveMaterials(GprMaxRegressionTest):
|
||||
class TestDispersiveMaterialsMpi(MpiMixin, TestDispersiveMaterials):
|
||||
tags = {"test", "mpi", "hertzian_dipole", "waveform", "material", "dispersive", "box"}
|
||||
mpi_layout = parameter([[3, 3, 3]])
|
||||
test_dependency = "TestDispersiveMaterials"
|
||||
test_dependency = TestDispersiveMaterials
|
||||
|
@@ -23,4 +23,4 @@ class TestSingleCellPml(GprMaxRegressionTest):
|
||||
class TestSingleCellPmlMpi(MpiMixin, TestSingleCellPml):
|
||||
tags = {"test", "mpi", "geometery", "box", "pml"}
|
||||
mpi_layout = parameter([[2, 2, 1], [3, 3, 1]])
|
||||
test_dependency = "TestSingleCellPml"
|
||||
test_dependency = TestSingleCellPml
|
||||
|
@@ -50,7 +50,7 @@ class Test2DSliceSnapshot(GprMaxSnapshotTest):
|
||||
class Test2DSnapshotMpi(MpiMixin, Test2DSnapshot):
|
||||
tags = {"test", "mpi", "2d", "waveform", "hertzian_dipole", "snapshot"}
|
||||
mpi_layout = parameter([[2, 2, 1], [3, 3, 1], [4, 4, 1]])
|
||||
test_dependency = "Test2DSnapshot"
|
||||
test_dependency = Test2DSnapshot
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
@@ -69,7 +69,7 @@ class TestSnapshotMpi(MpiMixin, TestSnapshot):
|
||||
[4, 4, 4],
|
||||
]
|
||||
)
|
||||
test_dependency = "TestSnapshot"
|
||||
test_dependency = TestSnapshot
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
@@ -88,4 +88,4 @@ class Test2DSliceSnapshotMpi(MpiMixin, Test2DSliceSnapshot):
|
||||
[4, 4, 4],
|
||||
]
|
||||
)
|
||||
test_dependency = "Test2DSliceSnapshot"
|
||||
test_dependency = Test2DSliceSnapshot
|
||||
|
@@ -37,18 +37,18 @@ class TestTransmissionLineSource(GprMaxRegressionTest):
|
||||
class TestHertzianDipoleSourceMpi(MpiMixin, TestHertzianDipoleSource):
|
||||
tags = {"test", "mpi", "hertzian_dipole", "waveform"}
|
||||
mpi_layout = parameter([[3, 3, 3]])
|
||||
test_dependency = "TestHertzianDipoleSource"
|
||||
test_dependency = TestHertzianDipoleSource
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class TestMagneticDipoleSourceMpi(MpiMixin, TestMagneticDipoleSource):
|
||||
tags = {"test", "mpi", "magnetic_dipole", "waveform"}
|
||||
mpi_layout = parameter([[3, 3, 3]])
|
||||
test_dependency = "TestMagneticDipoleSource"
|
||||
test_dependency = TestMagneticDipoleSource
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class TestTransmissionLineSourceMpi(MpiMixin, TestTransmissionLineSource):
|
||||
tags = {"test", "mpi", "transmission_line", "waveform"}
|
||||
mpi_layout = parameter([[3, 3, 3]])
|
||||
test_dependency = "TestTransmissionLineSource"
|
||||
test_dependency = TestTransmissionLineSource
|
||||
|
@@ -1,7 +1,6 @@
|
||||
import reframe as rfm
|
||||
|
||||
from reframe_tests.tests.mixins import TaskfarmMixin
|
||||
from reframe_tests.tests.standard_tests import GprMaxRegressionTest
|
||||
from reframe_tests.tests.test_example_models import TestBscan
|
||||
|
||||
"""Reframe regression tests for taskfarm functionality
|
||||
@@ -23,7 +22,7 @@ class TestSingleNodeTaskfarm(TaskfarmMixin, TestBscan):
|
||||
}
|
||||
num_tasks = 8
|
||||
num_tasks_per_node = 8
|
||||
test_dependency = "TestBscan"
|
||||
test_dependency = TestBscan
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
@@ -41,4 +40,4 @@ class TestMultiNodeTaskfarm(TaskfarmMixin, TestBscan):
|
||||
}
|
||||
num_tasks = 32
|
||||
num_tasks_per_node = 8
|
||||
test_dependency = "TestBscan"
|
||||
test_dependency = TestBscan
|
||||
|
在新工单中引用
屏蔽一个用户