/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos-ctl

  • Committer: teddy at recompile
  • Date: 2020-11-29 22:54:26 UTC
  • Revision ID: teddy@recompile.se-20201129225426-6ud4hwj36zo67igi
Fix flaky test in password-agent

The test_send_password_to_socket_EMSGSIZE function should not use a
hard-coded constant to trigger an EMSGSIZE error from send().

* dracut-module/password-agent.c (send_password_to_socket): Only save
  errno from send() if it returned < 0.  Show strerror(errno) if
  send() does return EMSGSIZE.  Show number of bytes sent if send()
  sends less than all bytes.
  (test_send_password_to_socket_EMSGSIZE): Do not skip this test on
  non-AMD64 platforms.  Try to find a suitable message size to trigger
  EMSGSIZE before testing send_password_to_socket(), and only skip
  this test if such a triggering message size is not found.

Reported-By: Simon McVittie <smcv@debian.org>
Closes: #975457

Show diffs side-by-side

added added

removed removed

Lines of Context:
89
89
 
90
90
locale.setlocale(locale.LC_ALL, "")
91
91
 
92
 
version = "1.8.14"
 
92
version = "1.8.12"
93
93
 
94
94
 
95
95
def main():
102
102
    clientnames = options.client
103
103
 
104
104
    if options.debug:
105
 
        logging.getLogger("").setLevel(logging.DEBUG)
 
105
        log.setLevel(logging.DEBUG)
106
106
 
107
107
    if dbussy is not None and ravel is not None:
108
108
        bus = dbussy_adapter.CachingBus(dbussy, ravel)
2439
2439
        busname = "se.recompile.Mandos"
2440
2440
        client_interface = "se.recompile.Mandos.Client"
2441
2441
        command.Approve().run(self.bus.clients, self.bus)
2442
 
        self.assertTrue(self.bus.clients)
2443
2442
        for clientpath in self.bus.clients:
2444
2443
            self.assertIn(("Approve", busname, clientpath,
2445
2444
                           client_interface, (True,)), self.bus.calls)
2448
2447
        busname = "se.recompile.Mandos"
2449
2448
        client_interface = "se.recompile.Mandos.Client"
2450
2449
        command.Deny().run(self.bus.clients, self.bus)
2451
 
        self.assertTrue(self.bus.clients)
2452
2450
        for clientpath in self.bus.clients:
2453
2451
            self.assertIn(("Approve", busname, clientpath,
2454
2452
                           client_interface, (False,)),
2455
2453
                          self.bus.calls)
2456
2454
 
2457
2455
    def test_Remove(self):
2458
 
        busname = "se.recompile.Mandos"
2459
 
        server_path = "/"
2460
 
        server_interface = "se.recompile.Mandos"
2461
 
        orig_clients = self.bus.clients.copy()
2462
2456
        command.Remove().run(self.bus.clients, self.bus)
2463
 
        self.assertFalse(self.bus.clients)
2464
 
        for clientpath in orig_clients:
2465
 
            self.assertIn(("RemoveClient", busname,
2466
 
                           server_path, server_interface,
 
2457
        for clientpath in self.bus.clients:
 
2458
            self.assertIn(("RemoveClient", dbus_busname,
 
2459
                           dbus_server_path, dbus_server_interface,
2467
2460
                           (clientpath,)), self.bus.calls)
2468
2461
 
2469
2462
    expected_json = {
2671
2664
        else:
2672
2665
            cmd_args = [() for x in range(len(self.values_to_get))]
2673
2666
            values_to_get = self.values_to_get
2674
 
        self.assertTrue(values_to_get)
2675
2667
        for value_to_get, cmd_arg in zip(values_to_get, cmd_args):
2676
2668
            for clientpath in self.bus.clients:
2677
2669
                self.bus.clients[clientpath][self.propname] = (
2678
2670
                    Unique())
2679
2671
            self.command(*cmd_arg).run(self.bus.clients, self.bus)
2680
 
            self.assertTrue(self.bus.clients)
2681
2672
            for clientpath in self.bus.clients:
2682
2673
                value = (self.bus.clients[clientpath]
2683
2674
                         [self.propname])