#[global_allocator]
pub(crate) static ALLOC: dhat::Alloc = dhat::Alloc;
#[test]
fn valid_supergraph_schema() {
const SCHEMA: &str = "../examples/graphql/supergraph.graphql";
const MAX_BYTES_SUPERGRAPH: usize = 190_980;
const MAX_ALLOCATIONS_SUPERGRAPH: u64 = 6_206;
const MAX_BYTES_API_SCHEMA: usize = 253_193;
const MAX_ALLOCATIONS_API_SCHEMA: u64 = 6_898;
const MAX_BYTES_SUBGRAPHS: usize = 721_342;
const MAX_ALLOCATIONS_SUBGRAPHS: u64 = 15_477;
let schema = std::fs::read_to_string(SCHEMA).unwrap();
let _profiler = dhat::Profiler::builder().testing().build();
let supergraph =
apollo_federation::Supergraph::new(&schema).expect("supergraph should be valid");
let stats = dhat::HeapStats::get();
println!("Supergraph::new: {stats:?}");
dhat::assert!(stats.max_bytes < MAX_BYTES_SUPERGRAPH);
dhat::assert!(stats.total_blocks < MAX_ALLOCATIONS_SUPERGRAPH);
let api_options = apollo_federation::ApiSchemaOptions::default();
let _api_schema = supergraph.to_api_schema(api_options);
let stats = dhat::HeapStats::get();
println!("supergraph.to_api_schema: {stats:?}");
dhat::assert!(stats.max_bytes < MAX_BYTES_API_SCHEMA);
dhat::assert!(stats.total_blocks < MAX_ALLOCATIONS_API_SCHEMA);
let _subgraphs = supergraph
.extract_subgraphs()
.expect("subgraphs should be extracted");
let stats = dhat::HeapStats::get();
println!("supergraph.extract_subgraphs: {stats:?}");
dhat::assert!(stats.max_bytes < MAX_BYTES_SUBGRAPHS);
dhat::assert!(stats.total_blocks < MAX_ALLOCATIONS_SUBGRAPHS);
}