Run wast tests with both instance allocators.
This commit adds a "pooling" variant to the wast tests that uses the pooling instance allocation strategy. This should help with the test coverage of the pooling instance allocator.
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
use std::path::Path;
|
||||
use wasmtime::{Config, Engine, Store, Strategy};
|
||||
use wasmtime::{
|
||||
Config, Engine, InstanceAllocationStrategy, InstanceLimits, ModuleLimits,
|
||||
PoolingAllocationStrategy, Store, Strategy,
|
||||
};
|
||||
use wasmtime_wast::WastContext;
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/wast_testsuite_tests.rs"));
|
||||
@@ -7,7 +10,7 @@ include!(concat!(env!("OUT_DIR"), "/wast_testsuite_tests.rs"));
|
||||
// Each of the tests included from `wast_testsuite_tests` will call this
|
||||
// function which actually executes the `wast` test suite given the `strategy`
|
||||
// to compile it.
|
||||
fn run_wast(wast: &str, strategy: Strategy) -> anyhow::Result<()> {
|
||||
fn run_wast(wast: &str, strategy: Strategy, pooling: bool) -> anyhow::Result<()> {
|
||||
let wast = Path::new(wast);
|
||||
|
||||
let simd = wast.iter().any(|s| s == "simd");
|
||||
@@ -44,6 +47,30 @@ fn run_wast(wast: &str, strategy: Strategy) -> anyhow::Result<()> {
|
||||
cfg.static_memory_maximum_size(0);
|
||||
}
|
||||
|
||||
if pooling {
|
||||
// The limits here are crafted such that the wast tests should pass.
|
||||
// However, these limits may become insufficient in the future as the wast tests change.
|
||||
// If a wast test fails because of a limit being "exceeded" or if memory/table
|
||||
// fails to grow, the values here will need to be adjusted.
|
||||
cfg.with_allocation_strategy(InstanceAllocationStrategy::Pooling {
|
||||
strategy: PoolingAllocationStrategy::NextAvailable,
|
||||
module_limits: ModuleLimits {
|
||||
imported_memories: 2,
|
||||
imported_tables: 2,
|
||||
imported_globals: 11,
|
||||
memories: 2,
|
||||
tables: 4,
|
||||
globals: 11,
|
||||
memory_pages: 805,
|
||||
..Default::default()
|
||||
},
|
||||
instance_limits: InstanceLimits {
|
||||
count: 450,
|
||||
..Default::default()
|
||||
},
|
||||
})?;
|
||||
}
|
||||
|
||||
let store = Store::new(&Engine::new(&cfg));
|
||||
let mut wast_context = WastContext::new(store);
|
||||
wast_context.register_spectest()?;
|
||||
|
||||
Reference in New Issue
Block a user