]>
git.proxmox.com Git - pve-storage.git/blob - test/path_to_volume_id_test.pm
1 package PVE
::Storage
::TestPathToVolumeId
;
14 use File
::Path
qw(make_path remove_tree);
17 my $storage_dir = File
::Temp-
>newdir();
19 'digest' => 'd29306346b8b25b90a4a96165f1e8f52d1af1eda',
23 'path' => "$storage_dir",
41 # the tests array consists of hashes with the following keys:
42 # description => to identify the test case
43 # volname => to create the test file
44 # expected => the result that path_to_volume_id should return
47 description
=> 'Image, qcow2',
48 volname
=> "$storage_dir/images/16110/vm-16110-disk-0.qcow2",
51 'local:16110/vm-16110-disk-0.qcow2',
55 description
=> 'Image, raw',
56 volname
=> "$storage_dir/images/16112/vm-16112-disk-0.raw",
59 'local:16112/vm-16112-disk-0.raw',
63 description
=> 'Image template, qcow2',
64 volname
=> "$storage_dir/images/9004/base-9004-disk-0.qcow2",
67 'local:9004/base-9004-disk-0.qcow2',
72 description
=> 'Backup, vma.gz',
73 volname
=> "$storage_dir/dump/vzdump-qemu-16110-2020_03_30-21_11_40.vma.gz",
76 'local:backup/vzdump-qemu-16110-2020_03_30-21_11_40.vma.gz',
80 description
=> 'Backup, vma.lzo',
81 volname
=> "$storage_dir/dump/vzdump-qemu-16110-2020_03_30-21_12_45.vma.lzo",
84 'local:backup/vzdump-qemu-16110-2020_03_30-21_12_45.vma.lzo',
88 description
=> 'Backup, vma',
89 volname
=> "$storage_dir/dump/vzdump-qemu-16110-2020_03_30-21_13_55.vma",
92 'local:backup/vzdump-qemu-16110-2020_03_30-21_13_55.vma',
96 description
=> 'Backup, tar.lzo',
97 volname
=> "$storage_dir/dump/vzdump-lxc-16112-2020_03_30-21_39_30.tar.lzo",
100 'local:backup/vzdump-lxc-16112-2020_03_30-21_39_30.tar.lzo',
105 description
=> 'ISO file',
106 volname
=> "$storage_dir/template/iso/yet-again-a-installation-disk.iso",
109 'local:iso/yet-again-a-installation-disk.iso',
113 description
=> 'CT template, tar.gz',
114 volname
=> "$storage_dir/template/cache/debian-10.0-standard_10.0-1_amd64.tar.gz",
117 'local:vztmpl/debian-10.0-standard_10.0-1_amd64.tar.gz',
122 description
=> 'Rootdir',
123 volname
=> "$storage_dir/private/1234/", # fileparse needs / at the end
126 'local:rootdir/1234',
130 description
=> 'Rootdir, folder subvol',
131 volname
=> "$storage_dir/images/1234/subvol-1234-disk-0.subvol/", # fileparse needs / at the end
134 'local:1234/subvol-1234-disk-0.subvol'
140 description
=> 'Snippets, yaml',
141 volname
=> "$storage_dir/snippets/userconfig.yaml",
145 description
=> 'Snippets, hookscript',
146 volname
=> "$storage_dir/snippets/hookscript.pl",
150 description
=> 'CT template, tar.xz',
151 volname
=> "$storage_dir/template/cache/debian-10.0-standard_10.0-1_amd64.tar.xz",
155 # no matches, path or files with failures
157 description
=> 'Base template, string as vmid in folder name',
158 volname
=> "$storage_dir/images/ssss/base-4321-disk-0.raw",
162 description
=> 'ISO file, wrong ending',
163 volname
=> "$storage_dir/template/iso/yet-again-a-installation-disk.dvd",
167 description
=> 'CT template, wrong ending, zip.gz',
168 volname
=> "$storage_dir/template/cache/debian-10.0-standard_10.0-1_amd64.zip.gz",
172 description
=> 'CT template, wrong ending, tar bz2',
173 volname
=> "$storage_dir/template/cache/debian-10.0-standard_10.0-1_amd64.tar.bz2",
177 description
=> 'Rootdir as subvol, wrong path',
178 volname
=> "$storage_dir/private/subvol-19254-disk-0/",
182 description
=> 'Backup, wrong ending, openvz, tar.bz2',
183 volname
=> "$storage_dir/dump/vzdump-openvz-16112-2020_03_30-21_39_30.tar.bz2",
187 description
=> 'Backup, wrong format, openvz, zip.gz',
188 volname
=> "$storage_dir/dump/vzdump-openvz-16112-2020_03_30-21_39_30.zip.gz",
192 description
=> 'Backup, wrong format, openvz, tgz.lzo',
193 volname
=> "$storage_dir/dump/vzdump-openvz-16112-2020_03_30-21_39_30.tgz.lzo",
197 description
=> 'Backup, wrong ending, qemu, vma.xz',
198 volname
=> "$storage_dir/dump/vzdump-qemu-16110-2020_03_30-21_12_40.vma.xz",
202 description
=> 'Backup, wrong format, qemu, vms.gz',
203 volname
=> "$storage_dir/dump/vzdump-qemu-16110-2020_03_30-21_12_40.vms.gz",
207 description
=> 'Image, string as vmid in folder name',
208 volname
=> "$storage_dir/images/ssss/vm-1234-disk-0.qcow2",
213 plan tests
=> scalar @tests;
215 foreach my $tt (@tests) {
216 my $file = $tt->{volname
};
217 my $expected = $tt->{expected
};
218 my $description = $tt->{description
};
220 # prepare environment
221 my ($name, $dir, $suffix) = fileparse
($file);
222 make_path
($dir, { verbose
=> 1, mode
=> 0755 });
225 open(my $fh, ">>", "$file") || die "Error open file: $!";
231 eval { $got = [ PVE
::Storage
::path_to_volume_id
($scfg, $file) ] };
234 is_deeply
($got, $expected, $description) || diag
(explain
($got));
238 # File::Temp unlinks tempdir on exit