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 <[email protected]> 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 > [email protected] > http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- David Strauss | [email protected] | +1 512 577 5827 [mobile] _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
