SIENTIAPDE-1169

Refactor OPC data writing and repository initialization

- Simplified success tracking logic in the OPC class for writing prediction and confidence data.
- Removed unused pod_id attribute from OpcRepository initialization.
- Updated test cases to include pod_id for improved metrics tracking during data writing operations.
This commit is contained in:
vitor-aignosi
2025-08-19 08:31:58 -03:00
parent cc7efba887
commit fc6c95c264
4 changed files with 24 additions and 7 deletions

View File

@@ -152,7 +152,6 @@ class OPC(BaseActivity):
if local_success: if local_success:
self.info( self.info(
f"Prediction data written to OPC server {server_id} for tag {tag}.", metadata) f"Prediction data written to OPC server {server_id} for tag {tag}.", metadata)
else:
success = success and local_success success = success and local_success
if 'confidence_tags' in config: if 'confidence_tags' in config:
@@ -168,7 +167,6 @@ class OPC(BaseActivity):
if local_success: if local_success:
self.info( self.info(
f"Confidence data written to OPC server {server_id} for tag {tag}.", metadata) f"Confidence data written to OPC server {server_id} for tag {tag}.", metadata)
else:
success = success and local_success success = success and local_success
return self.process_confidence(data, success, metadata) return self.process_confidence(data, success, metadata)

View File

@@ -93,7 +93,6 @@ class OpcRepository():
) )
self.client.secure_channel_timeout = 10000000 self.client.secure_channel_timeout = 10000000
self.client.session_timeout = 10000000 self.client.session_timeout = 10000000
self.pod_id = pod_id
def connect(self) -> tuple[bool, dict[str, Any]]: def connect(self) -> tuple[bool, dict[str, Any]]:
""" """

View File

@@ -91,6 +91,7 @@ def test___init__(mock_send_notification, mock_opc_repository):
server_cert_path="", server_cert_path="",
notification_handler=mock_notification_handler, notification_handler=mock_notification_handler,
reconnection_interval=60, reconnection_interval=60,
pod_id='localhost'
), ),
]) ])
mock_opc_repository.assert_has_calls([ mock_opc_repository.assert_has_calls([
@@ -104,6 +105,7 @@ def test___init__(mock_send_notification, mock_opc_repository):
server_cert_path="", server_cert_path="",
notification_handler=mock_notification_handler, notification_handler=mock_notification_handler,
reconnection_interval=60, reconnection_interval=60,
pod_id='localhost'
) )
]) ])

View File

@@ -263,18 +263,36 @@ def test_write_data_invalid_data_type(opc_repository, mock_client):
assert error_data.get('attachment_content') is None assert error_data.get('attachment_content') is None
def test_write_data(opc_repository, mock_client): @patch('laborious.utils.repository.opc_repository.metrics')
def test_write_data(mock_metrics, opc_repository, mock_client):
opc_repository.validate_connection = MagicMock(return_value=(True, {})) opc_repository.validate_connection = MagicMock(return_value=(True, {}))
opc_repository.client = mock_client opc_repository.client = mock_client
mock_node = MagicMock() mock_node = MagicMock()
mock_client.get_node.return_value = mock_node mock_client.get_node.return_value = mock_node
opc_repository.write_data("ns=2;s=TestNode", 42.0, opc_repository.write_data("ns=2;s=TestNode", 42.0,
"float", opc_repository.logger, metadata) "float", opc_repository.logger, metadata['metadata'])
mock_client.get_node.assert_called_once_with("ns=2;s=TestNode") mock_client.get_node.assert_called_once_with("ns=2;s=TestNode")
mock_node.write_value.assert_called_once() mock_node.write_value.assert_called_once()
mock_metrics.PREDICTION_OPC_WRITING_COUNT.labels.assert_called_once_with(
pod_id=opc_repository.pod_id,
model_name=metadata['metadata']['model_name'],
pipeline_name=metadata['metadata']['workflow_name'],
opc_server_id=opc_repository.id
)
mock_metrics.PREDICTION_OPC_WRITING_COUNT.labels.return_value.inc.assert_called_once_with()
mock_metrics.PREDICTION_OPC_WRITING_RESPONSE_TIME_MONITOR.labels.assert_called_once_with(
pod_id=opc_repository.pod_id,
model_name=metadata['metadata']['model_name'],
pipeline_name=metadata['metadata']['workflow_name'],
opc_server_id=opc_repository.id
)
mock_metrics.PREDICTION_OPC_WRITING_RESPONSE_TIME_MONITOR.labels.return_value.observe.assert_called_once_with(
ANY)
def test_write_data_write_value_failed(opc_repository, mock_client): def test_write_data_write_value_failed(opc_repository, mock_client):
opc_repository.validate_connection = MagicMock(return_value=(True, {})) opc_repository.validate_connection = MagicMock(return_value=(True, {}))