1414
1515import psycopg
1616import pytest
17+ from _weakref import ref
1718
1819from aws_advanced_python_wrapper .errors import AwsWrapperError
1920from aws_advanced_python_wrapper .host_monitoring_plugin import (
@@ -39,7 +40,9 @@ def mock_thread_container(mocker):
3940
4041@pytest .fixture
4142def mock_monitor (mocker ):
42- return mocker .MagicMock ()
43+ monitor = mocker .MagicMock ()
44+ monitor .is_stopped = False
45+ return monitor
4346
4447
4548@pytest .fixture
@@ -57,21 +60,22 @@ def thread_container(mock_executor):
5760@pytest .fixture
5861def monitor_service_mocked_container (mock_plugin_service , mock_thread_container ):
5962 service = MonitorService (mock_plugin_service )
60- service ._thread_container = mock_thread_container
63+ service ._monitor_container = mock_thread_container
6164 return service
6265
6366
6467@pytest .fixture
6568def monitor_service_with_container (mock_plugin_service , thread_container ):
6669 service = MonitorService (mock_plugin_service )
67- service ._thread_container = thread_container
70+ service ._monitor_container = thread_container
6871 return service
6972
7073
7174@pytest .fixture (autouse = True )
7275def setup_teardown (mocker , mock_thread_container , mock_plugin_service , mock_monitor ):
7376 mock_thread_container .get_or_create_monitor .return_value = mock_monitor
74- mocker .patch ("aws_advanced_python_wrapper.host_monitoring_plugin.MonitorService._create_monitor" , return_value = mock_monitor )
77+ mocker .patch (
78+ "aws_advanced_python_wrapper.host_monitoring_plugin.MonitorService._create_monitor" , return_value = mock_monitor )
7579
7680 yield
7781
@@ -91,7 +95,7 @@ def test_start_monitoring(
9195 mock_conn , aliases , HostInfo ("instance-1" ), Properties (), 5000 , 1000 , 3 )
9296
9397 mock_monitor .start_monitoring .assert_called_once ()
94- assert mock_monitor == monitor_service_mocked_container ._cached_monitor
98+ assert mock_monitor == monitor_service_mocked_container ._cached_monitor ()
9599 assert aliases == monitor_service_mocked_container ._cached_monitor_aliases
96100
97101
@@ -105,14 +109,14 @@ def test_start_monitoring__multiple_calls(monitor_service_with_container, mock_m
105109
106110 assert num_calls == mock_monitor .start_monitoring .call_count
107111 mock_executor .submit .assert_called_once_with (mock_monitor .run )
108- assert mock_monitor == monitor_service_with_container ._cached_monitor
112+ assert mock_monitor == monitor_service_with_container ._cached_monitor ()
109113 assert aliases == monitor_service_with_container ._cached_monitor_aliases
110114
111115
112116def test_start_monitoring__cached_monitor (
113117 monitor_service_mocked_container , mock_plugin_service , mock_monitor , mock_conn , mock_thread_container ):
114118 aliases = frozenset ({"instance-1" })
115- monitor_service_mocked_container ._cached_monitor = mock_monitor
119+ monitor_service_mocked_container ._cached_monitor = ref ( mock_monitor )
116120 monitor_service_mocked_container ._cached_monitor_aliases = aliases
117121
118122 monitor_service_mocked_container .start_monitoring (
@@ -121,7 +125,7 @@ def test_start_monitoring__cached_monitor(
121125 mock_plugin_service .get_dialect .assert_not_called ()
122126 mock_thread_container .get_or_create_monitor .assert_not_called ()
123127 mock_monitor .start_monitoring .assert_called_once ()
124- assert mock_monitor == monitor_service_mocked_container ._cached_monitor
128+ assert mock_monitor == monitor_service_mocked_container ._cached_monitor ()
125129 assert aliases == monitor_service_mocked_container ._cached_monitor_aliases
126130
127131
@@ -156,21 +160,9 @@ def test_stop_monitoring_host_connections(mocker, monitor_service_with_container
156160 mock_monitor2 = mocker .MagicMock ()
157161 thread_container .get_or_create_monitor (aliases1 , lambda : mock_monitor1 )
158162 thread_container .get_or_create_monitor (aliases2 , lambda : mock_monitor2 )
159- reset_resource_spy = mocker .spy (thread_container , 'reset_resource' )
160163
161164 monitor_service_with_container .stop_monitoring_host (aliases1 )
162165 mock_monitor1 .clear_contexts .assert_called_once ()
163- reset_resource_spy .assert_called_once_with (mock_monitor1 )
164- reset_resource_spy .reset_mock ()
165166
166167 monitor_service_with_container .stop_monitoring_host (aliases2 )
167168 mock_monitor2 .clear_contexts .assert_called_once ()
168- reset_resource_spy .assert_called_once_with (mock_monitor2 )
169-
170-
171- def test_release_resources (mocker , monitor_service_mocked_container ):
172- spy = mocker .spy (MonitoringThreadContainer , 'release_instance' )
173-
174- monitor_service_mocked_container .release_resources ()
175- assert monitor_service_mocked_container ._thread_container is None
176- spy .assert_called_once ()
0 commit comments