]>
git.proxmox.com Git - pve-ha-manager.git/blob - PVE/HA/Sim/TestEnv.pm
1 package PVE
::HA
::Sim
::TestEnv
;
5 use POSIX
qw(strftime EINTR);
9 use Fcntl
qw(:DEFAULT :flock);
13 use base
qw(PVE::HA::Sim::Env);
16 my ($this, $nodename, $hardware, $log_id) = @_;
18 my $class = ref($this) || $this;
20 my $self = $class->SUPER::new
($nodename, $hardware, $log_id);
22 $self->{cur_time
} = 0;
23 $self->{loop_delay
} = 0;
31 return $self->{cur_time
};
35 my ($self, $delay) = @_;
37 $self->{loop_delay
} += $delay;
41 my ($self, $end_time) = @_;
43 my $cur_time = $self->{cur_time
} + $self->{loop_delay
};
45 return if $cur_time >= $end_time;
47 $self->{loop_delay
} += $end_time - $cur_time;
50 sub get_ha_manager_lock
{
53 my $res = $self->SUPER::get_ha_manager_lock
();
54 ++$self->{loop_delay
};
58 sub get_ha_agent_lock
{
61 my $res = $self->SUPER::get_ha_agent_lock
();
62 ++$self->{loop_delay
};
67 sub test_ha_agent_lock
{
68 my ($self, $node) = @_;
70 my $res = $self->SUPER::test_ha_agent_lock
($node);
71 ++$self->{loop_delay
};
76 my ($self, $starttime) = @_;
78 $self->{loop_delay
} = 0;
80 die "no starttime" if !defined($starttime);
81 die "strange start time" if $starttime < $self->{cur_time
};
83 $self->{cur_time
} = $starttime;
91 my $delay = $self->{loop_delay
};
92 $self->{loop_delay
} = 0;
94 die "loop take too long ($delay seconds)\n" if $delay > 30;
96 # $self->{cur_time} += $delay;
98 $self->{cur_time
} += 1; # easier for simulation