Add test for native to wasm value conversions#525
Open
leonm1 wants to merge 13 commits intoproxy-wasm:mainfrom
Open
Add test for native to wasm value conversions#525leonm1 wants to merge 13 commits intoproxy-wasm:mainfrom
leonm1 wants to merge 13 commits intoproxy-wasm:mainfrom
Conversation
Signed-off-by: Matt Leon <mattleon@google.com>
PiotrSikora
reviewed
Mar 17, 2026
Member
PiotrSikora
left a comment
There was a problem hiding this comment.
Could you change bigendian to endianness everywhere? We're verifying that values are not incorrectly converted on little-endian systems as well.
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
There's enough test cases that this warrants being run in parallel via its own test target. Signed-off-by: Matt Leon <mattleon@google.com>
Uses bswap64 by default to handle int64 and uint64 values. For float and doubles, uses appropriate-size bswap operators by first bit-casting floats and doubles to their same-size int types. Otherwise, they will be coerced to an int type before conversion and be returned as int values. Signed-off-by: Matt Leon <mattleon@google.com>
Without first converting to uint32_t, the getters for wasm_val_t for wamr, wasmtime, and wasmedge returned a signed integer type. For uint32 values high enough to be in the negative range, sign extension would be applied when the value was coerced into proxy_wasm::Word. This resulted in Word values that did not match the comment on Word ``` // Represents a Wasm-native word-sized datum. On 32-bit VMs, the high bits are always zero. // The Wasm/VM API treats all bits as significant. ``` nor the exact value returned from the wasm plugin. Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
PiotrSikora
reviewed
Mar 19, 2026
| template <> auto convertArgToValTypePtr<int64_t>() { return wasm_valtype_new_i64(); }; | ||
| template <> auto convertArgToValTypePtr<uint64_t>() { return wasm_valtype_new_i64(); }; | ||
| template <> auto convertArgToValTypePtr<double>() { return wasm_valtype_new_f64(); }; | ||
| template <> auto convertArgToValTypePtr<float>() { return wasm_valtype_new_f32(); }; |
| class ArgPassingContext : public TestContext { | ||
| public: | ||
| using TestContext::TestContext; | ||
| WasmResult getHeaderMapPairs(WasmHeaderMapType /* type */, Pairs * /* result */) override { |
Member
There was a problem hiding this comment.
Maybe use getStatus to get uint32, string pair and test both in one go?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This test explicitly tests the bounds of various native and wasm types to ensure passing data across the ABI boundary is not lossy.