implement fuzzing for component types (#4537)
This addresses #4307. For the static API we generate 100 arbitrary test cases at build time, each of which includes 0-5 parameter types, a result type, and a WAT fragment containing an imported function and an exported function. The exported function calls the imported function, which is implemented by the host. At runtime, the fuzz test selects a test case at random and feeds it zero or more sets of arbitrary parameters and results, checking that values which flow host-to-guest and guest-to-host make the transition unchanged. The fuzz test for the dynamic API follows a similar pattern, the only difference being that test cases are generated at runtime. Signed-off-by: Joel Dice <joel.dice@fermyon.com>
This commit is contained in:
@@ -15,6 +15,7 @@ libfuzzer-sys = "0.4"
|
||||
wasmparser = "0.88.0"
|
||||
wasmprinter = "0.2.37"
|
||||
wasmtime-environ = { path = ".." }
|
||||
component-fuzz-util = { path = "../../misc/component-fuzz-util", optional = true }
|
||||
|
||||
[[bin]]
|
||||
name = "fact-valid-module"
|
||||
@@ -24,4 +25,4 @@ doc = false
|
||||
required-features = ["component-model"]
|
||||
|
||||
[features]
|
||||
component-model = ["wasmtime-environ/component-model"]
|
||||
component-model = ["wasmtime-environ/component-model", "dep:component-fuzz-util"]
|
||||
|
||||
Reference in New Issue
Block a user