]> git.proxmox.com Git - pve-network.git/commitdiff
tests: mocking cfs_lock_file to pass subnet tests
authorStefan Lendl <s.lendl@proxmox.com>
Fri, 24 Nov 2023 13:16:13 +0000 (14:16 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 29 Nov 2023 10:09:57 +0000 (11:09 +0100)
IPAM tries to lock file in clusterfs which it can't when testing as
non-root.

Mocking cfs_lock_file to emulate locking behavior.

Signed-off-by: Stefan Lendl <s.lendl@proxmox.com>
src/test/run_test_subnets.pl

index 49b4205548996e99bea33c8bb94b2b3a9fca2bc2..7d57e993be2d0915868eea9500c03138998b316b 100755 (executable)
@@ -18,6 +18,23 @@ use JSON;
 use Data::Dumper qw(Dumper);
 $Data::Dumper::Sortkeys = 1;
 
+
+my $locks = {};
+
+my $mocked_cfs_lock_file = sub {
+    my ($filename, $timeout, $code, @param) = @_;
+
+    die "$filename already locked\n" if ($locks->{$filename});
+
+    $locks->{$filename} = 1;
+
+    my $res = eval { $code->(@param); };
+
+    delete $locks->{$filename};
+
+    return $res;
+};
+
 sub read_sdn_config {
     my ($file) = @_;
     # Read structure back in again
@@ -98,7 +115,8 @@ foreach my $path (@plugins) {
            write_db => sub {
                my ($cfg) = @_;
                $ipamdb = $cfg;
-           }
+           },
+           cfs_lock_file => $mocked_cfs_lock_file,
        );
     }