mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-09-02 17:15:43 +00:00
move new_request to tests
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
#![cfg(all(feature = "magic-dns", feature = "tun"))]
|
#![cfg(all(feature = "magic-dns", feature = "tun"))]
|
||||||
|
|
||||||
use std::net::{Ipv4Addr, SocketAddr};
|
use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4};
|
||||||
use std::str::FromStr as _;
|
use std::str::FromStr as _;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::time::{Duration, Instant};
|
use std::time::{Duration, Instant};
|
||||||
@@ -11,7 +11,12 @@ use hickory_proto::rr;
|
|||||||
use hickory_proto::runtime::TokioRuntimeProvider;
|
use hickory_proto::runtime::TokioRuntimeProvider;
|
||||||
use hickory_proto::udp::UdpClientStream;
|
use hickory_proto::udp::UdpClientStream;
|
||||||
use tokio::sync::Notify;
|
use tokio::sync::Notify;
|
||||||
|
use hickory_proto::rr::{Name, RecordType};
|
||||||
|
use hickory_server::server::Request;
|
||||||
|
use hickory_proto::op::{Message, MessageType, OpCode, Query};
|
||||||
|
use hickory_proto::serialize::binary::{BinDecodable, BinEncodable, BinEncoder};
|
||||||
|
use hickory_server::authority::MessageRequest;
|
||||||
|
use hickory_proto::xfer::Protocol;
|
||||||
use crate::common::global_ctx::tests::get_mock_global_ctx;
|
use crate::common::global_ctx::tests::get_mock_global_ctx;
|
||||||
use crate::connector::udp_hole_punch::tests::replace_stun_info_collector;
|
use crate::connector::udp_hole_punch::tests::replace_stun_info_collector;
|
||||||
use crate::dns::node::DnsNode;
|
use crate::dns::node::DnsNode;
|
||||||
@@ -141,3 +146,22 @@ pub async fn check_dns_record_missing(fake_ip: &Ipv4Addr, domain: &str) {
|
|||||||
let _ = background_task.await;
|
let _ = background_task.await;
|
||||||
assert!(response.answers().is_empty(), "{:?}", response.answers());
|
assert!(response.answers().is_empty(), "{:?}", response.answers());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn new_request(name: &str, rtype: RecordType) -> anyhow::Result<Request> {
|
||||||
|
let mut query = Message::new();
|
||||||
|
query.set_id(0);
|
||||||
|
query.set_message_type(MessageType::Query);
|
||||||
|
query.set_op_code(OpCode::Query);
|
||||||
|
query.set_recursion_desired(true);
|
||||||
|
query.add_query(Query::query(Name::from_ascii(name)?, rtype));
|
||||||
|
|
||||||
|
let mut request = Vec::new();
|
||||||
|
let mut encoder = BinEncoder::new(&mut request);
|
||||||
|
query.emit(&mut encoder)?;
|
||||||
|
|
||||||
|
Ok(Request::new(
|
||||||
|
MessageRequest::from_bytes(&request)?,
|
||||||
|
SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0).into(),
|
||||||
|
Protocol::Udp,
|
||||||
|
))
|
||||||
|
}
|
||||||
@@ -167,21 +167,18 @@ mod tests {
|
|||||||
use crate::dns::config::DnsConfig;
|
use crate::dns::config::DnsConfig;
|
||||||
use crate::dns::utils::response::ResponseHandle;
|
use crate::dns::utils::response::ResponseHandle;
|
||||||
use hickory_client::client::{Client, ClientHandle};
|
use hickory_client::client::{Client, ClientHandle};
|
||||||
use hickory_proto::op::{Message, MessageType, OpCode, Query, ResponseCode};
|
use hickory_proto::op::ResponseCode;
|
||||||
use hickory_proto::rr::{rdata, DNSClass, Name, RData, Record, RecordType, RrsetRecords};
|
use hickory_proto::rr::{rdata, DNSClass, Name, RData, Record, RecordType, RrsetRecords};
|
||||||
use hickory_proto::runtime::TokioRuntimeProvider;
|
use hickory_proto::runtime::TokioRuntimeProvider;
|
||||||
use hickory_proto::serialize::binary::{BinDecodable, BinEncodable, BinEncoder};
|
|
||||||
use hickory_proto::udp::UdpClientStream;
|
use hickory_proto::udp::UdpClientStream;
|
||||||
use hickory_proto::xfer::Protocol;
|
use hickory_server::authority::Catalog;
|
||||||
use hickory_server::authority::{Catalog, MessageRequest};
|
|
||||||
use hickory_server::server::Request;
|
|
||||||
use hickory_server::ServerFuture;
|
use hickory_server::ServerFuture;
|
||||||
use std::net::{Ipv4Addr, SocketAddrV4};
|
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use tokio::net::UdpSocket;
|
use tokio::net::UdpSocket;
|
||||||
use tokio::spawn;
|
use tokio::spawn;
|
||||||
use tokio::time::timeout;
|
use tokio::time::timeout;
|
||||||
|
use crate::dns;
|
||||||
|
|
||||||
impl Zone {
|
impl Zone {
|
||||||
// TODO: remove this
|
// TODO: remove this
|
||||||
@@ -239,25 +236,6 @@ mod tests {
|
|||||||
|
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
fn new_request(name: &str, rtype: RecordType) -> anyhow::Result<Request> {
|
|
||||||
let mut query = Message::new();
|
|
||||||
query.set_id(0);
|
|
||||||
query.set_message_type(MessageType::Query);
|
|
||||||
query.set_op_code(OpCode::Query);
|
|
||||||
query.set_recursion_desired(true);
|
|
||||||
query.add_query(Query::query(Name::from_ascii(name)?, rtype));
|
|
||||||
|
|
||||||
let mut request = Vec::new();
|
|
||||||
let mut encoder = BinEncoder::new(&mut request);
|
|
||||||
query.emit(&mut encoder)?;
|
|
||||||
|
|
||||||
Ok(Request::new(
|
|
||||||
MessageRequest::from_bytes(&request)?,
|
|
||||||
SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0).into(),
|
|
||||||
Protocol::Udp,
|
|
||||||
))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_config() -> anyhow::Result<()> {
|
async fn test_config() -> anyhow::Result<()> {
|
||||||
log::tests::init();
|
log::tests::init();
|
||||||
@@ -347,7 +325,7 @@ mod tests {
|
|||||||
authorities.extend(zone.create_forward_authority().into_iter());
|
authorities.extend(zone.create_forward_authority().into_iter());
|
||||||
catalog.upsert(zone.origin.clone(), authorities);
|
catalog.upsert(zone.origin.clone(), authorities);
|
||||||
|
|
||||||
let request = new_request("et.top.", RecordType::A)?;
|
let request = dns::tests::new_request("et.top.", RecordType::A)?;
|
||||||
|
|
||||||
let response = ResponseHandle::new(512);
|
let response = ResponseHandle::new(512);
|
||||||
let info = catalog.lookup(&request, None, response.clone()).await;
|
let info = catalog.lookup(&request, None, response.clone()).await;
|
||||||
@@ -359,14 +337,14 @@ mod tests {
|
|||||||
vec![Zone::system().create_forward_authority().unwrap()],
|
vec![Zone::system().create_forward_authority().unwrap()],
|
||||||
);
|
);
|
||||||
|
|
||||||
let request = new_request("example.com", RecordType::A)?;
|
let request = dns::tests::new_request("example.com", RecordType::A)?;
|
||||||
|
|
||||||
let response = ResponseHandle::new(512);
|
let response = ResponseHandle::new(512);
|
||||||
let info = catalog.lookup(&request, None, response.clone()).await;
|
let info = catalog.lookup(&request, None, response.clone()).await;
|
||||||
|
|
||||||
assert_eq!(info.response_code(), ResponseCode::NoError);
|
assert_eq!(info.response_code(), ResponseCode::NoError);
|
||||||
|
|
||||||
let request = new_request("example.invalid", RecordType::A)?;
|
let request = dns::tests::new_request("example.invalid", RecordType::A)?;
|
||||||
|
|
||||||
let response = ResponseHandle::new(512);
|
let response = ResponseHandle::new(512);
|
||||||
let info = catalog.lookup(&request, None, response.clone()).await;
|
let info = catalog.lookup(&request, None, response.clone()).await;
|
||||||
|
|||||||
Reference in New Issue
Block a user