in executor/src/mesapy.rs [105:177]
fn test_mesapy() {
let py_args = FunctionArguments::default();
let py_payload = r#"
def entrypoint(argv):
in_file_id = "in_f1"
out_file_id = "out_f1"
# open input via built-in teaclave_open
with teaclave_open(in_file_id, "rb") as f:
line = f.readline()
assert line == "Hello\n"
# open input via teaclave module
from teaclave import open
with open(in_file_id, "rb") as f:
line = f.readline()
assert line == "Hello\n"
# open invalid input
try:
teaclave_open("invalid_key", "rb")
except RuntimeError as e:
assert e.message == "fileio_init: teaclave_ffi_error"
# open invalid option
try:
teaclave_open(in_file_id, "r")
except RuntimeError as e:
assert e.message == "Teaclave Not Supported"
# write valid output
with teaclave_open(out_file_id, "wb") as f:
f.write("This message is from Mesapy!")
# open invalid output
try:
teaclave_open("invalid_key", "wb")
except RuntimeError as e:
assert e.message == "fileio_init: teaclave_ffi_error"
# open invalid option
try:
teaclave_open(out_file_id, "w")
except RuntimeError as e:
assert e.message == "Teaclave Not Supported"
return
"#;
let input = "fixtures/functions/mesapy/input.txt";
let output = "fixtures/functions/mesapy/output.txt";
let input_info =
StagedFileInfo::new(input, TeaclaveFile128Key::random(), FileAuthTag::mock());
let output_info =
StagedFileInfo::new(output, TeaclaveFile128Key::random(), FileAuthTag::mock());
let input_files = StagedFiles::new(hashmap!("in_f1" => input_info));
let output_files = StagedFiles::new(hashmap!("out_f1" => output_info));
let runtime = Box::new(RawIoRuntime::new(input_files, output_files));
let function = MesaPy::default();
let summary = function
.execute(
"".to_string(),
py_args,
py_payload.as_bytes().to_vec(),
runtime,
)
.unwrap();
assert_eq!(summary, "");
}