]> git.proxmox.com Git - pve-ha-manager.git/commitdiff
fix regression test environment
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 25 Mar 2015 07:51:57 +0000 (08:51 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 25 Mar 2015 07:56:59 +0000 (08:56 +0100)
src/PVE/HA/Sim/TestEnv.pm
src/PVE/HA/Sim/TestHardware.pm

index 914bf37608fcaeb8b1203bd690c024430249f110..4e2eaf9eac94deb2ba65a8c02b820a31cc26c709 100644 (file)
@@ -22,6 +22,11 @@ sub new {
     $self->{cur_time} = 0;
     $self->{loop_delay} = 0;
 
+    my $statusdir = $self->{hardware}->statusdir();
+    my $logfile = "$statusdir/log";
+    $self->{logfh} = IO::File->new(">>$logfile") ||
+       die "unable to open '$logfile' - $!";
+
     return $self;
 }
 
@@ -31,6 +36,20 @@ sub get_time {
     return $self->{cur_time};
 }
 
+sub log {
+    my ($self, $level, $msg) = @_;
+
+    chomp $msg;
+
+    my $time = $self->get_time();
+
+    my $line = sprintf("%-5s %5d %12s: $msg\n", $level, $time, "$self->{nodename}/$self->{log_id}");
+    print $line;
+    
+    $self->{logfh}->print($line);
+    $self->{logfh}->flush();
+}
+
 sub sleep {
    my ($self, $delay) = @_;
 
@@ -56,9 +75,9 @@ sub get_ha_manager_lock {
 }
 
 sub get_ha_agent_lock {
-    my ($self) = @_;
+    my ($self, $node) = @_;
 
-    my $res = $self->SUPER::get_ha_agent_lock();
+    my $res = $self->SUPER::get_ha_agent_lock($node);
     ++$self->{loop_delay};
 
     return $res;
@@ -90,4 +109,10 @@ sub loop_end_hook {
     $self->{cur_time} += 1; # easier for simulation
 }
 
+sub can_fork {
+    my ($self) = @_;
+
+    return 0;
+}
+
 1;
index af2eba43e7028b3ce4c9aeff0dd4afa2bb143228..b4900e97adcf61729340e3d76a7f6411780f1f14 100644 (file)
@@ -37,6 +37,11 @@ sub new {
     $self->{loop_count} = 0;
     $self->{cur_time} = 0;
 
+    my $statusdir = $self->statusdir();
+    my $logfile = "$statusdir/log";
+    $self->{logfh} = IO::File->new(">>$logfile") ||
+       die "unable to open '$logfile' - $!";
+
     foreach my $node (sort keys %{$self->{nodes}}) {
 
        my $d = $self->{nodes}->{$node};
@@ -60,6 +65,22 @@ sub get_time {
     return $self->{cur_time};
 }
 
+sub log {
+    my ($self, $level, $msg, $id) = @_;
+
+    chomp $msg;
+
+    my $time = $self->get_time();
+
+    $id = 'hardware' if !$id;
+
+    my $line = sprintf("%-5s %5d %12s: $msg\n", $level, $time, $id);
+    print $line;
+
+    $self->{logfh}->print($line);
+    $self->{logfh}->flush();
+}
+
 # simulate hardware commands
 # power <node> <on|off>
 # network <node> <on|off>
@@ -176,6 +197,13 @@ sub run {
 
        die "simulation end\n" if $self->{cur_time} > $max_sim_time;
 
+       foreach my $node (@nodes) {
+           my $d = $self->{nodes}->{$node};
+           # forced time update
+           $d->{lrm_env}->loop_start_hook($self->get_time());
+           $d->{crm_env}->loop_start_hook($self->get_time());
+       }
+       
        # apply new comand after 5 loop iterations
 
        if (($self->{loop_count} % 5) == 0) {