Fix config and IPC lifecycle issues and remove obsolete code

This commit is contained in:
Samuel Onoja committed 2026-10-13 03:36:25 +01:00
1 parent 8007f7a107
commit 5d9673aad3
14 files changed
+723 -753

No files matched your search

+53
View File
@@ -247,3 +247,56 @@ fn shutdown_interrupts_connection_authentication() {
};
stop_and_join(monitor);
}
#[test]
fn ownership_acquired_before_subscription_baseline_is_not_a_second_outage() {
if !crate::startup_tests::private_runtime(
"resume::tests::ownership_acquired_before_subscription_baseline_is_not_a_second_outage",
) {
return;
}
let bus = Bus::new();
let (connection, mut owners, manager, baseline) = future::block_on(async {
let connection = zbus::connection::Builder::address(bus.address.as_str())
.unwrap()
.build()
.await
.unwrap();
let proxy = zbus::Proxy::new(
&connection,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
)
.await
.unwrap();
let owners = proxy.receive_owner_changed().await.unwrap();
// Force acquisition after AddMatch but before the listener's baseline.
let manager = bus.manager();
let reply = connection
.call_method(
Some("org.freedesktop.DBus"),
"/org/freedesktop/DBus",
Some("org.freedesktop.DBus"),
"GetNameOwner",
&("org.freedesktop.login1",),
)
.await
.unwrap();
(connection, owners, manager, reply.recv_position())
});
let (sender, events) = mpsc::channel();
let worker = std::thread::spawn(move || {
// Keep the same connection alive so receive sequences remain comparable.
let _connection = connection;
future::block_on(owner_changed_after(&mut owners, baseline));
sender.send(()).unwrap();
});
assert!(
events.recv_timeout(Duration::from_millis(100)).is_err(),
"queued acquisition must not interrupt the recovered listener"
);
manager.release_name("org.freedesktop.login1").unwrap();
events.recv_timeout(Duration::from_secs(2)).unwrap();
worker.join().unwrap();
}