reactive_graph_client/client/runtime/instance/queries/
get_instance_info.rs1#[cynic::schema_for_derives(file = r#"../../schema/graphql/reactive-graph-runtime-schema.graphql"#, module = "crate::schema_runtime::schema")]
2pub mod queries {
3 use crate::schema_runtime::instance::InstanceInfo;
4
5 #[derive(cynic::QueryFragment, Debug)]
6 #[cynic(graphql_type = "Query")]
7 pub struct GetInstanceInfo {
8 pub instance_info: InstanceInfo,
9 }
10
11 pub fn get_instance_info() -> cynic::Operation<GetInstanceInfo, ()> {
12 use cynic::QueryBuilder;
13 GetInstanceInfo::build(())
14 }
15}
16
17#[cfg(all(test, feature = "integration-tests"))]
18pub mod test {
19 use crate::ReactiveGraphClient;
20 use reactive_graph_runtime_api::Runtime;
21 use reactive_graph_runtime_impl::RuntimeBuilder;
22 use std::sync::Arc;
23 use std::time::Duration;
24 use tokio::time::sleep;
25
26 #[tokio::test(flavor = "multi_thread")]
27 async fn test_get_instance_info() {
28 RuntimeBuilder::new()
29 .ignore_config_files()
30 .disable_all_plugins(true)
31 .instance_name("iojasdf")
32 .instance_description("oijasdfnmei")
33 .pick_free_port()
34 .init()
35 .await
36 .post_init()
37 .await
38 .spawn()
39 .await
40 .with_runtime(|runtime: Arc<dyn Runtime + Send + Sync>| async move {
41 sleep(Duration::from_millis(2000)).await;
42
43 let rt_instance_info = runtime.get_instance_service().get_instance_info();
45 let rt_address = rt_instance_info.address();
46
47 let client = ReactiveGraphClient::new(rt_address.clone()).expect("Cannot create client");
49
50 let instance_info = client.runtime().instance().get_instance_info().await.expect("Cannot fetch instance info");
52
53 assert_eq!(instance_info.address.hostname, rt_address.hostname);
54 assert_eq!(u16::try_from(instance_info.address.port).expect("invalid port number"), rt_address.port);
55 assert_eq!(instance_info.address.secure, rt_address.secure);
56 assert_eq!(instance_info.name, rt_instance_info.name);
57 assert_eq!(instance_info, rt_instance_info);
58 })
59 .await
60 .stop()
61 .await
62 .pre_shutdown()
63 .await
64 .shutdown()
65 .await;
66 }
67}