blob: 74d322cc8c074fcb184ecdeb678227531f7f701d [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use anyhow::Error;
use diagnostics_data::{Data, Logs};
use example_tester::{Client, Server, TestKind, assert_filtered_logs_eq_to_golden, run_test};
use fidl::prelude::*;
use fidl_examples_canvas_clientrequesteddraw::InstanceMarker;
use fuchsia_async as fasync;
use fuchsia_component_test::{ChildRef, RealmBuilder};
#[fasync::run_singlethreaded(test)]
async fn test_draw_success() -> Result<(), Error> {
let test_name = "test_draw_success";
let client = Client::new(test_name, "#meta/canvas_clientrequesteddraw_client.cm");
let server = Server::new(test_name, "#meta/canvas_clientrequesteddraw_server.cm");
let filter = |raw_log: &&Data<Logs>| {
let msg = raw_log.payload_message().expect("payload not found").properties[0]
.string()
.expect("message is not string");
// C++ warning emitted when killing a thread.
if msg.contains("libc++abi: terminating") {
return false;
}
true
};
run_test(
InstanceMarker::PROTOCOL_NAME,
TestKind::ClientAndServer { client: &client, server: &server },
|builder: RealmBuilder, client: ChildRef| async move {
builder.init_mutable_config_to_empty(&client).await?;
builder
.set_config_value(
&client,
"script",
vec![
"-5,0:0,0",
"-2,2:5,6",
"PUSH",
"4,-3:-2,-2",
"WAIT",
"6,-1:7,0",
"7,-8:-4,3",
"PUSH",
"WAIT",
]
.into(),
)
.await?;
Ok::<(RealmBuilder, ChildRef), Error>((builder, client))
},
|log_reader| {
let client_clone = client.clone();
let server_clone = server.clone();
async move {
assert_filtered_logs_eq_to_golden(&log_reader, &client_clone, filter).await;
assert_filtered_logs_eq_to_golden(&log_reader, &server_clone, filter).await;
}
},
)
.await
}