1import ./make-test-python.nix (
2 { pkgs, ... }:
3
4 {
5 name = "power-profiles-daemon";
6 meta = with pkgs.lib.maintainers; {
7 maintainers = [ mvnetbiz ];
8 };
9 nodes.machine =
10 { pkgs, ... }:
11 {
12 security.polkit.enable = true;
13 services.power-profiles-daemon.enable = true;
14 environment.systemPackages = [
15 pkgs.glib
16 pkgs.power-profiles-daemon
17 ];
18 };
19
20 testScript = ''
21 def get_profile():
22 return machine.succeed(
23 """gdbus call --system --dest org.freedesktop.UPower.PowerProfiles --object-path /org/freedesktop/UPower/PowerProfiles \
24 --method org.freedesktop.DBus.Properties.Get 'org.freedesktop.UPower.PowerProfiles' 'ActiveProfile'
25 """
26 )
27
28
29 def set_profile(profile):
30 return machine.succeed(
31 """gdbus call --system --dest org.freedesktop.UPower.PowerProfiles --object-path /org/freedesktop/UPower/PowerProfiles \
32 --method org.freedesktop.DBus.Properties.Set 'org.freedesktop.UPower.PowerProfiles' 'ActiveProfile' "<'{profile}'>"
33 """.format(
34 profile=profile
35 )
36 )
37
38
39 machine.wait_for_unit("multi-user.target")
40
41 set_profile("power-saver")
42 profile = get_profile()
43 if not "power-saver" in profile:
44 raise Exception("Unable to set power-saver profile")
45
46
47 set_profile("balanced")
48 profile = get_profile()
49 if not "balanced" in profile:
50 raise Exception("Unable to set balanced profile")
51
52 # test powerprofilectl CLI
53 machine.succeed("powerprofilesctl set power-saver")
54 profile = get_profile()
55 if not "power-saver" in profile:
56 raise Exception("Unable to set power-saver profile with powerprofilectl")
57
58 machine.succeed("powerprofilesctl set balanced")
59 profile = get_profile()
60 if not "balanced" in profile:
61 raise Exception("Unable to set balanced profile with powerprofilectl")
62 '';
63 }
64)