SIENTIAPDE-1325
Enhance Ingestor Class with Asynchronous Metrics and Monitoring Integration - Refactored Ingestor class to inherit from SientiaMonitoring for improved observability. - Updated methods to utilize asynchronous operations for declaring active ingestors and managing slots. - Integrated pod_id label into various metrics for better tracking. - Adjusted unit tests to reflect changes in the Ingestor initialization and asynchronous behavior.
This commit is contained in:
@@ -11,13 +11,13 @@ def test___init__(notification_handler, getenv):
|
||||
getenv.side_effect = [
|
||||
'localhost:9092,localhost:35', # KAFKA_SERVERS
|
||||
'true', # EXPORT_TO_KAFKA
|
||||
'localhost1', # REDIS_HOST
|
||||
'localhost', # REDIS_HOST
|
||||
'63790', # REDIS_PORT
|
||||
'user', # REDIS_USERNAME
|
||||
'password', # REDIS_PASSWORD
|
||||
'100', # LEASE_TTL
|
||||
'200', # HEARTBEAT_TTL
|
||||
'localhost1', # HOSTNAME
|
||||
'localhost', # HOSTNAME
|
||||
'50', # POLL_INTERVAL
|
||||
'localhost:27017', # MONGODB_URL
|
||||
'sientia', # MONGODB_USERNAME
|
||||
@@ -38,20 +38,20 @@ def test___init__(notification_handler, getenv):
|
||||
getenv.assert_any_call('POLL_INTERVAL', '5')
|
||||
|
||||
assert ingestor.kafka_servers == ['localhost:9092', 'localhost:35']
|
||||
assert ingestor.redis_host == 'localhost1'
|
||||
assert ingestor.redis_host == 'localhost'
|
||||
assert ingestor.redis_port == 63790
|
||||
assert ingestor.redis_username == 'user'
|
||||
assert ingestor.redis_password == 'password'
|
||||
assert ingestor.lease_ttl == 100
|
||||
assert ingestor.heartbeat_ttl == 200
|
||||
assert ingestor.pod_id == 'localhost1'
|
||||
assert ingestor.pod_id == 'localhost'
|
||||
assert ingestor.poll_interval == 50
|
||||
assert ingestor.metadata == {
|
||||
'model_id': '-',
|
||||
'model_name': '-',
|
||||
'workflow_name': 'opc_ingestor',
|
||||
'schema_name': 'opc_ingestor',
|
||||
'pod_id': 'localhost1',
|
||||
'pod_id': 'localhost',
|
||||
}
|
||||
|
||||
notification_handler.assert_called_once_with(
|
||||
@@ -117,6 +117,8 @@ async def test_prepare_ingestor(ingestor_manager_mock, ingestor):
|
||||
ingestor_manager = ingestor_manager_mock.return_value
|
||||
ingestor_manager.get_slot_leases.return_value = True
|
||||
|
||||
ingestor_manager.declare_active = AsyncMock()
|
||||
ingestor_manager.get_slot_leases = AsyncMock()
|
||||
ingestor.handle_acquired_tags = AsyncMock()
|
||||
|
||||
await ingestor.prepare_ingestor()
|
||||
|
||||
@@ -54,7 +54,7 @@ def test_active_ingestors():
|
||||
assert metrics.ACTIVE_INGESTORS is not None
|
||||
assert isinstance(metrics.ACTIVE_INGESTORS, Gauge)
|
||||
assert metrics.ACTIVE_INGESTORS._name == 'ingestor_active_total'
|
||||
assert set(metrics.ACTIVE_INGESTORS._labelnames) == set()
|
||||
assert set(metrics.ACTIVE_INGESTORS._labelnames) == {'pod_id'}
|
||||
|
||||
|
||||
def test_slots_total():
|
||||
@@ -62,7 +62,7 @@ def test_slots_total():
|
||||
assert metrics.SLOTS_TOTAL is not None
|
||||
assert isinstance(metrics.SLOTS_TOTAL, Gauge)
|
||||
assert metrics.SLOTS_TOTAL._name == 'ingestor_slots_total'
|
||||
assert set(metrics.SLOTS_TOTAL._labelnames) == set()
|
||||
assert set(metrics.SLOTS_TOTAL._labelnames) == {'pod_id'}
|
||||
|
||||
|
||||
def test_leases_total():
|
||||
@@ -70,7 +70,7 @@ def test_leases_total():
|
||||
assert metrics.LEASES_TOTAL is not None
|
||||
assert isinstance(metrics.LEASES_TOTAL, Gauge)
|
||||
assert metrics.LEASES_TOTAL._name == 'ingestor_leases_total'
|
||||
assert set(metrics.LEASES_TOTAL._labelnames) == set()
|
||||
assert set(metrics.LEASES_TOTAL._labelnames) == {'pod_id'}
|
||||
|
||||
|
||||
def test_slots_managed():
|
||||
|
||||
Reference in New Issue
Block a user