コード例 #1
0
    def connect_advanced_test(self):
        """Advanced test for observer connect."""
        dbus = Mock()
        observer = DBusObserver(dbus, "SERVICE")
        self._setup_observer(observer)

        observer.connect_once_available()

        dbus.connection.watch_name.assert_called_once()
        self.assertFalse(observer.is_service_available)
        observer._service_available.emit.assert_not_called()  # pylint: disable=no-member
        observer._service_unavailable.emit.assert_not_called()  # pylint: disable=no-member

        self._make_service_available(observer)

        observer._service_name_appeared_callback()
        self.assertTrue(observer.is_service_available)
        observer._service_available.emit.assert_not_called()  # pylint: disable=no-member
        observer._service_unavailable.emit.assert_not_called()  # pylint: disable=no-member

        observer._service_name_vanished_callback()
        self._test_if_service_unavailable(observer)

        observer.disconnect()
        dbus.connection.unwatch_name.assert_called_once()
        self.assertFalse(observer.is_service_available)
        observer._service_available.emit.assert_not_called()  # pylint: disable=no-member
        observer._service_unavailable.emit.assert_not_called()  # pylint: disable=no-member
コード例 #2
0
    def connect_failed_test(self, proxy_getter):
        """Test observer connect failed."""
        observer = DBusObserver("SERVICE")
        self._setup_observer(observer)

        proxy = Mock()
        proxy.NameHasOwner.return_value = False
        proxy_getter.return_value = proxy

        with self.assertRaises(DBusObserverError):
            observer.connect()
コード例 #3
0
    def connect_failed_test(self):
        """Test observer connect failed."""
        dbus = Mock()
        observer = DBusObserver(dbus, "SERVICE")
        self._setup_observer(observer)

        proxy = Mock()
        proxy.NameHasOwner.return_value = False
        dbus.get_dbus_proxy.return_value = proxy

        with self.assertRaises(DBusObserverError):
            observer.connect()
コード例 #4
0
    def connect_failed_test(self):
        """Test observer connect failed."""
        dbus = Mock()
        observer = DBusObserver(dbus, "SERVICE")
        self._setup_observer(observer)

        proxy = Mock()
        proxy.NameHasOwner.return_value = False
        dbus.get_dbus_proxy.return_value = proxy

        with self.assertRaises(DBusObserverError):
            observer.connect()
コード例 #5
0
    def connect_test(self):
        """Test observer connect."""
        dbus = Mock()
        observer = DBusObserver(dbus, "SERVICE")
        self._setup_observer(observer)

        observer.connect()
        dbus.connection.watch_name.assert_called_once()
        self._test_if_service_available(observer)

        observer.disconnect()
        dbus.connection.unwatch_name.assert_called_once()
        self._test_if_service_unavailable(observer)
コード例 #6
0
    def connect_advanced_test(self, _proxy_getter, watch, unwatch):
        """Advanced test for observer connect."""
        observer = DBusObserver("SERVICE")
        self._setup_observer(observer)

        observer.connect()
        watch.assert_called_once()
        self._test_if_service_available(observer)

        observer._service_name_appeared_callback()
        self.assertTrue(observer.is_service_available)
        observer._service_available.emit.assert_not_called()  # pylint: disable=no-member
        observer._service_unavailable.emit.assert_not_called()  # pylint: disable=no-member

        observer._service_name_vanished_callback()
        self._test_if_service_unavailable(observer)

        observer.disconnect()
        unwatch.assert_called_once()
        self.assertFalse(observer.is_service_available)
        observer._service_available.emit.assert_not_called()  # pylint: disable=no-member
        observer._service_unavailable.emit.assert_not_called()  # pylint: disable=no-member
コード例 #7
0
    def connect_test(self, gio):
        """Test Gio support for watching names."""
        dbus = Mock()
        observer = DBusObserver(dbus, "my.service")
        self._setup_observer(observer)

        # Connect the observer.
        observer.connect_once_available()

        # Check the call.
        gio.bus_watch_name_on_connection.assert_called_once()
        args, kwargs = gio.bus_watch_name_on_connection.call_args

        self.assertEqual(len(args), 5)
        self.assertEqual(len(kwargs), 0)
        self.assertEqual(args[0], dbus.connection)
        self.assertEqual(args[1], "my.service")
        self.assertEqual(args[2], DBUS_FLAG_NONE)

        name_appeared_closure = args[3]
        self.assertTrue(callable(name_appeared_closure))

        name_vanished_closure = args[4]
        self.assertTrue(callable(name_vanished_closure))

        # Check the subscription.
        subscription_id = gio.bus_watch_name_on_connection.return_value
        self.assertEqual(len(observer._subscriptions), 1)

        # Check the observer.
        self.assertFalse(observer.is_service_available)
        observer._service_available.emit.assert_not_called()  # pylint: disable=no-member
        observer._service_unavailable.emit.assert_not_called()  # pylint: disable=no-member

        # Call the name appeared closure.
        name_appeared_closure(dbus.connection, "my.service", "name.owner")
        self._test_if_service_available(observer)

        # Call the name vanished closure.
        name_vanished_closure(dbus.connection, "my.service")
        self._test_if_service_unavailable(observer)

        # Call the name appeared closure again.
        name_appeared_closure(dbus.connection, "my.service", "name.owner")
        self._test_if_service_available(observer)

        # Disconnect the observer.
        observer.disconnect()

        gio.bus_unwatch_name.assert_called_once_with(
            subscription_id
        )

        self._test_if_service_unavailable(observer)
        self.assertEqual(observer._subscriptions, [])
コード例 #8
0
    def connect_test(self, _proxy_getter, watch, unwatch):
        """Test observer connect."""
        observer = DBusObserver("SERVICE")
        self._setup_observer(observer)

        observer.connect()
        watch.assert_called_once()
        self._test_if_service_available(observer)

        observer.disconnect()
        unwatch.assert_called_once()
        self._test_if_service_unavailable(observer)
コード例 #9
0
    def connect_advanced_test(self):
        """Advanced test for observer connect."""
        dbus = Mock()
        observer = DBusObserver(dbus, "SERVICE")
        self._setup_observer(observer)

        observer.connect()
        dbus.connection.watch_name.assert_called_once()
        self._test_if_service_available(observer)

        observer._service_name_appeared_callback()
        self.assertTrue(observer.is_service_available)
        observer._service_available.emit.assert_not_called()  # pylint: disable=no-member
        observer._service_unavailable.emit.assert_not_called()  # pylint: disable=no-member

        observer._service_name_vanished_callback()
        self._test_if_service_unavailable(observer)

        observer.disconnect()
        dbus.connection.unwatch_name.assert_called_once()
        self.assertFalse(observer.is_service_available)
        observer._service_available.emit.assert_not_called()  # pylint: disable=no-member
        observer._service_unavailable.emit.assert_not_called()  # pylint: disable=no-member
コード例 #10
0
    def connect_test(self):
        """Test observer connect."""
        dbus = Mock()
        observer = DBusObserver(dbus, "SERVICE")
        self._setup_observer(observer)

        observer.connect()
        dbus.connection.watch_name.assert_called_once()
        self._test_if_service_available(observer)

        observer.disconnect()
        dbus.connection.unwatch_name.assert_called_once()
        self._test_if_service_unavailable(observer)
コード例 #11
0
 def observer_test(self):
     """Test the observer."""
     observer = DBusObserver("SERVICE")
     self._setup_observer(observer)
     self._make_service_available(observer)
     self._make_service_unavailable(observer)