@@ -78,7 +78,15 @@ my $load_avg_file = simulate_load('0.93 0.95 10.25 2/2207 1212', 'worker-overall
78
78
use Mojo::Base -base;
79
79
has availability_error => ' Cache service info error: Connection refused' ;
80
80
}
81
+ {
82
+ package Test::FakeDBus ; # uncoverable statement count:2
83
+ use Mojo::Base -base, -signatures;
84
+ has mock_service_value => 1;
85
+ sub get_service ($self , $service_name ) { $self -> mock_service_value }
86
+ }
81
87
88
+ my $dbus_mock = Test::MockModule-> new(' Net::DBus' , no_auto => 1);
89
+ $dbus_mock -> define(system => sub (@) { Test::FakeDBus-> new });
82
90
my $cache_service_client_mock = Test::MockModule-> new(' OpenQA::CacheService::Client' );
83
91
$cache_service_client_mock -> redefine(info => sub { Test::FakeCacheServiceClientInfo-> new });
84
92
@@ -546,6 +554,20 @@ subtest 'checking worker address' => sub {
546
554
is $global_settings -> {WORKER_HOSTNAME }, ' localhost' , ' "localhost" assumed as WORKER_HOSTNAME for local worker' ;
547
555
};
548
556
557
+ subtest ' check availability of Open vSwitch related D-Bus service' => sub {
558
+ delete $worker -> settings-> {_worker_classes };
559
+ $worker -> settings-> global_settings-> {WORKER_CLASS } = ' foo,tap,bar' ;
560
+ ok $worker -> settings-> has_class(' tap' ), ' worker has tap class' ;
561
+ is $worker -> check_availability, undef , ' worker considered available if D-Bus service available' ;
562
+
563
+ $worker -> {_system_dbus }-> mock_service_value(undef );
564
+ like $worker -> check_availability, qr / D-Bus/ , ' worker considered broken if D-Bus service not available' ;
565
+
566
+ delete $worker -> settings-> {_worker_classes };
567
+ $worker -> settings-> global_settings-> {WORKER_CLASS } = ' foo,bar' ;
568
+ is $worker -> check_availability, undef , ' worker considered always available if not a tap worker' ;
569
+ };
570
+
549
571
subtest ' handle client status changes' => sub {
550
572
my $fake_client = OpenQA::Worker::WebUIConnection-> new(' some-host' , {apikey => ' foo' , apisecret => ' bar' });
551
573
my $fake_client_2
0 commit comments