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:
@@ -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)
|
||||||
|
|||||||
@@ -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]]:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -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'
|
||||||
)
|
)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
@@ -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, {}))
|
||||||
|
|||||||
Reference in New Issue
Block a user