1- from time import sleep
1+ from datetime import timedelta
22
33import responses
44import six
55from django .core .exceptions import ValidationError
6+ from freezegun import freeze_time
67from netdiff import OlsrParser
78
89from ..utils import LoadMixin
@@ -318,29 +319,30 @@ def test_multiple_receive_changed(self):
318319 self ._test_receive_changed (expiration_time = 50 )
319320
320321 def test_multiple_receive_removed (self ):
321- t = self ._set_receive (expiration_time = 0.1 )
322- data = self ._load ('static/netjson-2-links.json' )
323- for sleep_time in [0 , 0.2 , 0.1 ]:
324- sleep (sleep_time )
322+ with freeze_time () as frozen_time :
323+ t = self ._set_receive (expiration_time = 0.1 )
324+ data = self ._load ('static/netjson-2-links.json' )
325+ for sleep_time in [0 , 0.2 , 0.1 ]:
326+ frozen_time .tick (timedelta (seconds = sleep_time ))
327+ t .receive (data )
328+ self .assertEqual (self .node_model .objects .count (), 3 )
329+ self .assertEqual (self .link_model .objects .count (), 2 )
330+ self .assertEqual (self .link_model .objects .filter (status = 'down' ).count (), 0 )
331+ # receive change
332+ data = self ._load ('static/netjson-1-link.json' )
325333 t .receive (data )
326334 self .assertEqual (self .node_model .objects .count (), 3 )
327335 self .assertEqual (self .link_model .objects .count (), 2 )
336+ # expiration_time has not expired
328337 self .assertEqual (self .link_model .objects .filter (status = 'down' ).count (), 0 )
329- # receive change
330- data = self ._load ('static/netjson-1-link.json' )
331- t .receive (data )
332- self .assertEqual (self .node_model .objects .count (), 3 )
333- self .assertEqual (self .link_model .objects .count (), 2 )
334- # expiration_time has not expired
335- self .assertEqual (self .link_model .objects .filter (status = 'down' ).count (), 0 )
336- # expiration_time has now expired for 1 link
337- sleep (0.2 )
338- t .receive (data )
339- self .assertEqual (self .link_model .objects .filter (status = 'down' ).count (), 1 )
340- link = self .link_model .objects .filter (status = 'down' ).first ()
341- self .assertIn ('192.168.0.3' , [link .source .netjson_id ,
342- link .target .netjson_id ])
343- self .assertEqual (link .cost , 2.0 )
338+ # expiration_time has now expired for 1 link
339+ frozen_time .tick (timedelta (seconds = 0.2 ))
340+ t .receive (data )
341+ self .assertEqual (self .link_model .objects .filter (status = 'down' ).count (), 1 )
342+ link = self .link_model .objects .filter (status = 'down' ).first ()
343+ self .assertIn ('192.168.0.3' , [link .source .netjson_id ,
344+ link .target .netjson_id ])
345+ self .assertEqual (link .cost , 2.0 )
344346
345347 def test_multiple_receive_split_network (self ):
346348 def _assert_split_topology (self , topology ):
@@ -355,20 +357,21 @@ def _assert_split_topology(self, topology):
355357 self .assertIsNotNone (link )
356358 self .assertEqual (link .status , 'up' )
357359 self .assertEqual (link .cost , 1.1 )
358- self .node_model .objects .all ().delete ()
359- t = self ._set_receive (expiration_time = 0.5 )
360- network1 = self ._load ('static/netjson-1-link.json' )
361- network2 = self ._load ('static/split-network.json' )
362- t .receive (network1 )
363- t .receive (network2 )
364- _assert_split_topology (self , t )
365- for sleep_time in [0.1 , 0.25 , 0.3 ]:
366- sleep (sleep_time )
360+ with freeze_time () as frozen_time :
361+ self .node_model .objects .all ().delete ()
362+ t = self ._set_receive (expiration_time = 0.5 )
363+ network1 = self ._load ('static/netjson-1-link.json' )
364+ network2 = self ._load ('static/split-network.json' )
367365 t .receive (network1 )
368- _assert_split_topology (self , t )
369- sleep (sleep_time )
370366 t .receive (network2 )
371367 _assert_split_topology (self , t )
368+ for sleep_time in [0.1 , 0.25 , 0.3 ]:
369+ frozen_time .tick (timedelta (seconds = sleep_time ))
370+ t .receive (network1 )
371+ _assert_split_topology (self , t )
372+ frozen_time .tick (timedelta (seconds = sleep_time ))
373+ t .receive (network2 )
374+ _assert_split_topology (self , t )
372375
373376 def test_very_long_addresses (self ):
374377 """
0 commit comments