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