// Ad-hoc smoke test: CubeFs + DaemonBackend (NO FUSE) against a live daemon. // Bisects whether the FUSE layer or the cubefs/cubestore layer is the culprit. // Run: CUBE_SOCK= cargo test --test cubefs_daemon_smoke -- --nocapture use cubecoords::Czyx; use cubefs::{CubeFs, DaemonBackend}; use cubestore::{CubeBackend, CubeStore}; #[test] fn cubefs_create_write_reaches_daemon() { let sock = std::env::var("CUBE_SOCK").expect("set CUBE_SOCK"); let mut fs = CubeFs::new(CubeStore::new(DaemonBackend::new(sock))); fs.format("cube0"); let path = "/c011/z007/y003/x009"; fs.create(path, 0, 0, 0o644).expect("create"); fs.write(path, 0, b"fuse-proof-XYZ", 0, 0).expect("write"); // Now ask the daemon directly via a second backend. let mut probe = DaemonBackend::new(std::env::var("CUBE_SOCK").unwrap()); let k = Czyx::new(11, 7, 3, 9); let got = probe.get(&k); println!("daemon-side get(11,7,3,9) => {:?}", got); assert_eq!(got.as_deref(), Some(&b"fuse-proof-XYZ"[..]), "CubeFs write must reach daemon store"); let keys = probe.keys(); println!("daemon keys => {:?}", keys); assert!(keys.contains(&k)); }