summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2018-04-20 18:37:22 +0200
committerBenjamin Berg <benjamin@sipsolutions.net>2018-09-27 07:12:22 +0000
commit94aa286b6e1ffeedbcc4ed124a782ffb6b01decd (patch)
tree27fafe28028f85c7425197755c410806c2e12f5c
parentcc63bf778a90f3c4ae7e9749d45eb273a6d9e968 (diff)
downloadgnome-settings-daemon-94aa286b6e1ffeedbcc4ed124a782ffb6b01decd.tar.gz
power: Test backlight steps and rounding
This adds a test for the step size and rounding including cases where the backlight only has very few steps.
-rw-r--r--plugins/power/gsd-backlight.c2
-rwxr-xr-xplugins/power/test.py63
2 files changed, 63 insertions, 2 deletions
diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c
index 259a0de7..d72eb34b 100644
--- a/plugins/power/gsd-backlight.c
+++ b/plugins/power/gsd-backlight.c
@@ -743,6 +743,8 @@ found:
backlight->brightness_target = backlight->brightness_val;
backlight->brightness_step = MAX(backlight->brightness_step, BRIGHTNESS_STEP_AMOUNT(backlight->brightness_max - backlight->brightness_min + 1));
+ g_debug ("Step size for backlight is %i.", backlight->brightness_step);
+
return TRUE;
}
diff --git a/plugins/power/test.py b/plugins/power/test.py
index 86eb74a5..a7fb9fb1 100755
--- a/plugins/power/test.py
+++ b/plugins/power/test.py
@@ -54,6 +54,8 @@ class PowerPluginTest(gsdtestcase.GSDTestCase):
os.environ['UMOCKDEV_DIR'] = self.testbed.get_root_dir()
# Create a mock backlight device
+ # Note that this function creates a different backlight device based on
+ # the name of the test.
self.add_backlight()
# start mock upowerd
@@ -209,7 +211,17 @@ class PowerPluginTest(gsdtestcase.GSDTestCase):
def get_status(self):
return self.obj_session_presence_props.Get('org.gnome.SessionManager.Presence', 'status')
- def add_backlight(self, _type="raw", brightness=50, max_brightness=100):
+ def backlight_defaults(self):
+ # Hack to modify the brightness defaults before starting gsd-power.
+ # The alternative would be to create two separate test files.
+ if 'legacy_brightness' in self.id():
+ return 15, 15
+ else:
+ return 100, 50
+
+ def add_backlight(self, _type="raw"):
+ max_brightness, brightness = self.backlight_defaults()
+
# Undo mangling done in GSD
if max_brightness >= 99:
max_brightness += 1
@@ -222,7 +234,9 @@ class PowerPluginTest(gsdtestcase.GSDTestCase):
'brightness', str(brightness)],
[])
- def get_brightness(self, max_brightness=100):
+ def get_brightness(self):
+ max_brightness = int(open(os.path.join(self.testbed.get_root_dir() + self.backlight, 'max_brightness')).read())
+
# self.backlight contains the leading slash, so os.path.join doesn't quite work
res = int(open(os.path.join(self.testbed.get_root_dir() + self.backlight, 'brightness')).read())
# Undo mangling done in GSD
@@ -1107,5 +1121,50 @@ class PowerPluginTest(gsdtestcase.GSDTestCase):
time.sleep(1.0)
self.assertEqual(self.get_brightness(), 90)
+ def test_brightness_step(self):
+ # We cannot use check_plugin_log here because the startup check already
+ # read the relevant message.
+ log = open(self.plugin_log_write.name, 'rb').read()
+ self.assertIn(b'Step size for backlight is 5.', log)
+
+ def test_legacy_brightness_step(self):
+ # We cannot use check_plugin_log here because the startup check already
+ # read the relevant message.
+ log = open(self.plugin_log_write.name, 'rb').read()
+ self.assertIn(b'Step size for backlight is 1.', log)
+
+ def test_legacy_brightness_rounding(self):
+ obj_gsd_power = self.session_bus_con.get_object(
+ 'org.gnome.SettingsDaemon.Power', '/org/gnome/SettingsDaemon/Power')
+ obj_gsd_power_prop_iface = dbus.Interface(obj_gsd_power, dbus.PROPERTIES_IFACE)
+
+ obj_gsd_power_prop_iface.Set('org.gnome.SettingsDaemon.Power.Screen', 'Brightness', 0)
+ time.sleep(0.2)
+ self.assertEqual(self.get_brightness(), 0)
+ obj_gsd_power_prop_iface.Set('org.gnome.SettingsDaemon.Power.Screen', 'Brightness', 10)
+ time.sleep(0.2)
+ self.assertEqual(self.get_brightness(), 1)
+ obj_gsd_power_prop_iface.Set('org.gnome.SettingsDaemon.Power.Screen', 'Brightness', 20)
+ time.sleep(0.2)
+ self.assertEqual(self.get_brightness(), 3)
+ obj_gsd_power_prop_iface.Set('org.gnome.SettingsDaemon.Power.Screen', 'Brightness', 25)
+ time.sleep(0.2)
+ self.assertEqual(self.get_brightness(), 4)
+ obj_gsd_power_prop_iface.Set('org.gnome.SettingsDaemon.Power.Screen', 'Brightness', 50)
+ time.sleep(0.2)
+ self.assertEqual(self.get_brightness(), 7)
+ obj_gsd_power_prop_iface.Set('org.gnome.SettingsDaemon.Power.Screen', 'Brightness', 52)
+ time.sleep(0.2)
+ self.assertEqual(self.get_brightness(), 8)
+ obj_gsd_power_prop_iface.Set('org.gnome.SettingsDaemon.Power.Screen', 'Brightness', 56)
+ time.sleep(0.2)
+ self.assertEqual(self.get_brightness(), 8)
+ obj_gsd_power_prop_iface.Set('org.gnome.SettingsDaemon.Power.Screen', 'Brightness', 57)
+ time.sleep(0.2)
+ self.assertEqual(self.get_brightness(), 9)
+ obj_gsd_power_prop_iface.Set('org.gnome.SettingsDaemon.Power.Screen', 'Brightness', 98)
+ time.sleep(0.2)
+ self.assertEqual(self.get_brightness(), 15)
+
# avoid writing to stderr
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, verbosity=2))