|
2 | 2 | from unittest.mock import Mock |
3 | 3 |
|
4 | 4 | import pytest |
5 | | -from factories import CompTestDBFactory, CompTestResultFactory, DeviceFactory, NameSetDBFactory, SelectorFactory |
| 5 | +from factories import ( |
| 6 | + CompTestDBFactory, |
| 7 | + CompTestResultFactory, |
| 8 | + DataFileFactory, |
| 9 | + DataSourceFactory, |
| 10 | + DeviceFactory, |
| 11 | + NameSetDBFactory, |
| 12 | + SelectorFactory, |
| 13 | + SerializerDBFactory, |
| 14 | +) |
6 | 15 |
|
7 | 16 | from validity.compliance.eval.eval_defaults import DEFAULT_NAMESET |
8 | 17 | from validity.compliance.exceptions import EvalError |
@@ -111,6 +120,34 @@ def test_run_tests_for_device(): |
111 | 120 | assert executor.results_count == 3 |
112 | 121 |
|
113 | 122 |
|
| 123 | +@pytest.mark.django_db |
| 124 | +def test_run_tests_for_device_with_dynamic_pair_config(create_custom_fields): |
| 125 | + data_source = DataSourceFactory( |
| 126 | + custom_field_data={"default": True, "device_config_path": "configs/{{ device.name }}.yaml"} |
| 127 | + ) |
| 128 | + serializer = SerializerDBFactory(extraction_method="YAML", template="") |
| 129 | + device = DeviceFactory(name="leaf01-a", custom_field_data={"serializer": serializer.pk}) |
| 130 | + dynamic_pair = DeviceFactory(name="leaf01-b", custom_field_data={"serializer": serializer.pk}) |
| 131 | + DataFileFactory(source=data_source, path="configs/leaf01-a.yaml", data=b"interfaces: {}\n") |
| 132 | + DataFileFactory( |
| 133 | + source=data_source, |
| 134 | + path="configs/leaf01-b.yaml", |
| 135 | + data=b"interfaces:\n ae10:\n description: peer-link\n", |
| 136 | + ) |
| 137 | + selector = SelectorFactory(name_filter=r"leaf01-([ab])", dynamic_pairs="NAME") |
| 138 | + test = CompTestDBFactory(expression="device.dynamic_pair.config['interfaces']['ae10']") |
| 139 | + test.selectors.set([selector]) |
| 140 | + device_qs, test_qs = next(DeviceTestIterator({selector.pk: [device.pk]}, [], None)) |
| 141 | + executor = TExecutor(Logger(), explanation_verbosity=2, report_id=30) |
| 142 | + |
| 143 | + [result] = list(executor(device_qs, test_qs)) |
| 144 | + |
| 145 | + assert result.passed is True |
| 146 | + assert result.dynamic_pair == dynamic_pair |
| 147 | + assert executor.results_passed == 1 |
| 148 | + assert executor.results_count == 1 |
| 149 | + |
| 150 | + |
114 | 151 | @pytest.mark.django_db |
115 | 152 | def test_devicetest_iterator(): |
116 | 153 | devices = [DeviceFactory() for _ in range(3)] |
|
0 commit comments