From 2c678894c38511f926ef345b04225e0428ffc150 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 10 Aug 2016 16:52:36 +0200 Subject: [PATCH 1/2] Update remote unit tests --- tests/test_remote.py | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/tests/test_remote.py b/tests/test_remote.py index 7c87bc4af33fd0..06a539d18746d9 100644 --- a/tests/test_remote.py +++ b/tests/test_remote.py @@ -1,13 +1,14 @@ """Test Home Assistant remote methods and classes.""" # pylint: disable=protected-access,too-many-public-methods -import time import unittest +import threading import homeassistant.core as ha import homeassistant.bootstrap as bootstrap import homeassistant.remote as remote import homeassistant.components.http as http -from homeassistant.const import HTTP_HEADER_HA_AUTH, EVENT_STATE_CHANGED +from homeassistant.const import (HTTP_HEADER_HA_AUTH, EVENT_STATE_CHANGED, + EVENT_HOMEASSISTANT_START) import homeassistant.util.dt as dt_util from tests.common import ( @@ -42,12 +43,19 @@ def setUpModule(): # pylint: disable=invalid-name bootstrap.setup_component( hass, http.DOMAIN, {http.DOMAIN: {http.CONF_API_PASSWORD: API_PASSWORD, - http.CONF_SERVER_PORT: MASTER_PORT}}) + http.CONF_SERVER_PORT: MASTER_PORT}}) bootstrap.setup_component(hass, 'api') - hass.start() - time.sleep(0.05) + def block_start(hass_obj): + """Block until HA started.""" + started = threading.Event() + hass_obj.bus.listen_once(EVENT_HOMEASSISTANT_START, + lambda _: started.set()) + hass_obj.start() + started.wait() + + block_start(hass) master_api = remote.API("127.0.0.1", API_PASSWORD, MASTER_PORT) @@ -57,9 +65,9 @@ def setUpModule(): # pylint: disable=invalid-name bootstrap.setup_component( slave, http.DOMAIN, {http.DOMAIN: {http.CONF_API_PASSWORD: API_PASSWORD, - http.CONF_SERVER_PORT: SLAVE_PORT}}) + http.CONF_SERVER_PORT: SLAVE_PORT}}) - slave.start() + block_start(slave) def tearDownModule(): # pylint: disable=invalid-name @@ -109,7 +117,7 @@ def listener(event): """Helper method that will verify our event got called.""" test_value.append(1) - hass.bus.listen_once("test.event_no_data", listener) + hass.bus.listen("test.event_no_data", listener) remote.fire_event(master_api, "test.event_no_data") hass.pool.block_till_done() self.assertEqual(1, len(test_value)) @@ -150,7 +158,7 @@ def test_set_state(self): self.assertFalse(remote.set_state(broken_api, 'test.test', 'set_test')) def test_set_state_with_push(self): - """TestPython API set_state with push option.""" + """Test Python API set_state with push option.""" events = [] hass.bus.listen(EVENT_STATE_CHANGED, events.append) @@ -264,6 +272,7 @@ def test_statemachine_remove_from_master(self): hass.states.remove("remote.master_remove") hass.pool.block_till_done() + slave.pool.block_till_done() self.assertNotIn('remote.master_remove', slave.states.entity_ids()) @@ -282,13 +291,11 @@ def test_statemachine_remove_from_slave(self): def test_eventbus_fire(self): """Test if events fired from the eventbus get fired.""" - test_value = [] - - def listener(event): - """Helper method that will verify our event got called.""" - test_value.append(1) + hass_call = [] + slave_call = [] - slave.bus.listen_once("test.event_no_data", listener) + hass.bus.listen("test.event_no_data", lambda _: hass_call.append(1)) + slave.bus.listen("test.event_no_data", lambda _: slave_call.append(1)) slave.bus.fire("test.event_no_data") # Wait till slave tells master @@ -296,7 +303,8 @@ def listener(event): # Wait till master gives updated event hass.pool.block_till_done() - self.assertEqual(1, len(test_value)) + self.assertEqual(1, len(hass_call)) + self.assertEqual(1, len(slave_call)) def test_get_config(self): """Test the return of the configuration.""" From f0f55707ed6dc19e4b82035d55076b89ea2c67ea Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 10 Aug 2016 19:08:09 +0200 Subject: [PATCH 2/2] Sleep again --- tests/test_remote.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/tests/test_remote.py b/tests/test_remote.py index 06a539d18746d9..a5a7c0aa2d6413 100644 --- a/tests/test_remote.py +++ b/tests/test_remote.py @@ -1,14 +1,13 @@ """Test Home Assistant remote methods and classes.""" # pylint: disable=protected-access,too-many-public-methods +import time import unittest -import threading import homeassistant.core as ha import homeassistant.bootstrap as bootstrap import homeassistant.remote as remote import homeassistant.components.http as http -from homeassistant.const import (HTTP_HEADER_HA_AUTH, EVENT_STATE_CHANGED, - EVENT_HOMEASSISTANT_START) +from homeassistant.const import HTTP_HEADER_HA_AUTH, EVENT_STATE_CHANGED import homeassistant.util.dt as dt_util from tests.common import ( @@ -47,15 +46,8 @@ def setUpModule(): # pylint: disable=invalid-name bootstrap.setup_component(hass, 'api') - def block_start(hass_obj): - """Block until HA started.""" - started = threading.Event() - hass_obj.bus.listen_once(EVENT_HOMEASSISTANT_START, - lambda _: started.set()) - hass_obj.start() - started.wait() - - block_start(hass) + hass.start() + time.sleep(0.05) master_api = remote.API("127.0.0.1", API_PASSWORD, MASTER_PORT) @@ -67,7 +59,7 @@ def block_start(hass_obj): {http.DOMAIN: {http.CONF_API_PASSWORD: API_PASSWORD, http.CONF_SERVER_PORT: SLAVE_PORT}}) - block_start(slave) + slave.start() def tearDownModule(): # pylint: disable=invalid-name @@ -267,6 +259,7 @@ def test_statemachine_remove_from_master(self): """Remove statemachine from master.""" hass.states.set("remote.master_remove", "remove me!") hass.pool.block_till_done() + slave.pool.block_till_done() self.assertIn('remote.master_remove', slave.states.entity_ids())