]> git.proxmox.com Git - qemu-server.git/commitdiff
test: pci addr checker: add slurp_qemu_config skeleton
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 9 Sep 2019 14:24:20 +0000 (16:24 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 9 Sep 2019 14:24:22 +0000 (16:24 +0200)
it works™, but yet unused, add nonetheless to make it easier to pick
up and complete this testing work.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
test/run_pci_addr_checks.pl

index fff05ac1cd3d48a830cc22a4a15c735aab0807e0..53e3283d209c01a1aa184f774fdc6a82bd6e4e8c 100755 (executable)
@@ -8,8 +8,54 @@ use lib qw(..);
 
 use Test::More;
 
+use PVE::Tools qw(file_get_contents);
 use PVE::QemuServer::PCI;
 
+# not our format but that what QEMU gets passed with '-readconfig'
+sub slurp_qemu_config {
+    my ($fn) = @_;
+
+    my $raw = file_get_contents($fn);
+
+    my $lineno = 0;
+    my $cfg = {};
+    my $group;
+    my $skip_to_next_group;
+    while ($raw =~ /^\h*(.*?)\h*$/gm) {
+       my $line = $1;
+       $lineno++;
+       next if !$line || $line =~ /^#/;
+
+       # tried to follow qemu's qemu_config_parse function
+       if ($line =~ /\[(\S{1,63}) "([^"\]]{1,63})"\]/) {
+           $group = $2;
+           $skip_to_next_group = 0;
+           if ($1 ne 'device') {
+               $group = undef;
+               $skip_to_next_group = 1;
+           }
+       } elsif ($line =~ /\[([^\]]{1,63})\]/) {
+           $group = undef;
+           $skip_to_next_group = 1;
+       } elsif ($group) {
+           if ($line =~ /(\S{1,63}) = "([^\"]{1,1023})"/) {
+               my ($k, $v) = ($1, $2);
+               $cfg->{$group}->{$k} = $v;
+           } else {
+               print "ignoring $fn:$lineno: $line\n";
+           }
+       } else {
+           warn "ignore $fn:$lineno, currently no group\n" if !$skip_to_next_group;
+       }
+    }
+
+    #use Data::Dumper;
+    #print Dumper($cfg) . "\n";
+}
+# FIXME: TODO! read those configs and check for conflicts!
+# q35 stuff with PCIe and others with PCI
+# slurp_qemu_config("../pve-q35.cfg");
+
 print "testing PCI(e) address conflicts\n";
 
 # exec tests