We designed some chaos tests, which simulate what problems will occur when the disk is full.
Prepares
fallocate -l 512K disk.img
mkfs disk.img
mkdir ./td
sudo mount -o loop td.img ./td
chmod a+wr ./td
Codes
#[tokio::test(flavor = "multi_thread")]
async fn object_store_write() {
let mut builder = object_store::services::Fs::default();
let root_dir = "/tmp/chaos/td/";
let _ = builder.root(root_dir);
let store = ObjectStore::new(builder).unwrap().finish();
// XKB
let data = [96u8; 1024 * 512]; // The writable was smaller than 512KB
store.write("/test", data.to_vec()).await.unwrap();
}
The test was expected to raise no space errors, but it didn't.
test tests::standalone_read_write::object_store_write ... ok
However, if we check the written file, it only contains partial bytes.
➜ td ls -lh
total 448K
drwx------ 2 root root 16K Sep 13 08:28 lost+found
-rw-rw-r-- 1 weny weny 428K Sep 13 09:10 test
See also: tokio-rs/tokio#6005
We designed some chaos tests, which simulate what problems will occur when the disk is full.
Prepares
Codes
The test was expected to raise
no spaceerrors, but it didn't.However, if we check the written file, it only contains partial bytes.
➜ td ls -lh total 448K drwx------ 2 root root 16K Sep 13 08:28 lost+found -rw-rw-r-- 1 weny weny 428K Sep 13 09:10 testSee also: tokio-rs/tokio#6005