blob: 9aa4eb04a97ec7892e464709867d52fb0d1db7b7 [file] [log] [blame]
// Copyright 2021 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,
fidl_fuchsia_driver_test as fdt,
fuchsia_component_test::RealmBuilder,
fuchsia_driver_test::{DriverTestRealmBuilder, DriverTestRealmInstance},
};
#[fuchsia::test]
async fn load_package_firmware_test() -> Result<(), Error> {
// Create the RealmBuilder.
let builder = RealmBuilder::new().await?;
builder.driver_test_realm_setup().await?;
let instance = builder.build().await?;
// Start DriverTestRealm
let args = fdt::RealmArgs {
root_driver: Some("fuchsia-boot:///dtr#meta/test-parent-sys.cm".to_string()),
..Default::default()
};
instance.driver_test_realm_start(args).await?;
// Connect to our driver.
let dev = instance.driver_test_realm_connect_to_dev()?;
let driver_proxy = device_watcher::recursive_wait_and_open::<
fidl_fuchsia_device_firmware_test::TestDeviceMarker,
>(&dev, "sys/test/ddk-firmware-test-device-0")
.await?;
// Check that we can load firmware from our package.
driver_proxy.load_firmware("test-firmware").await?.unwrap();
// Check that loading unknown name fails.
assert_eq!(
driver_proxy.load_firmware("test-bad").await?,
Err(fuchsia_zircon::sys::ZX_ERR_NOT_FOUND)
);
Ok(())
}