Hello,
When running checkbox, depending on the machine, it seems that not every test case is being executed. Looking into logs, it seems that the problem might be because of a ServiceUnknown execption coming from DBus.
Has anybody seen this problem in the past?
Is there any way to overcome it?
Please find below one of the stack traces seen in logs for further information:
==============
ERROR Error running event handler None.PromptTest.prompt_tests() for event type 'prompt-tests' with args (<checkbox_gtk.gtk_interface.GTKInterface object at 0xa0909ac>,) {}.
Traceback (most recent call last):
File "/usr/lib/python2.6/dist-packages/checkbox/reactor.py", line 80, in fire
results.append(handler(*args, **kwargs))
File "/usr/share/checkbox/plugins/test_prompt.py", line 126, in prompt_tests
test = self._traverser.go(interface.direction, self._result)
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 78, in go
element = self.next(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 105, in next
return self.iterator.next(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 208, in next
element = super(IteratorPostRepeat, self).next(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 181, in next
self.element = self.iterator.next(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 196, in next
return super(IteratorPreRepeat, self).next(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 181, in next
self.element = self.iterator.next(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 140, in next
if not self.has_next(*args, **kwargs):
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 128, in has_next
if self.iterator.has_next(*args, **kwargs):
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 128, in has_next
if self.iterator.has_next(*args, **kwargs):
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 128, in has_next
if self.iterator.has_next(*args, **kwargs):
File "/usr/lib/python2.6/dist-packages/checkbox/lib/iterator.py", line 131, in has_next
and self.next_func(element, *args, **kwargs):
File "/usr/lib/python2.6/dist-packages/checkbox/traverser.py", line 164, in _requires_exclude_func
if False in test.requires.get_mask():
File "/usr/lib/python2.6/dist-packages/checkbox/requires.py", line 65, in get_mask
self.get_values()
File "/usr/lib/python2.6/dist-packages/checkbox/lib/cache.py", line 31, in __call__
self._cache[(self._instance,) + args] = self._function(self._instance, *args)
File "/usr/lib/python2.6/dist-packages/checkbox/requires.py", line 41, in get_values
self._source, self._mask)
File "/usr/lib/python2.6/dist-packages/checkbox/registry.py", line 193, in registry_eval_recursive
values.extend(registry_eval_recursive(value, source, mask))
File "/usr/lib/python2.6/dist-packages/checkbox/registry.py", line 191, in registry_eval_recursive
for key, value in registry.items():
File "/usr/lib/python2.6/dist-packages/checkbox/registries/command.py", line 56, in items
item = str(self)
File "/usr/lib/python2.6/dist-packages/checkbox/frontend.py", line 43, in __call__
return getattr(self, self._method)(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/checkbox/frontend.py", line 85, in get_registry
return self.client.get_registry(self._instance.__module__)
File "/var/lib/python-support/python2.6/dbus/proxies.py", line 140, in __call__
**keywords)
File "/var/lib/python-support/python2.6/dbus/connection.py", line 622, in call_blocking
message, timeout)
DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name :1.271 was not provided by any .service files
==============
Best regards,
Javier
The problem is that the dbus backend only knows about Checkbox tests, not tests contributed by external packages. The reason is for security purposes where the dbus backend cannot be made too generic to run arbitrary commands. Otherwise, this would be a security risk just waiting to happen. Until a safe way can be found to extend the backend to know about tests from external packages, the only workaround is to use (gk)su(do) when needing to run external tests as root. For now, I will mark this bug as a wishlist.