]> git.proxmox.com Git - pve-storage.git/blobdiff - test/run_test_zfspoolplugin.pl
tests: rbd ns: avoid underscore in CLI param name
[pve-storage.git] / test / run_test_zfspoolplugin.pl
index b093eeb50162ce67f5da140f12a198233682ae09..2f63f1bd898fbb9dabb35abd29ad3e14213f8e10 100755 (executable)
@@ -1,7 +1,10 @@
 #!/usr/bin/perl
 
+use lib '..';
+
 use strict;
 use warnings;
+
 use Data::Dumper qw(Dumper);
 use PVE::Storage;
 use PVE::Cluster;
@@ -13,6 +16,7 @@ my $verbose = undef;
 
 my $storagename = "zfstank99";
 my $subvol = 'regressiontest';
+my $mountpoint = "${subvol}_mnt";
 
 #volsize in GB
 my $volsize = 1;
@@ -139,10 +143,10 @@ my $test19 = sub {
     $fail = 0;
     eval {
        @res = PVE::Storage::path($cfg, "$storagename:$ctdisk");
-       if ($res[0] ne "\/regressiontest\/$ctdisk") {
+       if ($res[0] ne "\/$mountpoint\/$ctdisk") {
            $count++;
            $fail = 1;
-           warn "Test 19 d: path is not correct: expected \'/regressiontest\/$ctdisk'\  get \'$res[0]\'";
+           warn "Test 19 d: path is not correct: expected \'\/$mountpoint\/$ctdisk'\  get \'$res[0]\'";
        }
        if ($res[1] ne "202") {
            if (!$fail) {
@@ -168,10 +172,10 @@ my $test19 = sub {
     $fail = 0;
     eval {
        @res = PVE::Storage::path($cfg, "$storagename:$ctbase");
-       if ($res[0] ne "\/regressiontest\/$ctbase") {
+       if ($res[0] ne "\/$mountpoint\/$ctbase") {
            $count++;
            $fail = 1;
-           warn "Test 19 e: path is not correct: expected \'\/regressiontest\/$ctbase'\  get \'$res[0]\'";
+           warn "Test 19 e: path is not correct: expected \'\/$mountpoint\/$ctbase'\  get \'$res[0]\'";
        }
        if ($res[1] ne "200") {
            if (!$fail) {
@@ -197,10 +201,10 @@ my $test19 = sub {
     $fail = 0;
     eval {
        @res = PVE::Storage::path($cfg, "$storagename:$ctbase\/$ctlinked");
-       if ($res[0] ne "\/regressiontest\/$ctlinked") {
+       if ($res[0] ne "\/$mountpoint\/$ctlinked") {
            $count++;
            $fail = 1;
-           warn "Test 19 f: path is not correct: expected \'\/regressiontest\/$ctlinked'\  get \'$res[0]\'";
+           warn "Test 19 f: path is not correct: expected \'\/$mountpoint\/$ctlinked'\  get \'$res[0]\'";
        }
        if ($res[1] ne "201") {
            if (!$fail) {
@@ -563,13 +567,13 @@ my $test13 = sub {
     eval {
        my $tmp_volid = PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef ,1024 * 1024);
 
-       if ($tmp_volid ne "$storagename:vm-112-disk-1") {
+       if ($tmp_volid ne "$storagename:vm-112-disk-0") {
            die "volname:$tmp_volid don't match\n";
        }
        eval {
-           run_command("zfs get -H volsize $zpath\/vm-112-disk-1", outfunc =>
+           run_command("zfs get -H volsize $zpath\/vm-112-disk-0", outfunc =>
                        sub { my $tmp = shift;
-                             if ($tmp !~ m/^$zpath\/vm-112-disk-1.*volsize.*1G.*$/) {
+                             if ($tmp !~ m/^$zpath\/vm-112-disk-0.*volsize.*1G.*$/) {
                                  die "size don't match\n";
                              }
                        });
@@ -587,13 +591,13 @@ my $test13 = sub {
     eval {
        my $tmp_volid = PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef ,2048 * 1024);
 
-       if ($tmp_volid ne "$storagename:vm-112-disk-2") {
+       if ($tmp_volid ne "$storagename:vm-112-disk-1") {
            die "volname:$tmp_volid don't match\n";
        }
        eval {
-           run_command("zfs get -H volsize $zpath\/vm-112-disk-2", outfunc =>
+           run_command("zfs get -H volsize $zpath\/vm-112-disk-1", outfunc =>
                        sub { my $tmp = shift;
-                             if ($tmp !~ m/^$zpath\/vm-112-disk-2.*volsize.*2G.*$/) {
+                             if ($tmp !~ m/^$zpath\/vm-112-disk-1.*volsize.*2G.*$/) {
                                  die "size don't match\n";
                              }
                        });
@@ -611,13 +615,13 @@ my $test13 = sub {
     eval {
        my $tmp_volid = PVE::Storage::vdisk_alloc($cfg, $storagename, "113", "subvol", undef ,1024 * 1024);
 
-       if ($tmp_volid ne "$storagename:subvol-113-disk-1") {
+       if ($tmp_volid ne "$storagename:subvol-113-disk-0") {
            die "volname:$tmp_volid  don't match\n";
        }
        eval {
-           run_command("zfs get -H refquota $zpath\/subvol-113-disk-1", outfunc =>
+           run_command("zfs get -H refquota $zpath\/subvol-113-disk-0", outfunc =>
                        sub { my $tmp = shift;
-                             if ($tmp !~ m/^$zpath\/subvol-113-disk-1.*refquota.*1G.*$/) {
+                             if ($tmp !~ m/^$zpath\/subvol-113-disk-0.*refquota.*1G.*$/) {
                                  die "size don't match\n";
                              }
                        });
@@ -635,13 +639,13 @@ my $test13 = sub {
     eval {
        my $tmp_volid = PVE::Storage::vdisk_alloc($cfg, $storagename, "113", "subvol", undef ,2048 * 1024);
 
-       if ($tmp_volid ne "$storagename:subvol-113-disk-2") {
+       if ($tmp_volid ne "$storagename:subvol-113-disk-1") {
            die "volname:$tmp_volid  don't match\n";
        }
        eval {
-           run_command("zfs get -H refquota $zpath\/subvol-113-disk-2", outfunc =>
+           run_command("zfs get -H refquota $zpath\/subvol-113-disk-1", outfunc =>
                        sub { my $tmp = shift;
-                             if ($tmp !~ m/^$zpath\/subvol-113-disk-2.*refquota.*G.*$/) {
+                             if ($tmp !~ m/^$zpath\/subvol-113-disk-1.*refquota.*G.*$/) {
                                  die "size don't match\n";
                              }
                        });
@@ -753,12 +757,12 @@ my $test11 = sub {
     }
 
     eval {
-       if ("$storagename:$vmbase\/vm-110-disk-1" ne
+       if ("$storagename:$vmbase\/vm-110-disk-0" ne
            PVE::Storage::vdisk_clone($cfg, "$storagename:$vmbase", 110, '__base__')){
            $count++;
            warn  "Test11 b";
        }
-       run_command("zfs list -H -o volsize $zpath\/vm-110-disk-1", outfunc => sub {
+       run_command("zfs list -H -o volsize $zpath\/vm-110-disk-0", outfunc => sub {
            my $line = shift;
 
            chomp($line);
@@ -787,12 +791,12 @@ my $test11 = sub {
     }
 
     eval {
-       if ( "$storagename:$ctbase\/subvol-210-disk-1" ne
+       if ( "$storagename:$ctbase\/subvol-210-disk-0" ne
             PVE::Storage::vdisk_clone($cfg, "$storagename:$ctbase", 210, '__base__')){
            $count++;
            warn  "Test11 e";
        }
-       run_command("zfs list -H -o refquota $zpath\/subvol-210-disk-1", outfunc => sub {
+       run_command("zfs list -H -o refquota $zpath\/subvol-210-disk-0", outfunc => sub {
            my $line = shift;
 
            chomp($line);
@@ -1093,6 +1097,7 @@ my $test7 = sub {
     };
 
     eval {
+       PVE::Storage::activate_volumes($cfg, ["$storagename:$vmdisk"]);
        run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmdisk", outfunc => $parse_guid);
        run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmdisk", outfunc => $parse_guid);
 
@@ -1102,6 +1107,7 @@ my $test7 = sub {
        run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmdisk", outfunc => $parse_guid);
        eval {
            PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$vmdisk", 'snap1');
+           PVE::Storage::activate_volumes($cfg, ["$storagename:$vmdisk"]);
            $tmp_guid = undef;
            run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmdisk", outfunc => $parse_guid);
            if ($old_guid ne $tmp_guid) {
@@ -1121,6 +1127,7 @@ my $test7 = sub {
     $tmp_guid = undef;
 
     eval {
+       PVE::Storage::activate_volumes($cfg, ["$storagename:$vmbase"]);
        run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmbase", outfunc => $parse_guid);
        run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmbase", outfunc => $parse_guid);
 
@@ -1130,6 +1137,7 @@ my $test7 = sub {
        run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmbase", outfunc => $parse_guid);
        eval {
            PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$vmbase", 'snap1');
+           PVE::Storage::activate_volumes($cfg, ["$storagename:$vmbase"]);
            $tmp_guid = undef;
            run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmbase", outfunc => $parse_guid);
            if ($old_guid ne $tmp_guid) {
@@ -1149,6 +1157,7 @@ my $test7 = sub {
     $tmp_guid = undef;
 
     eval {
+       PVE::Storage::activate_volumes($cfg, ["$storagename:$vmbase/$vmlinked"]);
        run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmlinked", outfunc => $parse_guid);
        run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmlinked", outfunc => $parse_guid);
 
@@ -1158,6 +1167,7 @@ my $test7 = sub {
        run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmlinked", outfunc => $parse_guid);
        eval {
            PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$vmbase\/$vmlinked", 'snap1');
+           PVE::Storage::activate_volumes($cfg, ["$storagename:$vmbase/$vmlinked"]);
            $tmp_guid = undef;
            run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmlinked", outfunc => $parse_guid);
            if ($old_guid ne $tmp_guid) {
@@ -1179,11 +1189,11 @@ my $test7 = sub {
     eval {
        PVE::Storage::volume_snapshot($cfg, "$storagename:$ctdisk", 'snap1');
 
-       run_command("touch \/$zpath\/$ctdisk\/test.txt", outfunc => $parse_guid);
+       run_command("touch \/$mountpoint\/$ctdisk\/test.txt", outfunc => $parse_guid);
        eval {
            PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$ctdisk", 'snap1');
            eval {
-               run_command("ls \/$zpath\/$ctdisk\/test.txt", errofunc => sub {});
+               run_command("ls \/$mountpoint\/$ctdisk\/test.txt", errofunc => sub {});
            };
            if (!$@) {
                $count++;
@@ -1203,11 +1213,11 @@ my $test7 = sub {
     eval {
        PVE::Storage::volume_snapshot($cfg, "$storagename:$ctbase", 'snap1');
 
-       run_command("touch \/$zpath\/$ctbase\/test.txt", outfunc => $parse_guid);
+       run_command("touch \/$mountpoint\/$ctbase\/test.txt", outfunc => $parse_guid);
        eval {
            PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$ctbase", 'snap1');
            eval {
-               run_command("ls \/$zpath\/$ctbase\/test.txt", errofunc => sub {});
+               run_command("ls \/$mountpoint\/$ctbase\/test.txt", errofunc => sub {});
            };
            if (!$@) {
                $count++;
@@ -1227,7 +1237,7 @@ my $test7 = sub {
     eval {
        PVE::Storage::volume_snapshot($cfg, "$storagename:$ctbase/$ctlinked", 'snap1');
 
-       run_command("touch \/$zpath\/$ctlinked\/test.txt", outfunc => $parse_guid);
+       run_command("touch \/$mountpoint\/$ctlinked\/test.txt", outfunc => $parse_guid);
        eval {
            PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$ctbase/$ctlinked", 'snap1');
            eval {
@@ -2582,7 +2592,6 @@ my $test1 = sub {
 $tests->{1} = $test1;
 
 sub setup_zfs {
-
     #create VM zvol
     print "create zvol $vmdisk\n" if $verbose;
     run_command("zfs create -V${volsize}G $zpath\/$vmdisk");
@@ -2598,14 +2607,23 @@ sub setup_zfs {
     print "create subvol $ctdisk\n" if $verbose;
     run_command("zfs create -o refquota=${volsize}G $zpath\/$ctdisk");
 
-    print "create subvol $vmbase\n" if $verbose;
+    print "create subvol $ctbase\n" if $verbose;
     run_command("zfs create -o refquota=${volsize}G $zpath\/$ctbase");
     run_command("zfs snapshot $zpath\/$ctbase$basesnap");
 
-    print "create linked clone $vmlinked\n" if $verbose;
+    print "create linked clone $ctlinked\n" if $verbose;
     run_command("zfs clone $zpath\/$ctbase$basesnap $zpath\/$ctlinked -o refquota=${volsize}G");
-    run_command("udevadm trigger --subsystem-match block");
-    run_command("udevadm settle --timeout 10 --exit-if-exists=/dev/zvol/$zpath\/$ctlinked");
+
+    my $vollist = [
+       "$storagename:$vmdisk",
+       "$storagename:$vmbase",
+       "$storagename:$vmbase/$vmlinked",
+       "$storagename:$ctdisk",
+       "$storagename:$ctbase",
+       "$storagename:$ctbase/$ctlinked",
+    ];
+
+    PVE::Storage::activate_volumes($cfg, $vollist);
 }
 
 sub cleanup_zfs {
@@ -2633,7 +2651,7 @@ sub setup_zpool {
     }
     my $pwd = cwd();
     eval {
-       run_command("zpool create $subvol $pwd\/zpool.img");
+       run_command("zpool create -m \/$mountpoint $subvol $pwd\/zpool.img");
     };
     if ($@) {
        clean_up_zpool();
@@ -2681,6 +2699,7 @@ $cfg = {'ids' => {
            'rootdir' => 1
        },
                'pool' => $subvol,
+               'mountpoint' => "\/$mountpoint",
                'type' => 'zfspool'
     },
        },
@@ -2695,7 +2714,10 @@ for (my $i = $start_test; $i <= $end_test; $i++) {
     eval {
        $tests->{$i}();
     };
-    warn $@ if $@;
+    if (my $err = $@) {
+       warn $err;
+       $count++;
+    }
     cleanup_zfs();
 }