diff options
-rwxr-xr-x | src/linux/integration-test | 70 |
1 files changed, 67 insertions, 3 deletions
diff --git a/src/linux/integration-test b/src/linux/integration-test index 47773da..82b5ff7 100755 --- a/src/linux/integration-test +++ b/src/linux/integration-test @@ -574,8 +574,8 @@ class Tests(unittest.TestCase): self.assertEqual(self.get_dbus_dev_property(bat0_up, 'Energy'), 1.5) self.stop_daemon() - def test_bluetooth_mouse(self): - '''bluetooth mouse battery''' + def _add_bt_mouse(self): + '''Add a bluetooth mouse to testbed''' btdev = self.testbed.add_device('bluetooth', 'usb1/bluetooth/hci0/hci0:01', @@ -590,7 +590,7 @@ class Tests(unittest.TestCase): mousebat0 = self.testbed.add_device( 'power_supply', - 'usb1/bluetooth/hci0/hci0:01/power_supply/hid-00:11:22:33:44:55-battery', + 'usb1/bluetooth/hci0/hci0:01/1/power_supply/hid-00:11:22:33:44:55-battery', None, ['type', 'Battery', 'scope', 'Device', @@ -602,6 +602,13 @@ class Tests(unittest.TestCase): ], []) + return mousebat0 + + def test_bluetooth_mouse(self): + '''bluetooth mouse battery''' + + self._add_bt_mouse() + self.start_daemon() devs = self.proxy.EnumerateDevices() self.assertEqual(len(devs), 1) @@ -616,6 +623,63 @@ class Tests(unittest.TestCase): self.assertEqual(self.get_dbus_property('OnLowBattery'), False) self.stop_daemon() + # https://launchpad.net/bugs/1112907 + @unittest.expectedFailure + def test_bluetooth_mouse_reconnect(self): + '''bluetooth mouse powerdown/reconnect''' + + mb = self._add_bt_mouse() + + self.start_daemon() + devs_before = self.proxy.EnumerateDevices() + self.assertEqual(len(devs_before), 1) + + self.testbed.uevent(mb, 'remove') + time.sleep(1) + self.assertEqual(self.proxy.EnumerateDevices(), []) + self.testbed.uevent(mb, 'add') + time.sleep(0.5) + + devs_after = self.proxy.EnumerateDevices() + self.assertEqual(devs_before, devs_after) + + # second add, which should be treated as change + self.testbed.uevent(mb, 'add') + time.sleep(0.5) + + devs_after = self.proxy.EnumerateDevices() + self.assertEqual(devs_before, devs_after) + + # with BT devices, original devices don't get removed on powerdown, but + # on wakeup we'll get a new one which ought to replace the previous; + # emulate that kernel bug + os.unlink(os.path.join(self.testbed.get_sys_dir(), 'class', + 'power_supply', 'hid-00:11:22:33:44:55-battery')) + mb1 = self.testbed.add_device( + 'power_supply', + 'usb1/bluetooth/hci0/hci0:01/2/power_supply/hid-00:11:22:33:44:55-battery', + None, + ['type', 'Battery', + 'scope', 'Device', + 'present', '1', + 'online', '1', + 'status', 'Discharging', + 'capacity', '30', + 'model_name', 'Fancy BT mouse', + ], + []) + + self.testbed.uevent(mb1, 'add') + time.sleep(0.5) + + devs_after = self.proxy.EnumerateDevices() + self.assertEqual(devs_before, devs_after) + + mb1_up = devs_after[0] + self.assertEqual(self.get_dbus_dev_property(mb1_up, 'Model'), 'Fancy BT mouse') + self.assertEqual(self.get_dbus_dev_property(mb1_up, 'Percentage'), 30) + self.assertEqual(self.get_dbus_dev_property(mb1_up, 'PowerSupply'), False) + def test_bluetooth_keyboard(self): '''bluetooth keyboard battery''' |