From 519bd1ed7be0f9e55a92edcde47ff53099fe0c91 Mon Sep 17 00:00:00 2001 From: Noor Date: Wed, 7 May 2025 15:15:27 +0530 Subject: [PATCH] test vm creation timeout format tests seperated vm tests into its module --- tests/{grpc_test.rs => grpc_general_test.rs} | 48 ----------- tests/grpc_vm_cli_test.rs | 90 ++++++++++++++++++++ 2 files changed, 90 insertions(+), 48 deletions(-) rename tests/{grpc_test.rs => grpc_general_test.rs} (81%) create mode 100644 tests/grpc_vm_cli_test.rs diff --git a/tests/grpc_test.rs b/tests/grpc_general_test.rs similarity index 81% rename from tests/grpc_test.rs rename to tests/grpc_general_test.rs index 4579a47..3ba6249 100644 --- a/tests/grpc_test.rs +++ b/tests/grpc_general_test.rs @@ -7,8 +7,6 @@ use common::vm_daemon_utils::mock_vm_daemon; use detee_shared::common_proto::{Empty, Pubkey}; use detee_shared::general_proto::brain_general_cli_client::BrainGeneralCliClient; use detee_shared::general_proto::AirdropReq; -use detee_shared::vm_proto::brain_vm_cli_client::BrainVmCliClient; -use detee_shared::vm_proto::ListVmContractsReq; use futures::StreamExt; use itertools::Itertools; use std::vec; @@ -113,18 +111,6 @@ async fn test_general_airdrop() { assert_eq!(acc_bal_admin_3.balance, airdrop_amount * AIRDROP_MULTIPLE); } -#[tokio::test] -async fn test_vm_creation() { - let db = prepare_test_db().await.unwrap(); - - let brain_channel = run_service_for_stream().await.unwrap(); - let daemon_key = mock_vm_daemon(&brain_channel).await.unwrap(); - - let key = Key::new(); - - let _ = create_new_vm(&db, &key, &daemon_key, &brain_channel).await; -} - #[tokio::test] async fn test_report_node() { let db = prepare_test_db().await.unwrap(); @@ -191,37 +177,3 @@ async fn test_list_operators() { assert!(!operators.is_empty()) } - -#[tokio::test] -// TODO: create vm for this user before testing this -async fn test_list_vm_contracts() { - prepare_test_db().await.unwrap(); - - let channel = run_service_for_stream().await.unwrap(); - let mut client = BrainVmCliClient::new(channel); - - let key = Key::new(); - let pubkey = key.pubkey.clone(); - - let req_data = - ListVmContractsReq { wallet: pubkey, uuid: String::from("uuid"), as_operator: false }; - - let mut grpc_stream = - client.list_vm_contracts(key.sign_request(req_data).unwrap()).await.unwrap().into_inner(); - - let mut vm_contracts = Vec::new(); - while let Some(stream_update) = grpc_stream.next().await { - match stream_update { - Ok(vm_c) => { - vm_contracts.push(vm_c); - } - Err(e) => { - panic!("Received error instead of vm_contracts: {e:?}"); - } - } - } - - assert!(vm_contracts.is_empty()) - - // verify report in db -} diff --git a/tests/grpc_vm_cli_test.rs b/tests/grpc_vm_cli_test.rs new file mode 100644 index 0000000..d66be88 --- /dev/null +++ b/tests/grpc_vm_cli_test.rs @@ -0,0 +1,90 @@ +use common::prepare_test_env::{prepare_test_db, run_service_for_stream}; +use common::test_utils::Key; +use common::vm_cli_utils::create_new_vm; +use common::vm_daemon_utils::{mock_vm_daemon, register_vm_node}; +use detee_shared::vm_proto::brain_vm_cli_client::BrainVmCliClient; +use detee_shared::vm_proto::brain_vm_daemon_client::BrainVmDaemonClient; +use detee_shared::vm_proto::{ListVmContractsReq, NewVmReq}; +use futures::StreamExt; +use std::vec; + +mod common; + +#[tokio::test] +async fn test_vm_creation() { + let db = prepare_test_db().await.unwrap(); + // env_logger::builder().filter_level(log::LevelFilter::Error).init(); + + let brain_channel = run_service_for_stream().await.unwrap(); + let daemon_key = mock_vm_daemon(&brain_channel).await.unwrap(); + + let key = Key::new(); + + let _ = create_new_vm(&db, &key, &daemon_key, &brain_channel).await; +} + +#[tokio::test] +async fn test_vm_creation_timeout() { + prepare_test_db().await.unwrap(); + // env_logger::builder().filter_level(log::LevelFilter::Error).init(); + + let brain_channel = run_service_for_stream().await.unwrap(); + let mut daemon_client = BrainVmDaemonClient::new(brain_channel.clone()); + let daemon_key = Key::new(); + + register_vm_node(&mut daemon_client, &daemon_key, &Key::new().pubkey).await.unwrap(); + + let key = Key::new(); + + let new_vm_req = NewVmReq { + admin_pubkey: key.pubkey.clone(), + node_pubkey: daemon_key.pubkey, + price_per_unit: 1200, + extra_ports: vec![8080, 8081], + locked_nano: 0, + ..Default::default() + }; + + let mut client_vm_cli = BrainVmCliClient::new(brain_channel.clone()); + let timeout_error = + client_vm_cli.new_vm(key.sign_request(new_vm_req).unwrap()).await.err().unwrap(); + + assert_eq!( + timeout_error.message(), + "Request failed due to timeout. Please try again later or contact the DeTEE devs team." + ) +} + +#[tokio::test] +// TODO: create vm for this user before testing this +async fn test_list_vm_contracts() { + prepare_test_db().await.unwrap(); + + let channel = run_service_for_stream().await.unwrap(); + let mut client = BrainVmCliClient::new(channel); + + let key = Key::new(); + let pubkey = key.pubkey.clone(); + + let req_data = + ListVmContractsReq { wallet: pubkey, uuid: String::from("uuid"), as_operator: false }; + + let mut grpc_stream = + client.list_vm_contracts(key.sign_request(req_data).unwrap()).await.unwrap().into_inner(); + + let mut vm_contracts = Vec::new(); + while let Some(stream_update) = grpc_stream.next().await { + match stream_update { + Ok(vm_c) => { + vm_contracts.push(vm_c); + } + Err(e) => { + panic!("Received error instead of vm_contracts: {e:?}"); + } + } + } + + assert!(vm_contracts.is_empty()) + + // verify report in db +}