From 7bd4e58b9dabc65a7b68d4da99bbb7c4451d92a0 Mon Sep 17 00:00:00 2001 From: pavoni Date: Fri, 19 Feb 2016 09:43:59 +0000 Subject: [PATCH] Add tests for race condition. --- .../device_tracker/test_owntracks.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/components/device_tracker/test_owntracks.py b/tests/components/device_tracker/test_owntracks.py index ac9243ae5f8..6f35fe0e2de 100644 --- a/tests/components/device_tracker/test_owntracks.py +++ b/tests/components/device_tracker/test_owntracks.py @@ -379,3 +379,35 @@ class TestDeviceTrackerOwnTracks(unittest.TestCase): message['lat'] = "4.0" self.send_message(LOCATION_TOPIC, LOCATION_MESSAGE) self.assert_tracker_latitude(3.0) + + def test_mobile_multiple_async_enter_exit(self): + # Test race condition + enter_message = REGION_ENTER_MESSAGE.copy() + enter_message['desc'] = IBEACON_DEVICE + exit_message = REGION_LEAVE_MESSAGE.copy() + exit_message['desc'] = IBEACON_DEVICE + + fire_mqtt_message( + self.hass, EVENT_TOPIC, json.dumps(enter_message)) + fire_mqtt_message( + self.hass, EVENT_TOPIC, json.dumps(exit_message)) + fire_mqtt_message( + self.hass, EVENT_TOPIC, json.dumps(enter_message)) + fire_mqtt_message( + self.hass, EVENT_TOPIC, json.dumps(exit_message)) + + self.hass.pool.block_till_done() + self.assertEqual(owntracks.MOBILE_BEACONS_ACTIVE['greg_phone'], []) + + def test_mobile_multiple_enter_exit(self): + # Should only happen if the iphone dies + enter_message = REGION_ENTER_MESSAGE.copy() + enter_message['desc'] = IBEACON_DEVICE + exit_message = REGION_LEAVE_MESSAGE.copy() + exit_message['desc'] = IBEACON_DEVICE + + self.send_message(EVENT_TOPIC, enter_message) + self.send_message(EVENT_TOPIC, enter_message) + self.send_message(EVENT_TOPIC, exit_message) + + self.assertEqual(owntracks.MOBILE_BEACONS_ACTIVE['greg_phone'], [])