[pve-devel] [PATCH pve-manager 03/18] replication_test2.pl: test replication scheduler

Dietmar Maurer dietmar at proxmox.com
Tue May 23 09:08:42 CEST 2017


Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
---
 bin/test/Makefile             |   1 +
 bin/test/replication_test2.pl | 102 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 103 insertions(+)
 create mode 100755 bin/test/replication_test2.pl

diff --git a/bin/test/Makefile b/bin/test/Makefile
index b379dfa9..3d599174 100644
--- a/bin/test/Makefile
+++ b/bin/test/Makefile
@@ -5,6 +5,7 @@ all:
 check:
 	./balloontest.pl
 	./replication_test1.pl
+	./replication_test2.pl
 
 
 .PHONY: install
diff --git a/bin/test/replication_test2.pl b/bin/test/replication_test2.pl
new file mode 100755
index 00000000..6f25e1dd
--- /dev/null
+++ b/bin/test/replication_test2.pl
@@ -0,0 +1,102 @@
+#!/usr/bin/perl
+
+# Note: Test replication scheduler
+
+use strict;
+use warnings;
+use JSON;
+
+use lib ('.', '../..');
+
+use Data::Dumper;
+
+use Test::MockModule;
+use ReplicationTestEnv;
+use Test::More tests => 1;
+
+$ReplicationTestEnv::mocked_nodename = 'node1';
+
+my $schedule = [];
+
+my $mocked_replicate = sub {
+    my ($jobcfg, $start_time) = @_;
+
+    push @$schedule, {
+	id => $jobcfg->{id},
+	guest => $jobcfg->{guest},
+	vmtype => $jobcfg->{vmtype},
+	start => $start_time,
+    };
+};
+
+my $pve_replication_module = Test::MockModule->new('PVE::Replication');
+$pve_replication_module->mock(replicate => $mocked_replicate);
+
+
+my $testjob = {
+    'type'  => 'local',
+    'target' => 'node1',
+    'guest' => 900,
+};
+
+$ReplicationTestEnv::mocked_replication_jobs = {
+    job_900_to_node2 => {
+	'type'  => 'local',
+	'target' => 'node2',
+	'guest' => 900,
+    },
+    job_900_to_node1 => {
+	'type'  => 'local',
+	'target' => 'node1', # local node, job should be skipped
+	'guest' => 900,
+    },
+};
+
+$ReplicationTestEnv::mocked_vm_configs = {
+    900 => {
+	node => 'node1',
+	snapshots => {},
+	ide0 => 'local-lvm:vm-900-disk-1,size=4G',
+	memory => 512,
+	ide2 => 'none,media=cdrom',
+    },
+};
+
+ReplicationTestEnv::setup();
+
+for (my $i = 0; $i < 61; $i++) {
+    PVE::Replication::run_jobs($i*60);
+}
+
+#print Dumper($schedule);
+
+my $exptected_schedule = [
+    {
+	'start' => 0,
+	'vmtype' => 'qemu',
+	'id' => 'job_900_to_node2',
+	'guest' => 900
+    },
+    {
+	'guest' => 900,
+	'id' => 'job_900_to_node2',
+	'vmtype' => 'qemu',
+	'start' => 900
+    },
+    {
+	'start' => 1800,
+	'vmtype' => 'qemu',
+	'id' => 'job_900_to_node2',
+	'guest' => 900
+    },
+    {
+	'vmtype' => 'qemu',
+	'start' => 2700,
+	'id' => 'job_900_to_node2',
+	'guest' => 900
+    }
+];
+
+is_deeply($schedule, $exptected_schedule);
+
+exit(0);
-- 
2.11.0




More information about the pve-devel mailing list