blob: 97ce4477587eb743c63c09dda1f46847c8f91e51 [file] [log] [blame]
// Copyright 2020 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,
fuchsia_async as fasync, fuchsia_syslog as syslog,
log::*,
test_utils_lib::{
events::{Event, Stopped},
matcher::EventMatcher,
opaque_test::OpaqueTest,
sequence::{EventSequence, Ordering},
},
};
#[fasync::run_singlethreaded(test)]
async fn scoped_instances() -> Result<(), Error> {
syslog::init_with_tags(&["fuchsia_component_v2_test"]).expect("could not initialize logging");
let test =
OpaqueTest::default("fuchsia-pkg://fuchsia.com/fuchsia-component-tests#meta/realm.cm")
.await?;
let mut event_source = test.connect_to_event_source().await?;
let event = EventMatcher::ok().r#type(Stopped::TYPE).moniker("./coll:auto-*".to_string());
let expected_events: Vec<_> = (0..3).map(|_| event.clone()).collect();
let expectation = EventSequence::new()
.all_of(expected_events, Ordering::Ordered)
.subscribe_and_expect(&mut event_source)
.await?;
event_source.start_component_tree().await;
info!("Waiting for scoped instances to be destroyed");
expectation.await?;
Ok(())
}