mirror of
https://github.com/fluencelabs/aquavm
synced 2025-03-15 20:40:50 +00:00
chore(testing-framework): a new behavior to print service call parameters/result out to console (#723)
This commit is contained in:
parent
523dd6b219
commit
1b7de5e659
@ -29,9 +29,9 @@ fn fail_with_rebubble_error() {
|
|||||||
(match 1 2 (null) )
|
(match 1 2 (null) )
|
||||||
(fail :error:)
|
(fail :error:)
|
||||||
)
|
)
|
||||||
(call "peer_id" ("m" "f1") [:error:] scalar1) ; behaviour = echo
|
(call "peer_id" ("m" "f1") [:error:] scalar1) ; dbg_behaviour = echo
|
||||||
)
|
)
|
||||||
(call "peer_id" ("m" "f2") [:error:] scalar2) ; behaviour = echo
|
(call "peer_id" ("m" "f2") [:error:] scalar2) ; dbg_behaviour = echo
|
||||||
)
|
)
|
||||||
"#
|
"#
|
||||||
.to_string();
|
.to_string();
|
||||||
|
@ -66,10 +66,7 @@ impl Behavior {
|
|||||||
use Behavior::*;
|
use Behavior::*;
|
||||||
|
|
||||||
match self {
|
match self {
|
||||||
Echo => {
|
Echo => echo_call_service()(params),
|
||||||
println!("echo_call_service() {:#?}", params);
|
|
||||||
echo_call_service()(params)
|
|
||||||
}
|
|
||||||
Unit => unit_call_service()(params),
|
Unit => unit_call_service()(params),
|
||||||
Function => CallServiceResult::ok(params.function_name.into()),
|
Function => CallServiceResult::ok(params.function_name.into()),
|
||||||
Service => CallServiceResult::ok(params.service_id.into()),
|
Service => CallServiceResult::ok(params.service_id.into()),
|
||||||
|
@ -54,6 +54,9 @@ pub enum ServiceDefinition {
|
|||||||
/// Some known service by name: "echo", "unit" (more to follow).
|
/// Some known service by name: "echo", "unit" (more to follow).
|
||||||
#[strum_discriminants(strum(serialize = "behaviour"))]
|
#[strum_discriminants(strum(serialize = "behaviour"))]
|
||||||
Behaviour(Behavior),
|
Behaviour(Behavior),
|
||||||
|
/// Same services as defined by the enum element above with dbg! applied to the arguments.
|
||||||
|
#[strum_discriminants(strum(serialize = "dbg_behaviour"))]
|
||||||
|
DbgBehaviour(Behavior),
|
||||||
/// Maps first argument to a value
|
/// Maps first argument to a value
|
||||||
#[strum_discriminants(strum(serialize = "map"))]
|
#[strum_discriminants(strum(serialize = "map"))]
|
||||||
Map(HashMap<String, JValue>),
|
Map(HashMap<String, JValue>),
|
||||||
@ -103,6 +106,7 @@ impl ServiceDefinition {
|
|||||||
call_map,
|
call_map,
|
||||||
} => call_seq_error(call_number_seq, call_map),
|
} => call_seq_error(call_number_seq, call_map),
|
||||||
ServiceDefinition::Behaviour(name) => name.call(params),
|
ServiceDefinition::Behaviour(name) => name.call(params),
|
||||||
|
ServiceDefinition::DbgBehaviour(name) => dbg!(name.call(dbg!(params))),
|
||||||
ServiceDefinition::Map(map) => call_map_service(map, params),
|
ServiceDefinition::Map(map) => call_map_service(map, params),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,6 +90,13 @@ pub fn parse_kw(inp: &str) -> IResult<&str, ServiceDefinition, ParseError> {
|
|||||||
.map(ServiceDefinition::seq_error)
|
.map(ServiceDefinition::seq_error)
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
map(
|
||||||
|
preceded(
|
||||||
|
pair(tag(ServiceTagName::DbgBehaviour.as_ref()), equal()),
|
||||||
|
cut(parse_behaviour),
|
||||||
|
),
|
||||||
|
ServiceDefinition::DbgBehaviour,
|
||||||
|
),
|
||||||
map(
|
map(
|
||||||
preceded(
|
preceded(
|
||||||
pair(tag(ServiceTagName::Behaviour.as_ref()), equal()),
|
pair(tag(ServiceTagName::Behaviour.as_ref()), equal()),
|
||||||
@ -230,6 +237,12 @@ mod tests {
|
|||||||
assert_eq!(res, Ok(ServiceDefinition::Behaviour(Behavior::Echo)),);
|
assert_eq!(res, Ok(ServiceDefinition::Behaviour(Behavior::Echo)),);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dbg_behaviour() {
|
||||||
|
let res = ServiceDefinition::from_str(r#"dbg_behaviour=echo"#);
|
||||||
|
assert_eq!(res, Ok(ServiceDefinition::DbgBehaviour(Behavior::Echo)),);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_map() {
|
fn test_map() {
|
||||||
let res = ServiceDefinition::from_str(r#"map = {"42": [], "a": 2}"#);
|
let res = ServiceDefinition::from_str(r#"map = {"42": [], "a": 2}"#);
|
||||||
|
@ -771,14 +771,12 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
fn run_behaviour_service(peer_name: &str, air_script: &str) {
|
||||||
fn test_behaviour_service() {
|
|
||||||
let peer_name = "peer1";
|
|
||||||
let exec = AirScriptExecutor::<NativeAirRunner>::new(
|
let exec = AirScriptExecutor::<NativeAirRunner>::new(
|
||||||
TestRunParameters::from_init_peer_id(peer_name),
|
TestRunParameters::from_init_peer_id(peer_name),
|
||||||
vec![],
|
vec![],
|
||||||
std::iter::empty(),
|
std::iter::empty(),
|
||||||
r#"(call "peer1" ("service" "func") [1 22] arg) ; behaviour=service"#,
|
air_script,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
@ -802,14 +800,28 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_behaviour_function() {
|
fn test_behaviour_service() {
|
||||||
let peer_name = "peer1";
|
let peer_name = "peer1";
|
||||||
|
let air_script =
|
||||||
|
&format!(r#"(call "{peer_name}" ("service" "func") [1 22] arg) ; behaviour=service"#);
|
||||||
|
run_behaviour_service(peer_name, air_script)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dbg_behaviour_service() {
|
||||||
|
let peer_name = "peer1";
|
||||||
|
let air_script = &format!(
|
||||||
|
r#"(call "{peer_name}" ("service" "func") [1 22] arg) ; dbg_behaviour=service"#
|
||||||
|
);
|
||||||
|
run_behaviour_service(peer_name, air_script)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run_behaviour_function(peer_name: &str, air_script: &str) {
|
||||||
let exec = AirScriptExecutor::<NativeAirRunner>::new(
|
let exec = AirScriptExecutor::<NativeAirRunner>::new(
|
||||||
TestRunParameters::from_init_peer_id(peer_name),
|
TestRunParameters::from_init_peer_id(peer_name),
|
||||||
vec![],
|
vec![],
|
||||||
std::iter::empty(),
|
std::iter::empty(),
|
||||||
r#"(call "peer1" ("service" "func") [1 22] arg) ; behaviour=function"#,
|
air_script,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
@ -833,14 +845,28 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_behaviour_arg() {
|
fn test_behaviour_function() {
|
||||||
let peer_name = "peer1";
|
let peer_name = "peer1";
|
||||||
|
let air_script =
|
||||||
|
&format!(r#"(call "{peer_name}" ("service" "func") [1 22] arg) ; behaviour=function"#);
|
||||||
|
run_behaviour_function(peer_name, air_script)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dbg_behaviour_function() {
|
||||||
|
let peer_name = "peer1";
|
||||||
|
let air_script = &format!(
|
||||||
|
r#"(call "{peer_name}" ("service" "func") [1 22] arg) ; dbg_behaviour=function"#
|
||||||
|
);
|
||||||
|
run_behaviour_function(peer_name, air_script)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run_behaviour_arg(peer_name: &str, air_script: &str) {
|
||||||
let exec = AirScriptExecutor::<NativeAirRunner>::new(
|
let exec = AirScriptExecutor::<NativeAirRunner>::new(
|
||||||
TestRunParameters::from_init_peer_id(peer_name),
|
TestRunParameters::from_init_peer_id(peer_name),
|
||||||
vec![],
|
vec![],
|
||||||
std::iter::empty(),
|
std::iter::empty(),
|
||||||
r#"(call "peer1" ("service" "func") [1 22] arg) ; behaviour=arg.1"#,
|
air_script,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
@ -864,15 +890,31 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_behaviour_tetraplet() {
|
fn test_behaviour_arg() {
|
||||||
let peer_name = "peer1";
|
let peer_name = "peer1";
|
||||||
|
let air_script =
|
||||||
|
&format!(r#"(call "{peer_name}" ("service" "func") [1 22] arg) ; behaviour=arg.1"#);
|
||||||
|
|
||||||
|
run_behaviour_arg(peer_name, air_script)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dbg_behaviour_arg() {
|
||||||
|
let peer_name = "peer1";
|
||||||
|
let air_script =
|
||||||
|
&format!(r#"(call "{peer_name}" ("service" "func") [1 22] arg) ; dbg_behaviour=arg.1"#);
|
||||||
|
|
||||||
|
run_behaviour_arg(peer_name, air_script)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run_behaviour_tetraplet(peer_name: &str, air_script: &str) {
|
||||||
let (_peer_pk, peer_id) = derive_dummy_keypair(peer_name);
|
let (_peer_pk, peer_id) = derive_dummy_keypair(peer_name);
|
||||||
|
|
||||||
let exec = AirScriptExecutor::<NativeAirRunner>::new(
|
let exec = AirScriptExecutor::<NativeAirRunner>::new(
|
||||||
TestRunParameters::from_init_peer_id(peer_name),
|
TestRunParameters::from_init_peer_id(peer_name),
|
||||||
vec![],
|
vec![],
|
||||||
std::iter::empty(),
|
std::iter::empty(),
|
||||||
&format!(r#"(call "{peer_name}" ("service" "func") [1 22] arg) ; behaviour=tetraplet"#),
|
air_script,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
@ -904,4 +946,21 @@ mod tests {
|
|||||||
)]),
|
)]),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_behaviour_tetraplet() {
|
||||||
|
let peer_name = "peer1";
|
||||||
|
let air_script =
|
||||||
|
&format!(r#"(call "{peer_name}" ("service" "func") [1 22] arg) ; behaviour=tetraplet"#);
|
||||||
|
run_behaviour_tetraplet(peer_name, air_script)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dbg_behaviour_tetraplet() {
|
||||||
|
let peer_name = "peer1";
|
||||||
|
let air_script = &format!(
|
||||||
|
r#"(call "{peer_name}" ("service" "func") [1 22] arg) ; dbg_behaviour=tetraplet"#
|
||||||
|
);
|
||||||
|
run_behaviour_tetraplet(peer_name, air_script)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user