1 #![cfg(arc_try_new)] 2 3 use wasmtime::{Config, Engine, MemoryTypeBuilder, Result, SharedMemory}; 4 use wasmtime_fuzzing::oom::OomTest; 5 6 fn shared_memory_engine() -> Result<Engine> { 7 let mut config = Config::new(); 8 config.enable_compiler(false); 9 config.shared_memory(true); 10 Engine::new(&config) 11 } 12 13 #[test] 14 fn shared_memory_new() -> Result<()> { 15 let engine = shared_memory_engine()?; 16 17 OomTest::new().test(|| { 18 let ty = MemoryTypeBuilder::new() 19 .min(1) 20 .max(Some(2)) 21 .shared(true) 22 .build()?; 23 let _mem = SharedMemory::new(&engine, ty)?; 24 Ok(()) 25 }) 26 } 27 28 #[test] 29 fn shared_memory_ty() -> Result<()> { 30 let engine = shared_memory_engine()?; 31 32 OomTest::new().test(|| { 33 let ty = MemoryTypeBuilder::new() 34 .min(1) 35 .max(Some(2)) 36 .shared(true) 37 .build()?; 38 let mem = SharedMemory::new(&engine, ty)?; 39 let _ty = mem.ty(); 40 Ok(()) 41 }) 42 } 43 44 #[test] 45 fn shared_memory_size() -> Result<()> { 46 let engine = shared_memory_engine()?; 47 48 OomTest::new().test(|| { 49 let ty = MemoryTypeBuilder::new() 50 .min(1) 51 .max(Some(2)) 52 .shared(true) 53 .build()?; 54 let mem = SharedMemory::new(&engine, ty)?; 55 assert_eq!(mem.size(), 1); 56 Ok(()) 57 }) 58 } 59 60 #[test] 61 fn shared_memory_grow() -> Result<()> { 62 let engine = shared_memory_engine()?; 63 64 OomTest::new().test(|| { 65 let ty = MemoryTypeBuilder::new() 66 .min(1) 67 .max(Some(4)) 68 .shared(true) 69 .build()?; 70 let mem = SharedMemory::new(&engine, ty)?; 71 let _old = mem.grow(1)?; 72 Ok(()) 73 }) 74 } 75 76 #[test] 77 fn shared_memory_data_size() -> Result<()> { 78 let engine = shared_memory_engine()?; 79 80 OomTest::new().test(|| { 81 let ty = MemoryTypeBuilder::new() 82 .min(1) 83 .max(Some(2)) 84 .shared(true) 85 .build()?; 86 let mem = SharedMemory::new(&engine, ty)?; 87 assert_eq!(mem.data_size(), 65536); 88 Ok(()) 89 }) 90 } 91