1 #![cfg(arc_try_new)]
2 
3 use wasmtime::{Config, Engine, MemoryTypeBuilder, Result, SharedMemory};
4 use wasmtime_fuzzing::oom::OomTest;
5 
shared_memory_engine() -> Result<Engine>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]
shared_memory_new() -> Result<()>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]
shared_memory_ty() -> Result<()>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]
shared_memory_size() -> Result<()>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]
shared_memory_grow() -> Result<()>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]
shared_memory_data_size() -> Result<()>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