]>
git.proxmox.com Git - pve-network.git/blob - test/run_test_subnets.pl
12 use PVE
::Network
::SDN
;
13 use PVE
::Network
::SDN
::Zones
;
14 use PVE
::Network
::SDN
::Controllers
;
18 use Data
::Dumper
qw(Dumper);
19 $Data::Dumper
::Sortkeys
= 1;
23 # Read structure back in again
24 open my $in, '<', $file or die $!;
27 local $/; # slurp mode
28 $sdn_config = eval <$in>;
36 my @plugins = read_dir
( './subnets/', prefix
=> 1 ) ;
38 foreach my $path (@plugins) {
40 my (undef, $testid) = split(/\//, $path);
42 print "test: $testid\n";
43 my $sdn_config = read_sdn_config
("$path/sdn_config");
47 $pve_sdn_subnets = Test
::MockModule-
>new('PVE::Network::SDN::Subnets');
48 $pve_sdn_subnets->mock(
50 return $sdn_config->{subnets
};
52 verify_dns_zone
=> sub {
55 add_dns_record
=> sub {
66 my $subnets = $sdn_config->{subnets
}->{ids
};
67 my $subnetid = (keys %{$subnets})[0];
68 my $subnet = PVE
::Network
::SDN
::Subnets
::sdn_subnets_config
($sdn_config->{subnets
}, $subnetid, 1);
70 my $subnet_cidr = $subnet->{cidr
};
71 my $iplist = NetAddr
::IP-
>new($subnet_cidr);
73 my $ip = $iplist->canon();
75 my $ipnextfree = $iplist->canon();
77 my $ip2 = $iplist->canon();
80 my $hostname = "myhostname";
81 my $mac = "da:65:8f:18:9b:6f";
82 my $description = "mydescription";
86 my $zone = $sdn_config->{zones
}->{ids
}->{"myzone"};
87 my $ipam = $zone->{ipam
};
92 $plugin = PVE
::Network
::SDN
::Ipams
::Plugin-
>lookup($ipam);
93 $sdn_ipam_plugin = Test
::MockModule-
>new($plugin);
94 $sdn_ipam_plugin->mock(
106 $pve_sdn_ipams = Test
::MockModule-
>new('PVE::Network::SDN::Ipams');
107 $pve_sdn_ipams->mock(
109 my $ipam_config = read_sdn_config
("$path/ipam_config");
115 my $test = "add_subnet";
116 my $name = "$testid $test";
118 my $expected = '{"zones":{"myzone":{"subnets":{"'.$subnet_cidr.'":{"ips":{}}}}}}';
121 PVE
::Network
::SDN
::Subnets
::add_subnet
($zone, $subnetid, $subnet);
128 $result = $js->encode($plugin->read_db());
129 is ($result, $expected, $name);
131 is (undef, undef, $name);
136 $name = "$testid $test";
138 $expected = '{"zones":{"myzone":{"subnets":{"'.$subnet_cidr.'":{"ips":{"'.$ip.'":{}}}}}}}';
141 PVE
::Network
::SDN
::Subnets
::add_ip
($zone, $subnetid, $subnet, $ip, $hostname, $mac, $description);
147 $result = $js->encode($plugin->read_db());
148 is ($result, $expected, $name);
150 is (undef, undef, $name);
154 ## add_already_exist_ip
155 $test = "add_already_exist_ip";
156 $name = "$testid $test";
159 PVE
::Network
::SDN
::Subnets
::add_ip
($zone, $subnetid, $subnet, $ip, $hostname, $mac, $description);
163 is (undef, undef, $name);
170 $test = "add_second_ip";
171 $name = "$testid $test";
173 $expected = '{"zones":{"myzone":{"subnets":{"'.$subnet_cidr.'":{"ips":{"'.$ip.'":{},"'.$ip2.'":{}}}}}}}';
176 PVE
::Network
::SDN
::Subnets
::add_ip
($zone, $subnetid, $subnet, $ip2, $hostname, $mac, $description);
182 $result = $js->encode($plugin->read_db());
183 is ($result, $expected, $name);
185 is (undef, undef, $name);
189 $test = "add_next_freeip";
190 $name = "$testid $test";
192 $expected = '{"zones":{"myzone":{"subnets":{"'.$subnet_cidr.'":{"ips":{"'.$ip.'":{},"'.$ipnextfree.'":{},"'.$ip2.'":{}}}}}}}';
195 $ip3 = PVE
::Network
::SDN
::Subnets
::next_free_ip
($zone, $subnetid, $subnet, $hostname, $mac, $description);
201 $result = $js->encode($plugin->read_db());
202 is ($result, $expected, $name);
207 $name = "$testid $test";
209 $expected = '{"zones":{"myzone":{"subnets":{"'.$subnet_cidr.'":{"ips":{"'.$ipnextfree.'":{},"'.$ip2.'":{}}}}}}}';
212 PVE
::Network
::SDN
::Subnets
::del_ip
($zone, $subnetid, $subnet, $ip, $hostname);
218 $result = $js->encode($plugin->read_db());
219 is ($result, $expected, $name);
221 is (undef, undef, $name);
225 ## del_subnet_not_empty
226 $test = "del_subnet_not_empty";
227 $name = "$testid $test";
232 PVE
::Network
::SDN
::Subnets
::del_subnet
($zone, $subnetid, $subnet);
236 is ($result, $expected, $name);
243 ## add_ip_rollback_failing_dns
244 $test = "add_ip_rollback_failing_dns";
246 $pve_sdn_subnets->mock(
248 return $sdn_config->{subnets
};
250 verify_dns_zone
=> sub {
253 add_dns_record
=> sub {
254 die "error add dns record";
259 $name = "$testid $test";
261 $expected = '{"zones":{"myzone":{"subnets":{"'.$subnet_cidr.'":{"ips":{"'.$ipnextfree.'":{},"'.$ip2.'":{}}}}}}}';
264 PVE
::Network
::SDN
::Subnets
::add_ip
($zone, $subnetid, $subnet, $ip, $hostname, $mac, $description);
269 $result = $js->encode($plugin->read_db());
270 is ($result, $expected, $name);
272 is (undef, undef, $name);
280 $test = "del_empty_subnet";
281 $name = "$testid $test";
283 $expected = '{"zones":{"myzone":{"subnets":{}}}}';
285 PVE
::Network
::SDN
::Subnets
::del_ip
($zone, $subnetid, $subnet, $ip2, $hostname);
286 PVE
::Network
::SDN
::Subnets
::del_ip
($zone, $subnetid, $subnet, $ip3, $hostname);
289 PVE
::Network
::SDN
::Subnets
::del_subnet
($zone, $subnetid, $subnet);
295 $result = $js->encode($plugin->read_db());
296 is ($result, $expected, $name);
298 is (undef, undef, $name);