test: Fix flaky battery aggregation test

It seems that the test was still flaky, the reason for that would be
that we did not explicitly wait for the log line saying that the
aggregate state was calculated.

The only reason that it did not consistently fail appears to be that
searching for the state conflict caused messages to be skipped. That is
wrong, we should account for every "Calculating percentage" message to
ensure that upowerd and the test is in sync.
This commit is contained in:
Benjamin Berg 2022-06-21 13:26:39 +02:00
parent 0b462e41d1
commit 8817dec73f

View file

@ -25,6 +25,7 @@ import shutil
import subprocess
import unittest
import time
import re
from output_checker import OutputChecker
from packaging.version import parse as parse_version
@ -757,13 +758,17 @@ class Tests(dbusmock.DBusTestCase):
self.daemon_log.check_line('Calculating percentage', timeout=2.0)
self.testbed.uevent(bat1, 'change')
# TODO: Make this more elegant somehow
lines = self.daemon_log.check_line('Calculating percentage', timeout=2.0)
for l in lines:
found = bool(re.match(b".*Conflicting.*state.*", l))
if found:
break
if display_device_state[i][j] == CONFLICT:
self.daemon_log.check_line_re("Conflicting.*state", timeout=2.0)
self.assertTrue(found)
else:
# TODO: Add a helper in OutputChecker to do this
lines = self.daemon_log.check_line('Calculating percentage', timeout=2.0)
for l in lines:
self.assertNotRegex(l, b"Conflicting.*state")
self.assertFalse(found)
if display_device_state[i][j] >= 0:
self.assertEqual(self.get_dbus_display_property('State'), display_device_state[i][j],