Skip to content

Commit

Permalink
support/testing: improve mosquitto test reliability
Browse files Browse the repository at this point in the history
The mosquitto runtime test can randomly fail on slow
runners, see [1].

This commit improves this test in the following ways:

- the mosquitto_sub subscriber process is now started in a subshell
to suppress the job control messages (to prevent any spurious
messages when the job stops),

- the standard error is redirected to /dev/null, to prevent the
printing of any messages,

- the mosquitto_pub publisher process is started later, by increasing
the sleep time,

- finally, a new sleep time is introduced between the mosquitto_pub
publisher process and the check of the mosquitto_sub subscriber, to
make sure it will have time to write its output and exit.

Fixes: [1]

[1] https://gitlab.com/buildroot.org/buildroot/-/jobs/8453386454

Signed-off-by: Julien Olivain <[email protected]>
Signed-off-by: Thomas Petazzoni <[email protected]>
  • Loading branch information
jolivain authored and tpetazzoni committed Nov 28, 2024
1 parent 20c2b2f commit 07a444d
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions support/testing/tests/package/test_mosquitto.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,19 @@ def test_run(self):
msg = "Hello Buildroot!"

# We subscribe to a topic and write one message to a log file.
self.assertRunOk(f"mosquitto_sub -t {topic} -C 1 > {log} &")
cmd = f"( mosquitto_sub -t {topic} -C 1 > {log} 2> /dev/null & )"
self.assertRunOk(cmd)

time.sleep(1)
# We give some time to the subscriber process to settle.
time.sleep(5)

# We publish a message.
self.assertRunOk(f"mosquitto_pub -t {topic} -m '{msg}'")

# We give some more time to the subscriber process to write
# the log and quit.
time.sleep(5)

# We check the log file contains our message.
out, ret = self.emulator.run(f"cat {log}")
self.assertEqual(ret, 0)
Expand Down

0 comments on commit 07a444d

Please sign in to comment.