All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 7/8] x86: efi: Add a hello world test program
Date: Mon, 14 Nov 2016 13:44:48 -0700	[thread overview]
Message-ID: <CAPnjgZ2FA82rrOZicCrdXfpSrRbL1K_kqpM336SqismwfSidrQ@mail.gmail.com> (raw)
In-Reply-To: <3D636533-5BE9-4029-BB71-ECB0C7605D12@suse.de>

Hi Alex,

On 11 November 2016 at 23:23, Alexander Graf <agraf@suse.de> wrote:
>
>
>> Am 11.11.2016 um 17:17 schrieb Simon Glass <sjg@chromium.org>:
>>
>> Hi Alex,
>>
>>> On 7 November 2016 at 09:32, Alexander Graf <agraf@suse.de> wrote:
>>>
>>>
>>>> On 07/11/2016 10:46, Simon Glass wrote:
>>>>
>>>> Hi Alex,
>>>>
>>>>> On 19 October 2016 at 01:09, Alexander Graf <agraf@suse.de> wrote:
>>>>>
>>>>>
>>>>>
>>>>>> On 18/10/2016 22:37, Simon Glass wrote:
>>>>>>
>>>>>> Hi Alex,
>>>>>>
>>>>>>> On 18 October 2016 at 01:14, Alexander Graf <agraf@suse.de> wrote:
>>>>>>>
>>>>>>>> On 10/18/2016 04:29 AM, Simon Glass wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> It is useful to have a basic sanity check for EFI loader support. Add
>>>>>>>> a
>>>>>>>> 'bootefi hello' command which loads HelloWord.efi and runs it under
>>>>>>>> U-Boot.
>>>>>>>>
>>>>>>>> Signed-off-by: Simon Glass <sjg@chromium.org>
>>>>>>>> ---
>>>>>>>>
>>>>>>>> Changes in v3:
>>>>>>>> - Include a link to the program instead of adding it to the tree
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> So, uh, where is the link?
>>>>>>
>>>>>>
>>>>>> I put it in the README (see the arm patch).
>>>>>>
>>>>>>>
>>>>>>> I'm really not convinced this command buys us anything yet. I do agree
>>>>>>> that
>>>>>>> we want automated testing - but can't we get that using QEMU and a
>>>>>>> downloadable image file that we pass in as disk and have the distro
>>>>>>> boot do
>>>>>>> its magic?
>>>>>>
>>>>>>
>>>>>> That seems very heavyweight as a sanity check, although I agree it is
>>>>>> useful.
>>>>>
>>>>>
>>>>> It's not really much more heavy weight. The "image file" could simply
>>>>> contain your hello world binary. But with this we don't just verify
>>>>> whether "bootefi" works, but also whether the default boot path works ok.
>>>>
>>>>
>>>> I don't think I understand what you mean by 'image file'. Is it
>>>> something other than the .efi file? Do you mean a disk image?
>>>
>>>
>>> Yes. For reasonable test coverage, we should also verify that the distro
>>> defaults wrote a sane boot script that automatically searches for a default
>>> EFI binary in /efi/boot/bootx86.efi on the first partition of all devices
>>> and runs it.
>>>
>>> So if we just provide an SD card image or hard disk image to QEMU which
>>> contains a hello world .efi binary as that default boot file, we don't only
>>> test whether the "bootefi" command works, but also whether the distro boot
>>> script works.
>>
>> That's right.
>>
>>>
>>>>
>>>>>
>>>>>> Here I am just making sure that EFI programs can start, print output
>>>>>> and exit. It is a test that we can easily run without a lot of
>>>>>> overhead, much less than a full distro boot.
>>>>>
>>>>>
>>>>> Again, I don't think it's much more overhead and I do believe it gives
>>>>> us much cleaner separation between responsibilities of code (tests go
>>>>> where tests are).
>>>>
>>>>
>>>> You are talking about a functional test, something that tests things
>>>> end to end. I prefer to at least start with a smaller test. Granted it
>>>> takes a little more work but it means there are fewer things to hunt
>>>> through when something goes wrong.
>>>
>>>
>>> Yes, I personally find unit tests terribly annoying and unproductive and
>>> functional tests very helpful :). And in this case, the effort to write it
>>> is about the same for both, just that the functional test actually tells you
>>> that things work or don't work at the end of the day.
>>>
>>> With a code base like U-Boot, a simple functional test like the above plus
>>> git bisect should get you to an offending patch very quickly.
>>
>> This is not a unit test - in fact the EFI stuff has no unit tests. I
>> suppose if we are trying to find a name this is a small functional
>> test since it exercises the general functionality.
>>
>> I am much keener on small tests than large ones for finding simple
>> bugs. Of course you can generally bisect to find a bug, but the more
>> layers of software you need to look for the harder this is.
>>
>> We could definitely use a pytest which checks an EFI boot into an
>> image, but I don't think this obviates the need for a smaller targeted
>> test like this one.
>
> I think arguing over this is moot :). More tests is usually a good thing, so whoever gets to write them gets to push them ;). As long as the licenses are sound at least.

OK good, well please can you review this at some point? Also, are you
planning to write the 'larger' test? How do you test this all in suse?

Regards,
Simon

  reply	other threads:[~2016-11-14 20:44 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-18  2:29 [U-Boot] [PATCH v3 1/8] x86: Add implementations of setjmp() and longjmp() Simon Glass
2016-10-18  2:29 ` [U-Boot] [PATCH v3 2/8] efi: Use asmlinkage for EFIAPI Simon Glass
2016-10-18  7:12   ` Alexander Graf
2016-10-18 20:37     ` Simon Glass
2016-10-19  7:11       ` Alexander Graf
2016-11-07 15:45         ` Simon Glass
2016-10-18  2:29 ` [U-Boot] [PATCH v3 3/8] efi: Fix missing EFIAPI specifiers Simon Glass
2016-10-18  2:29 ` [U-Boot] [PATCH v3 4/8] x86: Tidy up selection of building the EFI stub Simon Glass
2016-10-18  3:07   ` Bin Meng
2016-10-18  2:29 ` [U-Boot] [PATCH v3 5/8] arm: efi: Add a hello world test program Simon Glass
2016-10-18  2:29 ` [U-Boot] [PATCH v3 6/8] x86: efi: Add EFI loader support for x86 Simon Glass
2016-10-18  2:29 ` [U-Boot] [PATCH v3 7/8] x86: efi: Add a hello world test program Simon Glass
2016-10-18  3:06   ` Bin Meng
2016-10-18  7:14   ` Alexander Graf
2016-10-18 20:37     ` Simon Glass
2016-10-19  7:09       ` Alexander Graf
2016-11-07 15:46         ` Simon Glass
2016-11-07 16:32           ` Alexander Graf
2016-11-11 16:17             ` Simon Glass
2016-11-12  6:23               ` Alexander Graf
2016-11-14 20:44                 ` Simon Glass [this message]
2016-11-14 20:46                   ` Alexander Graf
2016-11-14 20:58                     ` Simon Glass
2016-11-14 21:24                       ` Alexander Graf
2016-11-14 21:35                         ` Simon Glass
2016-10-18  2:29 ` [U-Boot] [PATCH v3 8/8] x86: Enable EFI loader support Simon Glass
2016-10-18  3:02 ` [U-Boot] [PATCH v3 1/8] x86: Add implementations of setjmp() and longjmp() Bin Meng
2016-10-18  3:20   ` Bin Meng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAPnjgZ2FA82rrOZicCrdXfpSrRbL1K_kqpM336SqismwfSidrQ@mail.gmail.com \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.