]> git.proxmox.com Git - pve-ha-manager.git/blob - PVE/HA/Sim/TestEnv.pm
fixup watchdog to cleanly compile with systemd
[pve-ha-manager.git] / PVE / HA / Sim / TestEnv.pm
1 package PVE::HA::Sim::TestEnv;
2
3 use strict;
4 use warnings;
5 use POSIX qw(strftime EINTR);
6 use Data::Dumper;
7 use JSON;
8 use IO::File;
9 use Fcntl qw(:DEFAULT :flock);
10
11 use PVE::HA::Tools;
12
13 use base qw(PVE::HA::Sim::Env);
14
15 sub new {
16 my ($this, $nodename, $hardware, $log_id) = @_;
17
18 my $class = ref($this) || $this;
19
20 my $self = $class->SUPER::new($nodename, $hardware, $log_id);
21
22 $self->{cur_time} = 0;
23 $self->{loop_delay} = 0;
24
25 return $self;
26 }
27
28 sub get_time {
29 my ($self) = @_;
30
31 return $self->{cur_time};
32 }
33
34 sub sleep {
35 my ($self, $delay) = @_;
36
37 $self->{loop_delay} += $delay;
38 }
39
40 sub sleep_until {
41 my ($self, $end_time) = @_;
42
43 my $cur_time = $self->{cur_time} + $self->{loop_delay};
44
45 return if $cur_time >= $end_time;
46
47 $self->{loop_delay} += $end_time - $cur_time;
48 }
49
50 sub get_ha_manager_lock {
51 my ($self) = @_;
52
53 my $res = $self->SUPER::get_ha_manager_lock();
54 ++$self->{loop_delay};
55 return $res;
56 }
57
58 sub get_ha_agent_lock {
59 my ($self) = @_;
60
61 my $res = $self->SUPER::get_ha_agent_lock();
62 ++$self->{loop_delay};
63
64 return $res;
65 }
66
67 sub test_ha_agent_lock {
68 my ($self, $node) = @_;
69
70 my $res = $self->SUPER::test_ha_agent_lock($node);
71 ++$self->{loop_delay};
72 return $res;
73 }
74
75 sub loop_start_hook {
76 my ($self, $starttime) = @_;
77
78 $self->{loop_delay} = 0;
79
80 die "no starttime" if !defined($starttime);
81 die "strange start time" if $starttime < $self->{cur_time};
82
83 $self->{cur_time} = $starttime;
84
85 # do nothing
86 }
87
88 sub loop_end_hook {
89 my ($self) = @_;
90
91 my $delay = $self->{loop_delay};
92 $self->{loop_delay} = 0;
93
94 die "loop take too long ($delay seconds)\n" if $delay > 30;
95
96 # $self->{cur_time} += $delay;
97
98 $self->{cur_time} += 1; # easier for simulation
99 }
100
101 1;