Skip to content

Commit 9fe9446

Browse files
committed
Refactor: centralize spectrum average cap
- add a shared default spectrum analyzer averages constant - set the shared spectrum analyzer averages value to 5 - use the shared constant for spectrum command defaults and runtime cap - update the spectrum analyzer averages regression test - 2026-03-20 17:53:15
1 parent 01b2eb6 commit 9fe9446

6 files changed

Lines changed: 11 additions & 6 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
66

77
[project]
88
name = "pypnm-docsis"
9-
version = "1.5.9.0"
9+
version = "1.5.9.1"
1010
description = "DOCSIS 3.x/4.0 Proactive Network Maintenance Toolkit"
1111
readme = "README.md"
1212
requires-python = ">=3.10"

src/pypnm/api/routes/common/extended/common_measure_service.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
from pypnm.lib.file_processor import FileProcessor
6565
from pypnm.lib.ftp.ftp_connector import FTPConnector
6666
from pypnm.lib.host_endpoint import HostEndpoint
67+
from pypnm.lib.constants import DEFAULT_SPECTRUM_ANALYZER_NUM_AVERAGES
6768
from pypnm.lib.inet import Inet
6869
from pypnm.lib.ping import Ping
6970
from pypnm.lib.ssh.ssh_connector import SSHConnector
@@ -105,7 +106,7 @@ class MeasureServiceReturnTypes(Enum):
105106
DocsIf3CmSpectrumAnalysisEntry
106107

107108
class CommonMeasureService(CommonMessagingService):
108-
SPECTRUM_ANALYZER_AVERAGES_CAP: int = 1
109+
SPECTRUM_ANALYZER_AVERAGES_CAP: int = DEFAULT_SPECTRUM_ANALYZER_NUM_AVERAGES
109110
"""
110111
Base service class for executing common Proactive Network Maintenance (PNM) measurement tests.
111112

src/pypnm/lib/constants.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ def from_int(cls, value: int | None) -> DocsIf31CmDsOfdmChanIndicator | None:
213213
T = TypeVar("T")
214214

215215
DEFAULT_SPECTRUM_ANALYZER_INDICES: Final[list[int]] = [0]
216+
DEFAULT_SPECTRUM_ANALYZER_NUM_AVERAGES: Final[int] = 5
216217

217218

218219
FEC_SUMMARY_TYPE_STEP_SECONDS: dict[int, int] = {
@@ -248,5 +249,6 @@ def from_int(cls, value: int | None) -> DocsIf31CmDsOfdmChanIndicator | None:
248249
"DocsIf31CmStatusOfdmaUsRangingStatus",
249250
"DocsIf31CmDsOfdmChanIndicator",
250251
"DEFAULT_SPECTRUM_ANALYZER_INDICES",
252+
"DEFAULT_SPECTRUM_ANALYZER_NUM_AVERAGES",
251253
"FEC_SUMMARY_TYPE_STEP_SECONDS", "FEC_SUMMARY_TYPE_LABEL",
252254
]

src/pypnm/pnm/data_type/DocsIf3CmSpectrumAnalysisCtrlCmd.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from enum import IntEnum
1010
from typing import Any
1111

12+
from pypnm.lib.constants import DEFAULT_SPECTRUM_ANALYZER_NUM_AVERAGES
1213
from pypnm.lib.types import STATUS, ResolutionBw
1314
from pypnm.lib.utils import Generate
1415

@@ -90,7 +91,7 @@ class SpectrumAnalysisDefaults(IntEnum):
9091
NUM_BINS_PER_SEGMENT = 256
9192
NOISE_BW = 110
9293
WINDOW_FUNCTION = WindowFunction.HANN
93-
NUM_AVERAGES = 1
94+
NUM_AVERAGES = DEFAULT_SPECTRUM_ANALYZER_NUM_AVERAGES
9495

9596
@classmethod
9697
def to_dict(cls) -> dict:

src/pypnm/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
__all__ = ["__version__"]
77

88
# MAJOR.MINOR.MAINTENANCE.BUILD
9-
__version__: str = "1.5.9.0"
9+
__version__: str = "1.5.9.1"

tests/test_spectrum_analyzer_averages_cap.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from pypnm.api.routes.common.extended.common_measure_service import CommonMeasureService
1010
from pypnm.api.routes.common.service.status_codes import ServiceStatusCode
1111
from pypnm.docsis.cm_snmp_operation import DocsPnmCmCtlTest
12+
from pypnm.lib.constants import DEFAULT_SPECTRUM_ANALYZER_NUM_AVERAGES
1213
from pypnm.lib.inet import Inet
1314
from pypnm.pnm.data_type.DocsIf3CmSpectrumAnalysisCtrlCmd import SpectrumRetrievalType
1415

@@ -33,7 +34,7 @@ async def setDocsIf3CmSpectrumAnalysisCtrlCmd(self, cmd: object, _retrieval_type
3334

3435

3536
@pytest.mark.asyncio
36-
async def test_spectrum_analyzer_averages_capped_to_one() -> None:
37+
async def test_spectrum_analyzer_averages_capped_to_shared_default() -> None:
3738
cm = _FakeCableModem()
3839
service = CommonMeasureService(
3940
pnm_test_type=DocsPnmCmCtlTest.SPECTRUM_ANALYZER_SNMP_AMP_DATA,
@@ -57,4 +58,4 @@ async def test_spectrum_analyzer_averages_capped_to_one() -> None:
5758

5859
assert status == ServiceStatusCode.SUCCESS
5960
assert cm.last_cmd is not None
60-
assert cm.last_cmd.docsIf3CmSpectrumAnalysisCtrlCmdNumberOfAverages == 1
61+
assert cm.last_cmd.docsIf3CmSpectrumAnalysisCtrlCmdNumberOfAverages == DEFAULT_SPECTRUM_ANALYZER_NUM_AVERAGES

0 commit comments

Comments
 (0)