]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-sleep: add a very simple test that prints battery suspend estimates
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 23 Jan 2023 14:44:33 +0000 (15:44 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 23 Jan 2023 21:06:05 +0000 (22:06 +0100)
src/shared/sleep-config.c
src/shared/sleep-config.h
src/test/test-sleep.c

index 84082214ae176a2317b82ff301d0c9cf7ed6adcb..d7581960f9633d7cab928e1c1206b87581f3c69e 100644 (file)
@@ -150,7 +150,7 @@ static int battery_enumerator_new(sd_device_enumerator **ret) {
         return 0;
 }
 
-static int get_capacity_by_name(Hashmap *capacities_by_name, const char *name) {
+int get_capacity_by_name(Hashmap *capacities_by_name, const char *name) {
         void *p;
 
         assert(capacities_by_name);
index 6645c3e5968f1f52cf3a6eb82a02a5e8391c64af..af6947d98288ef80c780757b25127bf77c422a82 100644 (file)
@@ -60,6 +60,7 @@ int can_sleep_state(char **types);
 int battery_is_low(void);
 int get_total_suspend_interval(Hashmap *last_capacity, usec_t *ret);
 int fetch_batteries_capacity_by_name(Hashmap **ret_current_capacity);
+int get_capacity_by_name(Hashmap *capacities_by_name, const char *name);
 int estimate_battery_discharge_rate_per_hour(
                 Hashmap *last_capacity,
                 Hashmap *current_capacity,
index abaae43e7240735267bdbfaa4e21f3588f98a9f2..2290e7c3025631061ae2803143002a005aa058d9 100644 (file)
@@ -117,6 +117,32 @@ TEST(sleep) {
         log_info("Suspend-then-Hibernate configured and possible: %s", r >= 0 ? yes_no(r) : STRERROR(r));
 }
 
+TEST(fetch_batteries_capacity_by_name) {
+        _cleanup_hashmap_free_ Hashmap *capacity = NULL;
+        int r;
+
+        assert_se(fetch_batteries_capacity_by_name(&capacity) >= 0);
+        log_debug("fetch_batteries_capacity_by_name: %u entries", hashmap_size(capacity));
+
+        const char *name;
+        void *cap;
+        HASHMAP_FOREACH_KEY(cap, name, capacity) {
+                assert(cap);  /* Anything non-null is fine. */
+                log_info("Battery %s: capacity = %i", name, get_capacity_by_name(capacity, name));
+        }
+
+        for (int i = 0; i < 5; i++) {
+                usec_t interval;
+
+                sleep(1);
+
+                r = get_total_suspend_interval(capacity, &interval);
+                assert_se(r >= 0 || r == -ENOENT);
+                log_info("%d: get_total_suspend_interval: %s", i,
+                         r < 0 ? STRERROR(r) : FORMAT_TIMESPAN(interval, USEC_PER_SEC));
+        }
+}
+
 static int intro(void) {
         if (getuid() != 0)
                 log_warning("This program is unlikely to work for unprivileged users");