88from concurrent .futures import ThreadPoolExecutor
99from logdna .configs import defaults
1010from unittest import mock
11- from tests . test_utils import ordered
11+ from unittest . mock import patch
1212
1313now = int (time .time ())
1414expectedLines = []
4545 'mac' : 'C0:FF:EE:C0:FF:EE' ,
4646 'tags' : 'sample,test' ,
4747 'index_meta' : True ,
48- 'now' : int (time .time () * 1000 )
48+ 'now' : int (time .time () * 1000 ),
49+ 'retry_interval_secs' : 0.5
4950}
5051
5152
@@ -71,7 +72,6 @@ def shutdown(self, wait=True):
7172
7273class LogDNAHandlerTest (unittest .TestCase ):
7374
74- @ordered
7575 def test_handler (self ):
7676 handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
7777 self .assertIsInstance (handler , logging .Handler )
@@ -99,7 +99,7 @@ def test_handler(self):
9999 self .assertEqual (handler .max_concurrent_requests ,
100100 defaults ['MAX_CONCURRENT_REQUESTS' ])
101101 self .assertEqual (handler .retry_interval_secs ,
102- defaults [ 'RETRY_INTERVAL_SECS ' ])
102+ sample_options [ 'retry_interval_secs ' ])
103103
104104 # Set the Flush-related Variables
105105 self .assertEqual (handler .buf , [])
@@ -119,7 +119,6 @@ def test_handler(self):
119119 self .assertIsInstance (handler .request_thread_pool , ThreadPoolExecutor )
120120 self .assertEqual (handler .level , logging .DEBUG )
121121
122- @ordered
123122 def test_flusher (self ):
124123 handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
125124 self .assertIsNone (handler .flusher )
@@ -128,59 +127,73 @@ def test_flusher(self):
128127 handler .close_flusher ()
129128 self .assertIsNone (handler .flusher )
130129
131- @ordered
132130 def test_emit (self ):
133131 handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
134132 handler .buffer_log = unittest .mock .Mock ()
135133 handler .emit (sample_record )
136134 sample_message ['timestamp' ] = unittest .mock .ANY
137135 handler .buffer_log .assert_called_once_with (sample_message )
138136
139- @ordered
140137 @mock .patch ('time.time' , unittest .mock .MagicMock (return_value = now ))
141138 def test_try_request (self ):
142- r = requests .Response ()
143- r .status_code = 200
144- r .reason = 'OK'
145- requests .post = unittest .mock .Mock (return_value = r )
146- handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
147- sample_message ['timestamp' ] = unittest .mock .ANY
148- handler .buf = [sample_message ]
149- handler .try_request ()
150- self .assertFalse (handler .exception_flag )
151- requests .post .assert_called_with (
152- url = handler .url ,
153- json = {
154- 'e' : 'ls' ,
155- 'ls' : handler .buf
156- },
157- auth = ('user' , handler .key ),
158- params = {
159- 'hostname' : handler .hostname ,
160- 'ip' : handler .ip ,
161- 'mac' : handler .mac ,
162- 'tags' : handler .tags ,
163- 'now' : int (now * 1000 )
164- },
165- stream = True ,
166- allow_redirects = True ,
167- timeout = handler .request_timeout ,
168- headers = {'user-agent' : handler .user_agent })
169-
170- @ordered
139+ with patch ('requests.post' ) as post_mock :
140+ r = requests .Response ()
141+ r .status_code = 200
142+ r .reason = 'OK'
143+ post_mock .return_value = r
144+ handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
145+ sample_message ['timestamp' ] = unittest .mock .ANY
146+ handler .buf = [sample_message ]
147+ handler .try_request ()
148+ post_mock .assert_called_with (
149+ url = handler .url ,
150+ json = {
151+ 'e' : 'ls' ,
152+ 'ls' : handler .buf
153+ },
154+ auth = ('user' , handler .key ),
155+ params = {
156+ 'hostname' : handler .hostname ,
157+ 'ip' : handler .ip ,
158+ 'mac' : handler .mac ,
159+ 'tags' : handler .tags ,
160+ 'now' : int (now * 1000 )
161+ },
162+ stream = True ,
163+ allow_redirects = True ,
164+ timeout = handler .request_timeout ,
165+ headers = {'user-agent' : handler .user_agent })
166+ self .assertFalse (handler .exception_flag )
167+ self .assertTrue (post_mock .call_count , 1 )
168+
171169 @mock .patch ('time.time' , unittest .mock .MagicMock (return_value = now ))
172170 def test_try_request_500 (self ):
173- r = requests .Response ()
174- r .status_code = 500
175- r .reason = 'OK'
176- requests .post = unittest .mock .Mock (return_value = r )
177- handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
178- sample_message ['timestamp' ] = unittest .mock .ANY
179- handler .buf = [sample_message ]
180- handler .try_request ()
181- self .assertTrue (handler .exception_flag )
171+ with patch ('requests.post' ) as post_mock :
172+ r = requests .Response ()
173+ r .status_code = 500
174+ r .reason = 'OK'
175+ post_mock .return_value = r
176+ handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
177+ sample_message ['timestamp' ] = unittest .mock .ANY
178+ handler .buf = [sample_message ]
179+ handler .try_request ()
180+ self .assertTrue (handler .exception_flag )
181+ self .assertTrue (post_mock .call_count , 3 )
182+
183+ @mock .patch ('time.time' , unittest .mock .MagicMock (return_value = now ))
184+ def test_try_request_403 (self ):
185+ with patch ('requests.post' ) as post_mock :
186+ r = requests .Response ()
187+ r .status_code = 403
188+ r .reason = 'OK'
189+ post_mock .return_value = r
190+ handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
191+ sample_message ['timestamp' ] = unittest .mock .ANY
192+ handler .buf = [sample_message ]
193+ handler .try_request ()
194+ self .assertFalse (handler .exception_flag )
195+ self .assertTrue (post_mock .call_count , 1 )
182196
183- @ordered
184197 def test_close (self ):
185198 handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
186199 handler .close_flusher = unittest .mock .Mock ()
@@ -191,7 +204,6 @@ def test_close(self):
191204 self .assertIsNone (handler .worker_thread_pool )
192205 self .assertIsNone (handler .request_thread_pool )
193206
194- @ordered
195207 def test_flush (self ):
196208 handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
197209 handler .worker_thread_pool = MockThreadPoolExecutor ()
@@ -201,7 +213,6 @@ def test_flush(self):
201213 handler .flush ()
202214 handler .try_request .assert_called_once_with ()
203215
204- @ordered
205216 def test_flush_secondary (self ):
206217 handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
207218 clean = handler .clean_after_success
@@ -221,7 +232,6 @@ def test_flush_secondary(self):
221232 self .assertEqual (handler .secondary , [])
222233 self .assertEqual (handler .buf , [])
223234
224- @ordered
225235 def test_buffer_log (self ):
226236 handler = LogDNAHandler (LOGDNA_API_KEY , sample_options )
227237 handler .worker_thread_pool = MockThreadPoolExecutor ()
0 commit comments