[systemd-devel] [PATCH v4] Skip tests that depend on /etc/machine-id if it is not present
David Strauss
david at davidstrauss.net
Sat Dec 1 20:28:43 PST 2012
Would it be possible, for testing purposes, to generate a machine ID
on the fly if one is not present on disk?
On Sat, Dec 1, 2012 at 7:48 AM, Zbigniew Jędrzejewski-Szmek
<zbyszek at in.waw.pl> wrote:
> On Sat, Dec 01, 2012 at 10:01:35AM +0530, Ramkumar Ramachandra wrote:
>> The following tests fail if /etc/machine-id is not present:
>>
>> $ ./test-id128
>> random: a08ea8ed34594d4bbd953dd182ec86f9
>> Assertion 'sd_id128_get_machine(&id) == 0' failed at
>> src/test/test-id128.c:41, function main(). Aborting.
>> [1] 8017 abort (core dumped) ./test-id128
>>
>> $ ./test-journal
>> Assertion 'journal_file_open("test.journal", O_RDWR|O_CREAT, 0666,
>> true, true, NULL, NULL, NULL, &f) == 0' failed at
>> src/journal/test-journal.c:46, function main(). Aborting.
>> [1] 8059 abort (core dumped) ./test-journal
>>
>> $ ./test-journal-stream
>> Assertion 'journal_file_open("one.journal", O_RDWR|O_CREAT, 0666,
>> true, false, NULL, NULL, NULL, &one) == 0' failed at
>> src/journal/test-journal-stream.c:88, function main(). Aborting.
>> [1] 8107 abort (core dumped) ./test-journal-stream
>>
>> $ ./test-journal-verify
>> Generating...
>> Assertion 'journal_file_open("test.journal", O_RDWR|O_CREAT, 0666,
>> true, !!verification_key, NULL, NULL, NULL, &f) == 0' failed at
>> src/journal/test-journal-verify.c:87, function main(). Aborting.
>> [1] 8154 abort (core dumped) ./test-journal-verify
>>
>> This is because they call sd_id128_get_machine() which barfs if
>> /etc/machine-id can't be open()'ed. Treat ENOENT as a special case
>> and skip the dependent tests instead of failing them.
> Hi,
>
> I started munging your patch to apply it, but on second thought it is
> totally the wrong direction to take. The purpose of tests is to check
> if systemd will function after installation. And as mentioned
> elsewhere in the thread, journald will break badly, and thus systemd
> will not function as expected. So it is much better to have the tests
> fail as they do now, then to paper over a missing file. So I think that
> the patch should
> (a) skip _some_ of the tests to reduce noise,
> (b) fail at least one test to tell the user that /etc/machine-id is missing.
>
> I would be nice to
> (c) using automake skip (below) to do that,
>
> Automake test skipping:
> + #define EXIT_AUTOMAKE_SKIP 77
>
> + sd_id128_t id;
> +
> + if (sd_id128_get_machine(&id) == -ENOENT) {
> + printf("skipping test: /etc/machine-id not present\n");
> + return EXIT_AUTOMAKE_SKIP;
> + }
>
> SKIP: test-journal-verify
> PASS: test-mmap-cache
> ======================
> All 17 tests passed
> (4 tests were not run)
> ======================
>
> Zbyszek
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
David Strauss
| david at davidstrauss.net
| +1 512 577 5827 [mobile]
More information about the systemd-devel
mailing list