]>
git.proxmox.com Git - pve-manager.git/blob - bin/test/ReplicationTestEnv.pm
1 package ReplicationTestEnv
;
7 use lib
('.', '../..');
20 our $mocked_nodename = 'node1';
22 our $mocked_replication_jobs = {};
24 my $pve_replicationconfig = Test
::MockModule-
>new('PVE::ReplicationConfig');
26 our $mocked_vm_configs = {};
28 our $mocked_ct_configs = {};
30 my $mocked_vmlist = sub {
33 foreach my $id (keys %$mocked_ct_configs) {
34 my $d = $mocked_ct_configs->{$id};
35 $res->{$id} = { 'type' => 'lxc', 'node' => $d->{node
}, 'version' => 1 };
37 foreach my $id (keys %$mocked_vm_configs) {
38 my $d = $mocked_vm_configs->{$id};
39 $res->{$id} = { 'type' => 'qemu', 'node' => $d->{node
}, 'version' => 1 };
42 return { 'ids' => $res };
46 my $statefile = ".mocked_repl_state";
49 $PVE::Replication
::state_path
= $statefile;
51 my $mocked_write_state = sub {
54 PVE
::Tools
::file_set_contents
($statefile, encode_json
($state));
57 my $mocked_read_state = sub {
59 return {} if ! -e
$statefile;
61 my $raw = PVE
::Tools
::file_get_contents
($statefile);
63 return {} if $raw eq '';
65 return decode_json
($raw);
69 my $pve_cluster_module = Test
::MockModule-
>new('PVE::Cluster');
71 my $pve_inotify_module = Test
::MockModule-
>new('PVE::INotify');
73 my $mocked_qemu_load_conf = sub {
74 my ($class, $vmid, $node) = @_;
76 $node = $mocked_nodename if !$node;
78 my $conf = $mocked_vm_configs->{$vmid};
80 die "no such vm '$vmid'" if !defined($conf);
81 die "vm '$vmid' on wrong node" if $conf->{node
} ne $node;
86 my $pve_qemuserver_module = Test
::MockModule-
>new('PVE::QemuServer');
88 my $pve_qemuconfig_module = Test
::MockModule-
>new('PVE::QemuConfig');
90 my $mocked_lxc_load_conf = sub {
91 my ($class, $vmid, $node) = @_;
93 $node = $mocked_nodename if !$node;
95 my $conf = $mocked_ct_configs->{$vmid};
97 die "no such ct '$vmid'" if !defined($conf);
98 die "ct '$vmid' on wrong node" if $conf->{node
} ne $node;
103 my $pve_lxc_config_module = Test
::MockModule-
>new('PVE::LXC::Config');
105 my $mocked_replication_config = sub {
107 my $res = $mocked_replication_jobs;
109 return bless { ids
=> $res }, 'PVE::ReplicationConfig';
112 my $mocked_storage_config = {
121 path
=> "/var/lib/vz",
125 pool
=> 'nonexistent-testpool',
135 my $pve_storage_module = Test
::MockModule-
>new('PVE::Storage');
138 $pve_storage_module->mock(config
=> sub { return $mocked_storage_config; });
140 $pve_replicationconfig->mock(new
=> $mocked_replication_config);
141 $pve_qemuserver_module->mock(check_running
=> sub { return 0; });
142 $pve_qemuconfig_module->mock(load_config
=> $mocked_qemu_load_conf);
144 $pve_lxc_config_module->mock(load_config
=> $mocked_lxc_load_conf);
147 $pve_cluster_module->mock(get_vmlist
=> sub { return $mocked_vmlist->(); });
148 $pve_inotify_module->mock('nodename' => sub { return $mocked_nodename; });