Thanks for the answers!

Regarding the end-to-end testing framework, perhaps that's a topic that
needs further discussion / consensus (?). E.g:
  - discuss policy: what parts of coreboot should have end-to-end testing.
Should it be forced? recommended? optional?
  - do some requirement gathering: not only from the  firmware but also for
the coreboot/utils
  - Update Jenkins accordingly

In the meantime, would it make sense, as Jack mentioned, to land my change
[1] as it is? It is small/simple and it only has  ~160 LoC Python.
For comparison, other util are using Python: util/qualcomm has ~3500 LoC
Python [2]
I'll happily migrate + integrate my test once a end-to-end test has been
chosen.

Thanks!

[1]: https://review.coreboot.org/c/coreboot/+/57869
[2]: https://github.com/coreboot/coreboot/tree/master/util/qualcomm

On Tue, Oct 12, 2021 at 8:30 AM ron minnich <[email protected]> wrote:

> contest is a coming standard. The companies I work with have moved away
> from python test frameworks. Familiarity did not breed respect for python
> test frameworks.
>
> On Tue, Oct 12, 2021 at 7:31 AM Jack Rosenthal <[email protected]>
> wrote:
>
>> Both bats and expect seem problematic for Ricardo's use case ...
>> generating the elog binary format in these tools seems difficult, bash
>> wasn't really meant for generating C structs.
>>
>> One huge advantage of pytest is that it's fairly industry standard at
>> this point. There's a good number of people who have used it, and there's a
>> large community around it (i.e., finding Q&A on sites like stack overflow
>> is possible). I wasn't able to find a single stack overflow question about
>> ConTest, although I may be looking in the wrong places (looks like they do
>> have a slack group chat).
>>
>> I believe Ricardo had an open question on the CL if it was OK to submit
>> as an optional test suite for elogtool. I.e., tests don't need to run on CI
>> tools or anything, if there's developers that want to run the tests they
>> can if they have Python.
>>
>>
>>
>> On Tue, Oct 12, 2021 at 8:02 AM Patrick Georgi <[email protected]>
>> wrote:
>>
>>> Hi Ricardo,
>>>
>>> sorry for the late response, and that your project fell a bit by the
>>> wayside. I guess discussion configuration frameworks is more attractive to
>>> this community than testing frameworks (which also explains why we have ~3
>>> config frameworks and only ~1 testing frameworks ;-) )
>>>
>>> So yes, testing is something we really need to improve on. I'm not sure
>>> if "contest" is the right solution to your particular problem though. The
>>> first thing I see when opening up its page is something about mysql, and
>>> scrolling down, something about submitting jobs to a server. That seems
>>> more like a potential replacement to our Jenkins install (
>>> qa.coreboot.org) rather than something to easily write end-to-end tests
>>> for our userland tools.
>>>
>>> Looking for options, my first instinct was to go for expect(1), but
>>> that's really best for interactive uses - might be interesting if we ever
>>> grow interactive tools, but so far we manage to stick to clean and tidy
>>> CLI. Then I ran into https://github.com/bats-core/bats-core. That seems
>>> maintained, reasonably minimal in its dependencies, it emits TAP which is
>>> as good as JUnit in terms of Jenkins-integration (so we can have
>>> qa.coreboot.org parse the results and give meaningful feedback on
>>> review.coreboot.org), and it seems to be fairly widely used for similar
>>> things to what you're doing, see
>>> https://github.com/bats-core/bats-core/wiki/Projects-Using-Bats - it
>>> points to many, many code examples, e.g.
>>> https://github.com/docker/machine/blob/master/test/integration/core/core-commands.bats
>>> which should cover the basic "call some command, see what it did" scenario
>>> quite nicely.
>>>
>>> Of course in the end it's all a matter of taste, and that's why I opened
>>> the can of worms again that is Python-use in coreboot land. As python
>>> hasn't seen a warmer reception than last time, I'd look for alternatives.
>>> Maybe Bats could do? Of course, I haven't _actually_ used it yet and if
>>> writing tests with that makes you want to scream and run away, we'd have to
>>> look for other options (please, don't run away!)
>>>
>>>
>>> Regards,
>>> Patrick
>>>
>>> Am Mo., 4. Okt. 2021 um 18:59 Uhr schrieb Ricardo Quesada <
>>> [email protected]>:
>>>
>>>> Hi all,
>>>>
>>>> Regarding Patrick's 2nd point (end-to-end testing), what's the
>>>> recommend way to go forward?
>>>> I just need to run one of the Coreboot's utils (in this case
>>>> "elogtool"), and make sure the output is the expected one.
>>>>
>>>> Should I use Contest, as suggested by Ron Minnich?
>>>>
>>>> Thanks!
>>>>
>>>>
>>>>
>>>> On Thu, Sep 30, 2021 at 10:18 AM ron minnich <[email protected]>
>>>> wrote:
>>>>
>>>>> Speaking as the person who wrote the first few config tools in python,
>>>>> and was happy to see the python dependency gone, I think bringing
>>>>> python back in would be a mistake.
>>>>>
>>>>> Every single python test framework I've worked with works until there
>>>>> is a problem, and I then find myself having to walk back a python call
>>>>> trace, because what inevitably breaks is the test framework tooling.
>>>>> It's why so many projects are removing python test frameworks.
>>>>>
>>>>> If you want a good test framework, get the linuxboot fork of
>>>>> facebook's contest github.com/linuxboot/contest, written in Go, in use
>>>>> at scale near you.
>>>>>
>>>>> It's easy to let the joy of building a build system overwhelm the
>>>>> actual goals of a project. coreboot is not about being a build system.
>>>>> It's easy to fall into the trap of creating an ever more complex
>>>>> system that is more than is needed.
>>>>>
>>>>> On Thu, Sep 30, 2021 at 9:11 AM Patrick Georgi via coreboot
>>>>> <[email protected]> wrote:
>>>>> >
>>>>> > Am Do., 30. Sept. 2021 um 17:29 Uhr schrieb Jack Rosenthal <
>>>>> [email protected]>:
>>>>> >>
>>>>> >> With respect to Kconfig, we (at Google) encountered a lovely build
>>>>> flake after the Kconfig uprev last month in the coreboot tree that took a
>>>>> couple of weeks to sort out and resolve. Some sort of automated validation
>>>>> that the code is working could have possibly helped. Of course, the C
>>>>> implementation of Kconfig has no tests at all. Some tests is better than
>>>>> nothing.
>>>>> >
>>>>> >
>>>>> > Let me put the record straight:
>>>>> >
>>>>> > - The last kconfig "uprev" hasn't been a simple update the way
>>>>> https://review.coreboot.org/c/coreboot/+/57880 is, but rebuilt the
>>>>> entire build system integration to ease maintenance
>>>>> > - That issue sprang up because before the kconfig update, we were
>>>>> shipping prebuilt parser files (C code) while now we made bison and flex
>>>>> hard dependencies for our build
>>>>> > - Tests covering the C code wouldn't have helped, because the issue
>>>>> wasn't in the C code
>>>>> > - The issue we were facing has been an external dependency (namely:
>>>>> the Chromium OS development environment shipping a broken version of
>>>>> bison(1))
>>>>> > - Fixing bison in CrOS wouldn't have helped any because we have to
>>>>> assume that other users come with the same kind of broken bison tool
>>>>> > - The fix has been to ship pre-built files again to remove an
>>>>> external dependency
>>>>> >
>>>>> > The alternative that we did actually consider was to add support for
>>>>> building bison and flex to util/crossgcc/buildgcc. For three files that's
>>>>> sheer madness, so we went back to precompiled files instead.
>>>>> >
>>>>> > In relation to your proposal to adopt kconfiglib: We can run into
>>>>> any kind of external tool demonstrating weird behavior. That's true for
>>>>> bison (as seen here) just as it can be true for arbitrary python versions
>>>>> (even when specified to be "python 3.6+" or whatever): Linux distributions
>>>>> do strange things to their packages, and we're not a Linux-only project, 
>>>>> so
>>>>> even official, unchanged, straight-from-the-server python might behave
>>>>> unexpectedly on less well exercised platforms.
>>>>> >
>>>>> > The best way to reduce issues on that end is to avoid external
>>>>> dependencies - like bison, like flex... like python.
>>>>> > I'd _love_ to avoid the dependency on the host compiler as well, but
>>>>> that's one of those "sheer madness" moments when you support a multitude 
>>>>> of
>>>>> operating systems on as many architectures.
>>>>> >
>>>>> > Introducing kconfiglib (and through it, a deep reliance on python)
>>>>> just doesn't seem to provide comparable benefits.
>>>>> >
>>>>> >
>>>>> > Patrick
>>>>> > --
>>>>> > Google Germany GmbH, ABC-Str. 19, 20354 Hamburg
>>>>> > Registergericht und -nummer: Hamburg, HRB 86891, Sitz der
>>>>> Gesellschaft: Hamburg
>>>>> > Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
>>>>> > _______________________________________________
>>>>> > coreboot mailing list -- [email protected]
>>>>> > To unsubscribe send an email to [email protected]
>>>>>
>>>>
>>>
>>> --
>>> Google Germany GmbH, ABC-Str. 19, 20354 Hamburg
>>> Registergericht und -nummer: Hamburg, HRB 86891, Sitz der Gesellschaft:
>>> Hamburg
>>> Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
>>>
>>
>>
>> --
>>
>> Jack Rosenthal (he/him/his)
>>
>> Software Engineer - Chrome OS
>>
>> Google Boulder
>>
>> [email protected]
>>
>> I value feedback from others. Please feel free to contact me directly, or
>> file it anonymously at go/jrosenth-feedback
>> <https://goto.google.com/jrosenth-feedback>.
>>
>
_______________________________________________
coreboot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to