From 820e292f1555a9ca8cd9ab8fc9a304e7fbb90463 Mon Sep 17 00:00:00 2001 From: vms Date: Tue, 13 Apr 2021 12:36:14 +0300 Subject: [PATCH] Additional tests for BWU (#74) --- .circleci/config.yml | 4 +- .gitignore | 2 +- Cargo.lock | 54 +- Cargo.toml | 2 +- engine/src/engine.rs | 14 +- engine/src/module/wit_instance.rs | 5 +- fluence-faas/tests/arguments_passing.rs | 463 +++++++++++------- fluence-faas/tests/records.rs | 69 +-- .../wasm_tests/arguments_passing/Cargo.toml | 1 - .../artifacts/arguments_passing_effector.wasm | Bin 80630 -> 88030 bytes .../artifacts/arguments_passing_pure.wasm | Bin 87820 -> 102454 bytes .../arguments_passing/src/effector.rs | 84 ++++ .../wasm_tests/arguments_passing/src/pure.rs | 130 +++++ .../artifacts/arrays_passing_effector.wasm | Bin 95983 -> 96015 bytes .../artifacts/arrays_passing_pure.wasm | Bin 111842 -> 111874 bytes fluence-faas/tests/wasm_tests/build.sh | 11 +- .../wasm_tests/inner_records/Config.toml | 6 - .../artifacts/inner_records_pure.wasm | Bin 75837 -> 0 bytes .../Cargo.toml | 8 +- .../wasm_tests/records_passing/Config.toml | 11 + .../artifacts/records_passing_effector.wasm | Bin 0 -> 77157 bytes .../artifacts/records_passing_pure.wasm | Bin 0 -> 79425 bytes .../src/effector.rs} | 10 + .../wasm_tests/records_passing/src/pure.rs | 84 ++++ 24 files changed, 701 insertions(+), 257 deletions(-) delete mode 100644 fluence-faas/tests/wasm_tests/inner_records/Config.toml delete mode 100755 fluence-faas/tests/wasm_tests/inner_records/artifacts/inner_records_pure.wasm rename fluence-faas/tests/wasm_tests/{inner_records => records_passing}/Cargo.toml (63%) create mode 100644 fluence-faas/tests/wasm_tests/records_passing/Config.toml create mode 100755 fluence-faas/tests/wasm_tests/records_passing/artifacts/records_passing_effector.wasm create mode 100755 fluence-faas/tests/wasm_tests/records_passing/artifacts/records_passing_pure.wasm rename fluence-faas/tests/wasm_tests/{inner_records/src/pure.rs => records_passing/src/effector.rs} (80%) create mode 100644 fluence-faas/tests/wasm_tests/records_passing/src/pure.rs diff --git a/.circleci/config.yml b/.circleci/config.yml index 6ff3025d..32323bd3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,7 +11,7 @@ jobs: - checkout - restore_cache: keys: - - fce04-{{ checksum "Cargo.lock" }} + - fce05-{{ checksum "Cargo.lock" }} - run: | rustup toolchain install nightly-2021-02-27 rustup default nightly-2021-02-27 @@ -36,7 +36,7 @@ jobs: paths: - ~/.cargo - ~/.rustup - key: fce04-{{ checksum "Cargo.lock" }} + key: fce05-{{ checksum "Cargo.lock" }} workflows: version: 2.1 diff --git a/.gitignore b/.gitignore index 6845f1f3..249ebd77 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,4 @@ target/ # Allowed Wasm files for test !/fluence-faas/tests/wasm_tests/arguments_passing/artifacts/*.wasm !/fluence-faas/tests/wasm_tests/arrays_passing/artifacts/*.wasm -!/fluence-faas/tests/wasm_tests/inner_records/artifacts/inner_records_pure.wasm +!/fluence-faas/tests/wasm_tests/records_passing/artifacts/*.wasm diff --git a/Cargo.lock b/Cargo.lock index 8f31abfc..466cad56 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -245,7 +245,7 @@ checksum = "52785868311163c46203e5be682d01623fc550949e24b7943eb8e4b80c9ca937" dependencies = [ "anyhow", "chrono", - "reqwest 0.11.2", + "reqwest 0.11.3", "semver 0.11.0", "serde", ] @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "fce-timestamp-macro" version = "0.6.0" -source = "git+https://github.com/fluencelabs/rust-sdk#e2a1e66e170abd992ee5b1a1bd21347494fcf91c" +source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" dependencies = [ "chrono", "quote", @@ -807,7 +807,7 @@ dependencies = [ [[package]] name = "fluence" version = "0.6.0" -source = "git+https://github.com/fluencelabs/rust-sdk#e2a1e66e170abd992ee5b1a1bd21347494fcf91c" +source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" dependencies = [ "fce-timestamp-macro", "fluence-sdk-macro 0.6.0", @@ -879,7 +879,7 @@ dependencies = [ [[package]] name = "fluence-sdk-macro" version = "0.6.0" -source = "git+https://github.com/fluencelabs/rust-sdk#e2a1e66e170abd992ee5b1a1bd21347494fcf91c" +source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" dependencies = [ "fluence-sdk-wit 0.6.0", ] @@ -898,7 +898,7 @@ dependencies = [ [[package]] name = "fluence-sdk-main" version = "0.6.0" -source = "git+https://github.com/fluencelabs/rust-sdk#e2a1e66e170abd992ee5b1a1bd21347494fcf91c" +source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" dependencies = [ "fluence-sdk-macro 0.6.0", "log", @@ -922,7 +922,7 @@ dependencies = [ [[package]] name = "fluence-sdk-wit" version = "0.6.0" -source = "git+https://github.com/fluencelabs/rust-sdk#e2a1e66e170abd992ee5b1a1bd21347494fcf91c" +source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" dependencies = [ "proc-macro2", "quote", @@ -1175,8 +1175,8 @@ dependencies = [ "http", "indexmap", "slab", - "tokio 1.4.0", - "tokio-util 0.6.5", + "tokio 1.5.0", + "tokio-util 0.6.6", "tracing", ] @@ -1305,7 +1305,7 @@ dependencies = [ "itoa", "pin-project", "socket2 0.4.0", - "tokio 1.4.0", + "tokio 1.5.0", "tower-service", "tracing", "want", @@ -1333,7 +1333,7 @@ dependencies = [ "bytes 1.0.1", "hyper 0.14.5", "native-tls", - "tokio 1.4.0", + "tokio 1.5.0", "tokio-native-tls", ] @@ -1371,14 +1371,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inner-records-test" -version = "0.1.0" -dependencies = [ - "fluence 0.6.0", - "safe-transmute", -] - [[package]] name = "instant" version = "0.1.9" @@ -2117,6 +2109,14 @@ dependencies = [ "test-record", ] +[[package]] +name = "records-passing-test" +version = "0.1.0" +dependencies = [ + "fluence 0.6.0", + "safe-transmute", +] + [[package]] name = "redox_syscall" version = "0.1.57" @@ -2225,9 +2225,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf12057f289428dbf5c591c74bf10392e4a8003f993405a902f20117019022d4" +checksum = "2296f2fac53979e8ccbc4a1136b25dcefd37be9ed7e4a1f6b05a6029c84ff124" dependencies = [ "base64", "bytes 1.0.1", @@ -2249,7 +2249,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "tokio 1.4.0", + "tokio 1.5.0", "tokio-native-tls", "url", "wasm-bindgen", @@ -2731,9 +2731,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134af885d758d645f0f0505c9a8b3f9bf8a348fd822e112ab5248138348f1722" +checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" dependencies = [ "autocfg", "bytes 1.0.1", @@ -2762,7 +2762,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" dependencies = [ "native-tls", - "tokio 1.4.0", + "tokio 1.5.0", ] [[package]] @@ -2791,16 +2791,16 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5143d049e85af7fbc36f5454d990e62c2df705b3589f123b71f441b6b59f443f" +checksum = "940a12c99365c31ea8dd9ba04ec1be183ffe4920102bb7122c2f515437601e8e" dependencies = [ "bytes 1.0.1", "futures-core", "futures-sink", "log", "pin-project-lite 0.2.6", - "tokio 1.4.0", + "tokio 1.5.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index b206722f..d099a14d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ members = [ "fluence-faas", "fluence-faas/tests/wasm_tests/arguments_passing", "fluence-faas/tests/wasm_tests/arrays_passing", - "fluence-faas/tests/wasm_tests/inner_records", + "fluence-faas/tests/wasm_tests/records_passing", "tools/cli", "tools/repl", ] diff --git a/engine/src/engine.rs b/engine/src/engine.rs index 6b4516cf..cc883d90 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -52,12 +52,7 @@ impl FCE { arguments: &[IValue], ) -> FCEResult> { self.modules.get_mut(module_name.as_ref()).map_or_else( - || { - Err(FCEError::NoSuchModule(format!( - "trying to call module with name {} that is not loaded", - module_name.as_ref() - ))) - }, + || Err(FCEError::NoSuchModule(module_name.as_ref().to_string())), |module| module.call(module_name.as_ref(), func_name.as_ref(), arguments), ) } @@ -97,12 +92,7 @@ impl FCE { self.modules .remove(name.as_ref()) .map(|_| ()) - .ok_or_else(|| { - FCEError::NoSuchModule(format!( - "trying to unload module with name {} that is not loaded", - name.as_ref() - )) - }) + .ok_or_else(|| FCEError::NoSuchModule(name.as_ref().to_string())) } pub fn module_wasi_state>( diff --git a/engine/src/module/wit_instance.rs b/engine/src/module/wit_instance.rs index af8723ac..255f6463 100644 --- a/engine/src/module/wit_instance.rs +++ b/engine/src/module/wit_instance.rs @@ -131,10 +131,7 @@ impl WITInstance { Ok((start_index + idx as usize, func)) } - None => Err(FCEError::NoSuchModule(format!( - "trying to get imports from module with name {} that is not loaded", - import.namespace - ))), + None => Err(FCEError::NoSuchModule(import.namespace.to_string())), }) .collect::>>() } diff --git a/fluence-faas/tests/arguments_passing.rs b/fluence-faas/tests/arguments_passing.rs index 98b84d80..3b354677 100644 --- a/fluence-faas/tests/arguments_passing.rs +++ b/fluence-faas/tests/arguments_passing.rs @@ -56,10 +56,28 @@ pub fn get_interfaces() { let string_type_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("string_type")), + arguments: Rc::new(string_type_arguments.clone()), + outputs: Rc::new(string_type_outputs.clone()), + }; + + let string_ref_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("string_ref_type")), arguments: Rc::new(string_type_arguments), outputs: Rc::new(string_type_outputs), }; + let str_type_arguments = vec![fluence_faas::IFunctionArg { + name: String::from("arg"), + ty: IType::String, + }]; + let str_type_outputs = vec![IType::String]; + + let str_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("str_type")), + arguments: Rc::new(str_type_arguments), + outputs: Rc::new(str_type_outputs), + }; + let bytearray_type_arguments = vec![fluence_faas::IFunctionArg { name: String::from("arg"), ty: IType::Array(Box::new(IType::U8)), @@ -68,6 +86,12 @@ pub fn get_interfaces() { let bytearray_type_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("bytearray_type")), + arguments: Rc::new(bytearray_type_arguments.clone()), + outputs: Rc::new(bytearray_type_outputs.clone()), + }; + + let bytearray_ref_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("bytearray_ref_type")), arguments: Rc::new(bytearray_type_arguments), outputs: Rc::new(bytearray_type_outputs), }; @@ -80,6 +104,12 @@ pub fn get_interfaces() { let i32_type_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("i32_type")), + arguments: Rc::new(i32_type_arguments.clone()), + outputs: Rc::new(i32_type_outputs.clone()), + }; + + let i32_ref_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("i32_ref_type")), arguments: Rc::new(i32_type_arguments), outputs: Rc::new(i32_type_outputs), }; @@ -93,6 +123,12 @@ pub fn get_interfaces() { let i64_type_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("i64_type")), + arguments: Rc::new(i64_type_arguments.clone()), + outputs: Rc::new(i64_type_outputs.clone()), + }; + + let i64_ref_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("i64_ref_type")), arguments: Rc::new(i64_type_arguments), outputs: Rc::new(i64_type_outputs), }; @@ -105,6 +141,12 @@ pub fn get_interfaces() { let u32_type_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("u32_type")), + arguments: Rc::new(u32_type_arguments.clone()), + outputs: Rc::new(u32_type_outputs.clone()), + }; + + let u32_ref_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("u32_ref_type")), arguments: Rc::new(u32_type_arguments), outputs: Rc::new(u32_type_outputs), }; @@ -117,6 +159,12 @@ pub fn get_interfaces() { let u64_type_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("u64_type")), + arguments: Rc::new(u64_type_arguments.clone()), + outputs: Rc::new(u64_type_outputs.clone()), + }; + + let u64_ref_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("u64_ref_type")), arguments: Rc::new(u64_type_arguments), outputs: Rc::new(u64_type_outputs), }; @@ -129,6 +177,12 @@ pub fn get_interfaces() { let f32_type_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("f32_type")), + arguments: Rc::new(f32_type_arguments.clone()), + outputs: Rc::new(f32_type_outputs.clone()), + }; + + let f32_ref_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("f32_ref_type")), arguments: Rc::new(f32_type_arguments), outputs: Rc::new(f32_type_outputs), }; @@ -141,6 +195,12 @@ pub fn get_interfaces() { let f64_type_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("f64_type")), + arguments: Rc::new(f64_type_arguments.clone()), + outputs: Rc::new(f64_type_outputs.clone()), + }; + + let f64_ref_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("f64_ref_type")), arguments: Rc::new(f64_type_arguments), outputs: Rc::new(f64_type_outputs), }; @@ -162,6 +222,12 @@ pub fn get_interfaces() { let bool_type_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("bool_type")), + arguments: Rc::new(bool_type_arguments.clone()), + outputs: Rc::new(bool_type_outputs.clone()), + }; + + let bool_ref_type_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("bool_ref_type")), arguments: Rc::new(bool_type_arguments), outputs: Rc::new(bool_type_outputs), }; @@ -220,22 +286,39 @@ pub fn get_interfaces() { let all_types_sign = fluence_faas::FaaSFunctionSignature { name: Rc::new(String::from("all_types")), + arguments: Rc::new(all_types_arguments.clone()), + outputs: Rc::new(all_types_outputs.clone()), + }; + + let all_ref_types_sign = fluence_faas::FaaSFunctionSignature { + name: Rc::new(String::from("all_ref_types")), arguments: Rc::new(all_types_arguments), outputs: Rc::new(all_types_outputs), }; let functions = vec![ string_type_sign, + string_ref_type_sign, + str_type_sign, bytearray_type_sign, + bytearray_ref_type_sign, i32_type_sign, + i32_ref_type_sign, i64_type_sign, + i64_ref_type_sign, u32_type_sign, + u32_ref_type_sign, u64_type_sign, + u64_ref_type_sign, f32_type_sign, + f32_ref_type_sign, f64_type_sign, + f64_ref_type_sign, empty_type_sign, bool_type_sign, + bool_ref_type_sign, all_types_sign, + all_ref_types_sign, ]; let pure_module_name = "arguments_passing_pure"; @@ -268,226 +351,272 @@ pub fn get_interfaces() { #[test] pub fn all_types() { - const FUNC_NAME: &'static str = "all_types"; - let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let result1 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!({}), <_>::default()); - assert!(result1.is_err()); + let mut test = |func_name: &str| { + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); - let result2 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!([]), <_>::default()); - assert!(result2.is_err()); + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); - let expected_result = json!([ - 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 65, 1, 153, 154, 64, 34, 51, 51, 51, 51, 51, 51, 102, 108, 117, 101, 110, 99, 101, 19, 55, - 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 65, 1, 153, 154, 64, 34, 51, 51, 51, 51, 51, 51, 102, 108, 117, 101, 110, 99, 101, 19, 55 - ]); + let expected_result = json!([ + 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 65, 1, 153, 154, 64, 34, 51, 51, 51, 51, 51, 51, 102, 108, 117, 101, 110, 99, 101, + 19, 55, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 65, 1, 153, 154, 64, 34, 51, 51, 51, 51, 51, 51, 102, 108, 117, 101, 110, + 99, 101, 19, 55 + ]); - let faas_arg = json!({ - "arg_0": 0, - "arg_1": 1, - "arg_2": 2, - "arg_3": 3, - "arg_4": 4, - "arg_5": 5, - "arg_6": 6, - "arg_7": 7, - "arg_8": 8.1, - "arg_9": 9.1, - "arg_10": "fluence", - "arg_11": vec! [0x13, 0x37], - }); - let result3 = call_faas!(faas, MODULE_NAME, FUNC_NAME, faas_arg); - assert_eq!(result3, expected_result); + let faas_arg = json!({ + "arg_0": 0, + "arg_1": 1, + "arg_2": 2, + "arg_3": 3, + "arg_4": 4, + "arg_5": 5, + "arg_6": 6, + "arg_7": 7, + "arg_8": 8.1, + "arg_9": 9.1, + "arg_10": "fluence", + "arg_11": vec! [0x13, 0x37], + }); + let result3 = call_faas!(faas, MODULE_NAME, func_name, faas_arg); + assert_eq!(result3, expected_result); - let faas_arg = json!([ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8.1, - 9.1, - "fluence", - vec![0x13, 0x37] - ]); - let result4 = call_faas!(faas, MODULE_NAME, FUNC_NAME, faas_arg); - assert_eq!(result4, expected_result); + let faas_arg = json!([ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8.1, + 9.1, + "fluence", + vec![0x13, 0x37] + ]); + let result4 = call_faas!(faas, MODULE_NAME, func_name, faas_arg); + assert_eq!(result4, expected_result); + }; + + test("all_types"); + test("all_ref_types"); } #[test] pub fn i32_type() { - const FUNC_NAME: &'static str = "i32_type"; + let test = |func_name: &str| { + let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) + .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) - .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); - let result1 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!({}), <_>::default()); - assert!(result1.is_err()); + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); - let result2 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!([]), <_>::default()); - assert!(result2.is_err()); + let expected_result = json!(3); + let result3 = call_faas!(faas, MODULE_NAME, func_name, json!({ "arg": 1 })); + assert_eq!(result3, expected_result); - let expected_result = json!(3); - let result3 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!({ "arg": 1 })); - assert_eq!(result3, expected_result); + let result4 = call_faas!(faas, MODULE_NAME, func_name, json!(1)); + assert_eq!(result4, expected_result); - let result4 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(1)); - assert_eq!(result4, expected_result); + let result5 = call_faas!(faas, MODULE_NAME, func_name, json!([[1]])); + assert_eq!(result5, expected_result); - let result5 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!([[1]])); - assert_eq!(result5, expected_result); + let value = std::i32::MAX - 2; + let result6 = call_faas!(faas, MODULE_NAME, func_name, json!(value)); + assert_eq!(result6, value + 2); - let value = std::i32::MAX - 2; - let result6 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(value)); - assert_eq!(result6, value + 2); + let value = std::i32::MIN; + let result7 = call_faas!(faas, MODULE_NAME, func_name, json!(value)); + assert_eq!(result7, value + 2); + }; - let value = std::i32::MIN; - let result7 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(value)); - assert_eq!(result7, value + 2); + test("i32_type"); + test("i32_ref_type"); } #[test] pub fn i64_type() { - const FUNC_NAME: &'static str = "i64_type"; - let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let result1 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!({}), <_>::default()); - assert!(result1.is_err()); + let mut test = |func_name: &str| { + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); - let result2 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!([]), <_>::default()); - assert!(result2.is_err()); + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); - let expected_result = json!(3); - let result3 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!({ "arg": 1 })); - assert_eq!(result3, expected_result); + let expected_result = json!(3); + let result3 = call_faas!(faas, MODULE_NAME, func_name, json!({ "arg": 1 })); + assert_eq!(result3, expected_result); - let result4 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(1)); - assert_eq!(result4, expected_result); + let result4 = call_faas!(faas, MODULE_NAME, func_name, json!(1)); + assert_eq!(result4, expected_result); - let result5 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!([1])); - assert_eq!(result5, expected_result); + let result5 = call_faas!(faas, MODULE_NAME, func_name, json!([1])); + assert_eq!(result5, expected_result); - let value = std::i64::MAX - 2; - let result6 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(value)); - assert_eq!(result6, value + 2); + let value = std::i64::MAX - 2; + let result6 = call_faas!(faas, MODULE_NAME, func_name, json!(value)); + assert_eq!(result6, value + 2); - let value = std::i64::MIN; - let result7 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(value)); - assert_eq!(result7, value + 2); + let value = std::i64::MIN; + let result7 = call_faas!(faas, MODULE_NAME, func_name, json!(value)); + assert_eq!(result7, value + 2); + }; + + test("i64_type"); + test("i64_ref_type"); } #[test] pub fn u32_type() { - const FUNC_NAME: &'static str = "u32_type"; - let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let result1 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!({}), <_>::default()); - assert!(result1.is_err()); + let mut test = |func_name: &str| { + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); - let result2 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!([]), <_>::default()); - assert!(result2.is_err()); + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); - let expected_result = json!(3); - let result3 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!({ "arg": 1 })); - assert_eq!(result3, expected_result); + let expected_result = json!(3); + let result3 = call_faas!(faas, MODULE_NAME, func_name, json!({ "arg": 1 })); + assert_eq!(result3, expected_result); - let result4 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(1)); - assert_eq!(result4, expected_result); + let result4 = call_faas!(faas, MODULE_NAME, func_name, json!(1)); + assert_eq!(result4, expected_result); + }; + + test("u32_type"); + test("u32_ref_type"); } #[test] pub fn u64_type() { - const FUNC_NAME: &'static str = "u64_type"; - let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let result1 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!({}), <_>::default()); - assert!(result1.is_err()); + let mut test = |func_name: &str| { + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); - let result2 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!([]), <_>::default()); - assert!(result2.is_err()); + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); - let expected_result = json!(3); - let result3 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!({ "arg": 1 })); - assert_eq!(result3, expected_result); + let expected_result = json!(3); + let result3 = call_faas!(faas, MODULE_NAME, func_name, json!({ "arg": 1 })); + assert_eq!(result3, expected_result); - let result4 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(1)); - assert_eq!(result4, expected_result); + let result4 = call_faas!(faas, MODULE_NAME, func_name, json!(1)); + assert_eq!(result4, expected_result); + }; + + test("u64_type"); + test("u64_ref_type"); } #[test] pub fn f32_type() { - const FUNC_NAME: &'static str = "f32_type"; - let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let result1 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!({}), <_>::default()); - assert!(result1.is_err()); + let mut test = |func_name: &str| { + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); - let result2 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!([]), <_>::default()); - assert!(result2.is_err()); + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); - let expected_result = json!(3.0); - let result3 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!({ "arg": 1.0 })); - assert_eq!(result3, expected_result); + let expected_result = json!(3.0); + let result3 = call_faas!(faas, MODULE_NAME, func_name, json!({ "arg": 1.0 })); + assert_eq!(result3, expected_result); - let result4 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(1.0)); - assert_eq!(result4, expected_result); + let result4 = call_faas!(faas, MODULE_NAME, func_name, json!(1.0)); + assert_eq!(result4, expected_result); - let value = std::f32::MAX - 2.0; - let result5 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(value)); - assert_eq!(result5, value + 2.0); + let value = std::f32::MAX - 2.0; + let result5 = call_faas!(faas, MODULE_NAME, func_name, json!(value)); + assert_eq!(result5, value + 2.0); - let value = std::f32::MIN; - let result6 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(value)); - assert_eq!(result6, value + 2.0); + let value = std::f32::MIN; + let result6 = call_faas!(faas, MODULE_NAME, func_name, json!(value)); + assert_eq!(result6, value + 2.0); + }; + + test("f32_type"); + test("f32_ref_type"); } #[test] pub fn f64_type() { - const FUNC_NAME: &'static str = "f64_type"; - let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let result1 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!({}), <_>::default()); - assert!(result1.is_err()); + let mut test = |func_name: &str| { + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); - let result2 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!([]), <_>::default()); - assert!(result2.is_err()); + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); - let expected_result = json!(3.0); - let result3 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!({ "arg": 1.0 })); - assert_eq!(result3, expected_result); + let expected_result = json!(3.0); + let result3 = call_faas!(faas, MODULE_NAME, func_name, json!({ "arg": 1.0 })); + assert_eq!(result3, expected_result); - let result4 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(1.0)); - assert_eq!(result4, expected_result); + let result4 = call_faas!(faas, MODULE_NAME, func_name, json!(1.0)); + assert_eq!(result4, expected_result); - let value = std::f64::MAX - 2.0; - let result5 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(value)); - assert_eq!(result5, value + 2.0); + let value = std::f64::MAX - 2.0; + let result5 = call_faas!(faas, MODULE_NAME, func_name, json!(value)); + assert_eq!(result5, value + 2.0); - let value = std::f64::MIN; - let result6 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(value)); - assert_eq!(result6, value + 2.0); + let value = std::f64::MIN; + let result6 = call_faas!(faas, MODULE_NAME, func_name, json!(value)); + assert_eq!(result6, value + 2.0); + }; + + test("f64_type"); + test("f64_ref_type"); } #[test] pub fn string_type() { - const FUNC_NAME: &'static str = "string_type"; + let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) + .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); + + let mut test = |func_name: &str| { + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); + + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); + + let expected_result = json!("Fluence_Fluence_Fluence_Fluence"); + let result3 = call_faas!(faas, MODULE_NAME, func_name, json!({ "arg": "Fluence" })); + assert_eq!(result3, expected_result); + + let result4 = call_faas!(faas, MODULE_NAME, func_name, json!("Fluence")); + assert_eq!(result4, expected_result); + }; + + test("string_type"); + test("string_ref_type"); +} + +#[test] +pub fn str_type() { + const FUNC_NAME: &'static str = "str_type"; let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); @@ -508,47 +637,53 @@ pub fn string_type() { #[test] pub fn bytearray_type() { - const FUNC_NAME: &'static str = "bytearray_type"; - let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let result1 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!({}), <_>::default()); - assert!(result1.is_err()); + let mut test = |func_name: &str| { + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); - let result2 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!([]), <_>::default()); - assert!(result2.is_err()); + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); - let expected_result = json!([0x13, 0x37, 1, 1]); - let result3 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!({ "arg": [0x13, 0x37] })); - assert_eq!(result3, expected_result); + let expected_result = json!([0x13, 0x37, 1, 1]); + let result3 = call_faas!(faas, MODULE_NAME, func_name, json!({ "arg": [0x13, 0x37] })); + assert_eq!(result3, expected_result); - let result4 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!([[0x13, 0x37]])); - assert_eq!(result4, expected_result); + let result4 = call_faas!(faas, MODULE_NAME, func_name, json!([[0x13, 0x37]])); + assert_eq!(result4, expected_result); - let result5 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!([[0x13]])); - assert_eq!(result5, json!([0x13, 1, 1])); + let result5 = call_faas!(faas, MODULE_NAME, func_name, json!([[0x13]])); + assert_eq!(result5, json!([0x13, 1, 1])); + }; + + test("bytearray_type"); + test("bytearray_ref_type"); } #[test] pub fn bool_type() { - const FUNC_NAME: &'static str = "bool_type"; - let mut faas = FluenceFaaS::with_raw_config(ARG_CONFIG.clone()) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let result1 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!({}), <_>::default()); - assert!(result1.is_err()); + let mut test = |func_name: &str| { + let result1 = faas.call_with_json(MODULE_NAME, func_name, json!({}), <_>::default()); + assert!(result1.is_err()); - let result2 = faas.call_with_json(MODULE_NAME, FUNC_NAME, json!([]), <_>::default()); - assert!(result2.is_err()); + let result2 = faas.call_with_json(MODULE_NAME, func_name, json!([]), <_>::default()); + assert!(result2.is_err()); - let expected_result = json!(1); - let result3 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!({ "arg": 0 })); - assert_eq!(result3, expected_result); + let expected_result = json!(1); + let result3 = call_faas!(faas, MODULE_NAME, func_name, json!({ "arg": 0 })); + assert_eq!(result3, expected_result); - let result4 = call_faas!(faas, MODULE_NAME, FUNC_NAME, json!(0)); - assert_eq!(result4, expected_result); + let result4 = call_faas!(faas, MODULE_NAME, func_name, json!(0)); + assert_eq!(result4, expected_result); + }; + + test("bool_type"); + test("bool_ref_type"); } #[test] diff --git a/fluence-faas/tests/records.rs b/fluence-faas/tests/records.rs index 6ec12e78..1818bf02 100644 --- a/fluence-faas/tests/records.rs +++ b/fluence-faas/tests/records.rs @@ -157,56 +157,61 @@ pub fn records() { } #[test] -fn inner_records() { - let inner_records_config_raw = std::fs::read("./tests/wasm_tests/inner_records/Config.toml") - .expect("../examples/greeting/artifacts/greeting.wasm should presence"); +fn records_passing() { + let inner_records_config_raw = std::fs::read("./tests/wasm_tests/records_passing/Config.toml") + .expect("./tests/wasm_tests/records_passing/Config.toml should presence"); - let mut inner_records_config: fluence_faas::TomlFaaSConfig = + let mut records_passing_config: fluence_faas::TomlFaaSConfig = toml::from_slice(&inner_records_config_raw) .expect("argument passing test config should be well-formed"); - inner_records_config.modules_dir = - Some(String::from("./tests/wasm_tests/inner_records/artifacts")); + records_passing_config.modules_dir = + Some(String::from("./tests/wasm_tests/records_passing/artifacts")); - let mut faas = FluenceFaaS::with_raw_config(inner_records_config) + let mut faas = FluenceFaaS::with_raw_config(records_passing_config) .unwrap_or_else(|e| panic!("can't create Fluence FaaS instance: {}", e)); - let result = faas - .call_with_json( - "inner_records_pure", - "test_record", - json!({ - "test_record": { - "test_record_0": { - "field_0": 0 - }, - "test_record_1": { - "field_0": 1, - "field_1": "", - "field_2": vec![1], + let mut test = |func_name: &str| { + let result = faas + .call_with_json( + "records_passing_pure", + func_name, + json!({ + "test_record": { "test_record_0": { - "field_0": 1 + "field_0": 0 + }, + "test_record_1": { + "field_0": 1, + "field_1": "", + "field_2": vec![1], + "test_record_0": { + "field_0": 1 + } } } - } - }), - <_>::default(), - ) - .unwrap_or_else(|e| panic!("can't invoke inner_records_pure: {:?}", e)); + }), + <_>::default(), + ) + .unwrap_or_else(|e| panic!("can't invoke inner_records_pure: {:?}", e)); - let right_result = json!({ + let right_result = json!({ "test_record_0": { "field_0": 1 }, "test_record_1": { "field_0": 1, - "field_1": "", - "field_2": vec![1], + "field_1": "fluence", + "field_2": vec![0x13, 0x37], "test_record_0": { - "field_0": 1 + "field_0": 5 } } - }); + }); - assert_eq!(result, right_result); + assert_eq!(result, right_result); + }; + + test("test_record"); + test("test_record_ref"); } diff --git a/fluence-faas/tests/wasm_tests/arguments_passing/Cargo.toml b/fluence-faas/tests/wasm_tests/arguments_passing/Cargo.toml index 62a63143..ba96f400 100644 --- a/fluence-faas/tests/wasm_tests/arguments_passing/Cargo.toml +++ b/fluence-faas/tests/wasm_tests/arguments_passing/Cargo.toml @@ -14,6 +14,5 @@ name = "arguments_passing_effector" path = "src/effector.rs" [dependencies] -#fluence = { git = "https://github.com/fluencelabs/rust-sdk" } fluence = { git = "https://github.com/fluencelabs/rust-sdk" } safe-transmute = "0.11.0" diff --git a/fluence-faas/tests/wasm_tests/arguments_passing/artifacts/arguments_passing_effector.wasm b/fluence-faas/tests/wasm_tests/arguments_passing/artifacts/arguments_passing_effector.wasm index cd0df43b8142212eeca10957dc95d8b247ba985b..5585b5750b7ade62407fe2c92bd6287a4ee7cda6 100755 GIT binary patch delta 20840 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 C+4Keg delta 16669 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 RysUNQiZ!d-*Ish*{{pkxid+By delta 18177 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, +) -> Vec { + let mut result = Vec::new(); + + result.push(*arg_0 as u8); + result.extend(safe_transmute::transmute_one_to_bytes(arg_1)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_2)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_3)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_4)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_5)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_6)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_7)); + result.extend(&arg_8.to_be_bytes()); + result.extend(&arg_9.to_be_bytes()); + result.extend(arg_10.as_bytes()); + result.extend(arg_11); + + result +} + #[fce] pub fn string_type(arg: String) -> String { format!("{}_{}", arg, arg) } +#[fce] +pub fn string_ref_type(arg: &String) -> String { + format!("{}_{}", arg, arg) +} + +#[fce] +pub fn str_type(arg: &str) -> String { + format!("{}_{}", arg, arg) +} + #[fce] pub fn bytearray_type(mut arg: Vec) -> Vec { arg.push(1); arg } +#[fce] +pub fn bytearray_ref_type(arg: &mut Vec) -> Vec { + arg.push(1); + arg.clone() +} + #[fce] pub fn bool_type(arg: bool) -> bool { !arg } +#[fce] +pub fn bool_ref_type(arg: &bool) -> bool { + !*arg +} + #[fce] pub fn f32_type(arg: f32) -> f32 { arg + 1.0 } +#[fce] +pub fn f32_ref_type(arg: &f32) -> f32 { + *arg + 1.0 +} + #[fce] pub fn f64_type(arg: f64) -> f64 { arg + 1.0 } +#[fce] +pub fn f64_ref_type(arg: &f64) -> f64 { + *arg + 1.0 +} + #[fce] pub fn u32_type(arg: u32) -> u32 { arg + 1 } +#[fce] +pub fn u32_ref_type(arg: &u32) -> u32 { + *arg + 1 +} + #[fce] pub fn u64_type(arg: u64) -> u64 { arg + 1 } +#[fce] +pub fn u64_ref_type(arg: &u64) -> u64 { + *arg + 1 +} + #[fce] pub fn i32_type(arg: i32) -> i32 { arg + 1 } +#[fce] +pub fn i32_ref_type(arg: &i32) -> i32 { + *arg + 1 +} + #[fce] pub fn i64_type(arg: i64) -> i64 { arg + 1 } +#[fce] +pub fn i64_ref_type(arg: &i64) -> i64 { + *arg + 1 +} + #[fce] pub fn empty_type() -> String { String::from("success") diff --git a/fluence-faas/tests/wasm_tests/arguments_passing/src/pure.rs b/fluence-faas/tests/wasm_tests/arguments_passing/src/pure.rs index b145a0e8..88bd0146 100644 --- a/fluence-faas/tests/wasm_tests/arguments_passing/src/pure.rs +++ b/fluence-faas/tests/wasm_tests/arguments_passing/src/pure.rs @@ -68,6 +68,43 @@ pub fn all_types( result } +#[fce] +pub fn all_ref_types( + arg_0: &i8, + arg_1: &i16, + arg_2: &i32, + arg_3: &i64, + arg_4: &u8, + arg_5: &u16, + arg_6: &u32, + arg_7: &u64, + arg_8: &f32, + arg_9: &f64, + arg_10: &String, + arg_11: &Vec, +) -> Vec { + let mut result = unsafe { + effector::all_ref_types( + arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10, arg_11, + ) + }; + + result.push(*arg_0 as u8); + result.extend(safe_transmute::transmute_one_to_bytes(arg_1)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_2)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_3)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_4)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_5)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_6)); + result.extend(safe_transmute::transmute_one_to_bytes(arg_7)); + result.extend(&arg_8.to_be_bytes()); + result.extend(&arg_9.to_be_bytes()); + result.extend(arg_10.as_bytes()); + result.extend(arg_11); + + result +} + #[fce] pub fn string_type(arg: String) -> String { let arg = unsafe { effector::string_type(arg) }; @@ -75,6 +112,20 @@ pub fn string_type(arg: String) -> String { format!("{}_{}", arg, arg) } +#[fce] +pub fn string_ref_type(arg: &String) -> String { + let arg = unsafe { effector::string_ref_type(arg) }; + + format!("{}_{}", arg, arg) +} + +#[fce] +pub fn str_type(arg: &str) -> String { + let arg = unsafe { effector::str_type(arg) }; + + format!("{}_{}", arg, arg) +} + #[fce] pub fn bytearray_type(arg: Vec) -> Vec { let mut arg = unsafe { effector::bytearray_type(arg) }; @@ -83,47 +134,96 @@ pub fn bytearray_type(arg: Vec) -> Vec { arg } +#[fce] +pub fn bytearray_ref_type(arg: &Vec) -> Vec { + let mut arg = unsafe { effector::bytearray_ref_type(arg) }; + + arg.push(1); + arg +} + #[fce] pub fn bool_type(arg: bool) -> bool { unsafe { effector::bool_type(arg) } } +#[fce] +pub fn bool_ref_type(arg: &bool) -> bool { + unsafe { effector::bool_ref_type(arg) } +} + #[fce] pub fn f32_type(arg: f32) -> f32 { let arg = unsafe { effector::f32_type(arg) }; arg + 1.0 } +#[fce] +pub fn f32_ref_type(arg: &f32) -> f32 { + let arg = unsafe { effector::f32_ref_type(arg) }; + arg + 1.0 +} + #[fce] pub fn f64_type(arg: f64) -> f64 { let arg = unsafe { effector::f64_type(arg) }; arg + 1.0 } +#[fce] +pub fn f64_ref_type(arg: &f64) -> f64 { + let arg = unsafe { effector::f64_ref_type(arg) }; + arg + 1.0 +} + #[fce] pub fn u32_type(arg: u32) -> u32 { let arg = unsafe { effector::u32_type(arg) }; arg + 1 } +#[fce] +pub fn u32_ref_type(arg: &u32) -> u32 { + let arg = unsafe { effector::u32_ref_type(arg) }; + arg + 1 +} + #[fce] pub fn u64_type(arg: u64) -> u64 { let arg = unsafe { effector::u64_type(arg) }; arg + 1 } +#[fce] +pub fn u64_ref_type(arg: &u64) -> u64 { + let arg = unsafe { effector::u64_ref_type(arg) }; + arg + 1 +} + #[fce] pub fn i32_type(arg: i32) -> i32 { let arg = unsafe { effector::i32_type(arg) }; arg + 1 } +#[fce] +pub fn i32_ref_type(arg: &i32) -> i32 { + let arg = unsafe { effector::i32_ref_type(arg) }; + arg + 1 +} + #[fce] pub fn i64_type(arg: i64) -> i64 { let arg = unsafe { effector::i64_type(arg) }; arg + 1 } +#[fce] +pub fn i64_ref_type(arg: &i64) -> i64 { + let arg = unsafe { effector::i64_ref_type(arg) }; + arg + 1 +} + #[fce] pub fn empty_type() -> String { unsafe { effector::empty_type() } @@ -150,19 +250,49 @@ mod effector { arg_11: Vec, ) -> Vec; + pub fn all_ref_types( + arg_0: &i8, + arg_1: &i16, + arg_2: &i32, + arg_3: &i64, + arg_4: &u8, + arg_5: &u16, + arg_6: &u32, + arg_7: &u64, + arg_8: &f32, + arg_9: &f64, + arg_10: &String, + arg_11: &Vec, + ) -> Vec; + pub fn string_type(arg: String) -> String; + pub fn string_ref_type(arg: &String) -> String; + + pub fn str_type(arg: &str) -> String; + pub fn bytearray_type(arg: Vec) -> Vec; + pub fn bytearray_ref_type(arg: &Vec) -> Vec; pub fn bool_type(arg: bool) -> bool; + pub fn bool_ref_type(arg: &bool) -> bool; pub fn f32_type(arg: f32) -> f32; + pub fn f32_ref_type(arg: &f32) -> f32; + pub fn f64_type(arg: f64) -> f64; + pub fn f64_ref_type(arg: &f64) -> f64; pub fn u32_type(arg: u32) -> u32; + pub fn u32_ref_type(arg: &u32) -> u32; + pub fn u64_type(arg: u64) -> u64; + pub fn u64_ref_type(arg: &u64) -> u64; pub fn i32_type(arg: i32) -> i32; + pub fn i32_ref_type(arg: &i32) -> i32; + pub fn i64_type(arg: i64) -> i64; + pub fn i64_ref_type(arg: &i64) -> i64; pub fn empty_type() -> String; } diff --git a/fluence-faas/tests/wasm_tests/arrays_passing/artifacts/arrays_passing_effector.wasm b/fluence-faas/tests/wasm_tests/arrays_passing/artifacts/arrays_passing_effector.wasm index cb8003c6ae2fa673384d65b3ad680820d9b26049..09b8c504bac1c6e04fec2c8b4095bcc77d30ac2a 100755 GIT binary patch delta 7614 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 delta 7607 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 F`(I+_-=6>g delta 8811 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 H`||Ssm4=eV!K_e#!cYP3tDMtiNdD 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 literal 0 HcmV?d00001 diff --git a/fluence-faas/tests/wasm_tests/inner_records/src/pure.rs b/fluence-faas/tests/wasm_tests/records_passing/src/effector.rs similarity index 80% rename from fluence-faas/tests/wasm_tests/inner_records/src/pure.rs rename to fluence-faas/tests/wasm_tests/records_passing/src/effector.rs index e66152f7..e01f79c5 100644 --- a/fluence-faas/tests/wasm_tests/inner_records/src/pure.rs +++ b/fluence-faas/tests/wasm_tests/records_passing/src/effector.rs @@ -17,11 +17,13 @@ use fluence::fce; #[fce] +#[derive(Clone, Debug, Default)] pub struct TestRecord0 { pub field_0: i32, } #[fce] +#[derive(Clone, Debug, Default)] pub struct TestRecord1 { pub field_0: i32, pub field_1: String, @@ -30,6 +32,7 @@ pub struct TestRecord1 { } #[fce] +#[derive(Clone, Debug, Default)] pub struct TestRecord2 { pub test_record_0: TestRecord0, pub test_record_1: TestRecord1, @@ -43,3 +46,10 @@ pub fn test_record(mut test_record: TestRecord2) -> TestRecord2 { test_record } + +#[fce] +pub fn test_record_ref(test_record: &mut TestRecord2) -> TestRecord2 { + test_record.test_record_0 = TestRecord0 { field_0: 1 }; + + test_record.clone() +} diff --git a/fluence-faas/tests/wasm_tests/records_passing/src/pure.rs b/fluence-faas/tests/wasm_tests/records_passing/src/pure.rs new file mode 100644 index 00000000..ffb938e6 --- /dev/null +++ b/fluence-faas/tests/wasm_tests/records_passing/src/pure.rs @@ -0,0 +1,84 @@ +/* + * Copyright 2020 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#![allow(improper_ctypes)] + +use fluence::fce; + +#[fce] +#[derive(Clone, Debug, Default)] +pub struct TestRecord0 { + pub field_0: i32, +} + +#[fce] +#[derive(Clone, Debug, Default)] +pub struct TestRecord1 { + pub field_0: i32, + pub field_1: String, + pub field_2: Vec, + pub test_record_0: TestRecord0, +} + +#[fce] +#[derive(Clone, Debug, Default)] +pub struct TestRecord2 { + pub test_record_0: TestRecord0, + pub test_record_1: TestRecord1, +} + +fn main() {} + +#[fce] +pub fn test_record(test_record: TestRecord2) -> TestRecord2 { + let mut test_record = unsafe { effector::test_record(test_record) }; + + test_record.test_record_1 = TestRecord1 { + field_0: 1, + field_1: "fluence".to_string(), + field_2: vec![0x13, 0x37], + test_record_0: TestRecord0 { field_0: 5 }, + }; + + test_record +} + +#[fce] +fn test_record_ref(test_record: &TestRecord2) -> TestRecord2 { + let mut test_record = unsafe { effector::test_record_ref(test_record) }; + + test_record.test_record_1 = TestRecord1 { + field_0: 1, + field_1: "fluence".to_string(), + field_2: vec![0x13, 0x37], + test_record_0: TestRecord0 { field_0: 5 }, + }; + + test_record +} + +mod effector { + use fluence::fce; + use super::TestRecord2; + + #[fce] + #[link(wasm_import_module = "records_passing_effector")] + extern "C" { + pub fn test_record(test_record: TestRecord2) -> TestRecord2; + + pub fn test_record_ref(test_record: &TestRecord2) -> TestRecord2; + } +}