tests: add ipam tests

Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
This commit is contained in:
Stefan Hanreich 2024-11-12 13:25:54 +01:00 committed by Thomas Lamprecht
parent 021536ea4e
commit 33c67da5a5
2 changed files with 71 additions and 0 deletions

View File

@ -5,11 +5,13 @@ use std::{
use proxmox_ve_config::{
firewall::types::{address::IpRange, Cidr},
guest::vm::MacAddress,
sdn::{
config::{
RunningConfig, SdnConfig, SdnConfigError, SubnetConfig, VnetConfig, ZoneConfig,
ZoneType,
},
ipam::{Ipam, IpamDataVm, IpamEntry, IpamJson},
SubnetName, VnetName, ZoneName,
},
};
@ -142,3 +144,46 @@ fn sdn_config() {
Err(SdnConfigError::DuplicateVnetName),
)
}
#[test]
fn parse_ipam() {
let ipam_json: IpamJson = serde_json::from_str(include_str!("resources/ipam.db")).unwrap();
let ipam = Ipam::try_from(ipam_json).unwrap();
let zone_name = ZoneName::new("zone0".to_string()).unwrap();
assert_eq!(
Ipam::from_entries([
IpamEntry::new(
SubnetName::new(
zone_name.clone(),
Cidr::new_v6([0xFD80, 0, 0, 0, 0, 0, 0, 0], 64).unwrap()
),
IpamDataVm::new(
Ipv6Addr::new(0xFD80, 0, 0, 0, 0, 0, 0, 0x1000),
1000,
MacAddress::new([0xBC, 0x24, 0x11, 0, 0, 0x01]),
"test0".to_string()
)
.into()
)
.unwrap(),
IpamEntry::new(
SubnetName::new(
zone_name.clone(),
Cidr::new_v4([10, 101, 0, 0], 16).unwrap()
),
IpamDataVm::new(
Ipv4Addr::new(10, 101, 99, 101),
1000,
MacAddress::new([0xBC, 0x24, 0x11, 0, 0, 0x01]),
"test0".to_string()
)
.into()
)
.unwrap(),
])
.unwrap(),
ipam
)
}

View File

@ -0,0 +1,26 @@
{
"zones": {
"zone0": {
"subnets": {
"fd80::/64": {
"ips": {
"fd80::1000": {
"vmid": "1000",
"mac": "BC:24:11:00:00:01",
"hostname": "test0"
}
}
},
"10.101.0.0/16": {
"ips": {
"10.101.99.101": {
"mac": "BC:24:11:00:00:01",
"vmid": "1000",
"hostname": "test0"
}
}
}
}
}
}
}