diff mbox series

[meta-filesystems,4/4] meta-filesystems: Add meta-filesystems-image-ptest

Message ID 20240222205827.2813212-4-raj.khem@gmail.com
State Accepted, archived
Headers show
Series [meta-filesystems,1/4] fuse3: Add missing runtime deps for ptests | expand

Commit Message

Khem Raj Feb. 22, 2024, 8:58 p.m. UTC
This will help in running ptests like core layer, right now there are
just 3 but I hope to get more contributions now that infra is in place

to run all ptests

bitbake meta-filesystems-image-ptest-all

to run a single recipe ptests

bitbake meta-filesystems-image-ptest-fuse3

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 .../ptest-packagelists-meta-filesystems.inc   | 18 +++++++++
 .../meta-filesystems-image-ptest-all.bb       | 25 ++++++++++++
 .../meta-filesystems-image-ptest-fast.bb      |  5 +++
 .../images/meta-filesystems-image-ptest.bb    | 40 +++++++++++++++++++
 4 files changed, 88 insertions(+)
 create mode 100644 meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
 create mode 100644 meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-all.bb
 create mode 100644 meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-fast.bb
 create mode 100644 meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest.bb

Comments

Tim Orling Feb. 23, 2024, 1:57 a.m. UTC | #1
On Thu, Feb 22, 2024 at 12:58 PM Khem Raj <raj.khem@gmail.com> wrote:

> This will help in running ptests like core layer, right now there are
> just 3 but I hope to get more contributions now that infra is in place
>
> to run all ptests
>
> bitbake meta-filesystems-image-ptest-all
>
> to run a single recipe ptests
>
> bitbake meta-filesystems-image-ptest-fuse3
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  .../ptest-packagelists-meta-filesystems.inc   | 18 +++++++++
>  .../meta-filesystems-image-ptest-all.bb       | 25 ++++++++++++
>  .../meta-filesystems-image-ptest-fast.bb      |  5 +++
>  .../images/meta-filesystems-image-ptest.bb    | 40 +++++++++++++++++++
>  4 files changed, 88 insertions(+)
>  create mode 100644
> meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
>  create mode 100644 meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest-all.bb
>  create mode 100644 meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest-fast.bb
>  create mode 100644 meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest.bb
>
> diff --git
> a/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
> b/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
> new file mode 100644
> index 0000000000..f57bbab930
> --- /dev/null
> +++ b/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
> @@ -0,0 +1,18 @@
> +#
> +# Lists of the ptest in meta-filesystems, sorted into two sets by the
> time they take
> +# Please keep these sorted in alphabetical order
> +#
> +# A first pass at getting all meta-filesystems recipes which inherit ptest
> +# meta_filesystems_ptest_recipes=$(bitbake-layers show-recipes
> --recipes-only --layer meta-filesystems --inherits ptest --bare | sed -e
> '1,/=== Matching recipes: ===/d')
> +# ptests which take less than ~30s each
> +
> +PTESTS_FAST_META_FILESYSTEMS = "\
> +    e2tools \
> +    fuse3 \
> +"
> +
> +PTESTS_SLOW_META_FILESYSTEMS = "\
> +"
> +PTESTS_PROBLEMS_META_FILESYSTEMS = "\
> +    sshfs-fuse \
> +"
> diff --git a/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest-all.bb
> b/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest-all.bb
> new file mode 100644
> index 0000000000..ffbfa1a3f6
> --- /dev/null
> +++ b/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest-all.bb
> @@ -0,0 +1,25 @@
> +DESCRIPTION = "Recipe to trigger execution of all meta-filesystems ptest
> images."
> +HOMEPAGE = "https://www.openembedded.org/"
> +
> +LICENSE = "MIT"
> +
> +inherit features_check nopackages
> +REQUIRED_DISTRO_FEATURES = "ptest"
> +
> +require conf/include/ptest-packagelists-meta-filesystems.inc
> +
> +# Include the full set of ptests
> +PTESTS_META_FILESYSTEMS = "${PTESTS_FAST_META_FILESYSTEMS}
> ${PTESTS_SLOW_META_FILESYSTEMS} ${PTESTS_PROBLEMS_META_FILESYSTEMS}"
> +
> +do_testimage[noexec] = "1"
> +do_testimage[depends] = "${@'
> '.join(['meta-filesystems-image-ptest-'+x+':do_testimage' for x in
> d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
> +
> +do_build[depends] = "${@'
> '.join(['meta-filesystems-image-ptest-'+x+':do_build' for x in
> d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
> +
> +# normally image.bbclass would do this
> +EXCLUDE_FROM_WORLD = "1"
> +
> +python () {
> +    if bb.utils.contains('IMAGE_CLASSES', 'testimage', True, False, d):
> +        bb.build.addtask("do_testimage", "", "", d)
> +}
> diff --git a/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest-fast.bb
> b/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest-fast.bb
> new file mode 100644
> index 0000000000..0eb5344d9e
> --- /dev/null
> +++ b/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest-fast.bb
> @@ -0,0 +1,5 @@
> +require meta-filesystems-image-ptest-all.bb
> +
> +DESCRIPTION = "Recipe to trigger execution of all fast meta-filesystems
> ptest images."
> +
> +PTESTS_META_OE = "${PTESTS_FAST_META_FILESYSTEMS}"

this should probably be PTESTS_META_FILESYSTEMS =
Unless we want to expand the scope.

>
> diff --git a/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest.bb
> b/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest.bb
> new file mode 100644
> index 0000000000..90d6a92c1b
> --- /dev/null
> +++ b/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest.bb
> @@ -0,0 +1,40 @@
> +inherit features_check
> +REQUIRED_DISTRO_FEATURES = "ptest"
> +
> +require recipes-core/images/core-image-minimal.bb
> +require conf/include/ptest-packagelists-meta-filesystems.inc
> +
> +SUMMARY = "meta-filesystems ptest test image"
> +
> +DESCRIPTION += "Also including the ${MCNAME} ptest package."
> +HOMEPAGE = "https://www.openembedded.org/"
> +
> +PTESTS_META_FILESYSTEMS = "${PTESTS_SLOW_META_FILESYSTEMS}
> ${PTESTS_FAST_META_FILESYSTEMS} ${PTESTS_PROBLEMS_META_FILESYSTEMS}"
> +
> +IMAGE_INSTALL:append = " ${MCNAME}-ptest openssh"
> +
> +BBCLASSEXTEND = "${@' '.join(['mcextend:'+x for x in
> d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
> +
> +# The image can be sufficiently large (~1.8GB) that we need to be careful
> that it fits in a live
> +# image (which has a 4GB limit), so nullify the overhead factor (1.3x out
> of the
> +# box) and explicitly add up to 1500MB.
> +IMAGE_OVERHEAD_FACTOR = "1.0"
> +IMAGE_ROOTFS_EXTRA_SPACE = "324288"
> +# If a particular ptest needs more space, it can be customized:
> +#IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-<pn> = "1024288"
> +
> +# ptests need more memory than standard to avoid the OOM killer
> +QB_MEM = "-m 1024"
> +# If a particular ptest needs more memroy, it can be customized:
> +#QB_MEM:virtclass-mcextend-<pn> = "-m 4096"
> +
> +TEST_SUITES = "ping ssh parselogs ptest"
> +
> +# Sadly at the moment the full set of ptests is not robust enough and
> sporadically fails in random places
> +PTEST_EXPECT_FAILURE = "1"
> +
> +python () {
> +    if not d.getVar("MCNAME"):
> +        raise bb.parse.SkipRecipe("No class extension set")
> +}
> +
> --
> 2.43.2
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#108997):
> https://lists.openembedded.org/g/openembedded-devel/message/108997
> Mute This Topic: https://lists.openembedded.org/mt/104516897/924729
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> ticotimo@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Tim Orling Feb. 23, 2024, 2:24 a.m. UTC | #2
On Thu, Feb 22, 2024 at 5:57 PM Tim Orling via lists.openembedded.org
<ticotimo=gmail.com@lists.openembedded.org> wrote:

>
>
> On Thu, Feb 22, 2024 at 12:58 PM Khem Raj <raj.khem@gmail.com> wrote:
>
>> This will help in running ptests like core layer, right now there are
>> just 3 but I hope to get more contributions now that infra is in place
>>
>> to run all ptests
>>
>> bitbake meta-filesystems-image-ptest-all
>>
>> to run a single recipe ptests
>>
>> bitbake meta-filesystems-image-ptest-fuse3
>>
>> Signed-off-by: Khem Raj <raj.khem@gmail.com>
>> ---
>>  .../ptest-packagelists-meta-filesystems.inc   | 18 +++++++++
>>  .../meta-filesystems-image-ptest-all.bb       | 25 ++++++++++++
>>  .../meta-filesystems-image-ptest-fast.bb      |  5 +++
>>  .../images/meta-filesystems-image-ptest.bb    | 40 +++++++++++++++++++
>>  4 files changed, 88 insertions(+)
>>  create mode 100644
>> meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
>>  create mode 100644 meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest-all.bb
>>  create mode 100644 meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest-fast.bb
>>  create mode 100644 meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest.bb
>>
>> diff --git
>> a/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
>> b/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
>> new file mode 100644
>> index 0000000000..f57bbab930
>> --- /dev/null
>> +++
>> b/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
>> @@ -0,0 +1,18 @@
>> +#
>> +# Lists of the ptest in meta-filesystems, sorted into two sets by the
>> time they take
>> +# Please keep these sorted in alphabetical order
>> +#
>> +# A first pass at getting all meta-filesystems recipes which inherit
>> ptest
>> +# meta_filesystems_ptest_recipes=$(bitbake-layers show-recipes
>> --recipes-only --layer meta-filesystems --inherits ptest --bare | sed -e
>> '1,/=== Matching recipes: ===/d')
>> +# ptests which take less than ~30s each
>> +
>> +PTESTS_FAST_META_FILESYSTEMS = "\
>> +    e2tools \
>> +    fuse3 \
>> +"
>> +
>> +PTESTS_SLOW_META_FILESYSTEMS = "\
>> +"
>> +PTESTS_PROBLEMS_META_FILESYSTEMS = "\
>> +    sshfs-fuse \
>> +"
>> diff --git a/meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest-all.bb
>> b/meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest-all.bb
>> new file mode 100644
>> index 0000000000..ffbfa1a3f6
>> --- /dev/null
>> +++ b/meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest-all.bb
>> @@ -0,0 +1,25 @@
>> +DESCRIPTION = "Recipe to trigger execution of all meta-filesystems ptest
>> images."
>> +HOMEPAGE = "https://www.openembedded.org/"
>> +
>> +LICENSE = "MIT"
>> +
>> +inherit features_check nopackages
>> +REQUIRED_DISTRO_FEATURES = "ptest"
>> +
>> +require conf/include/ptest-packagelists-meta-filesystems.inc
>> +
>> +# Include the full set of ptests
>> +PTESTS_META_FILESYSTEMS = "${PTESTS_FAST_META_FILESYSTEMS}
>> ${PTESTS_SLOW_META_FILESYSTEMS} ${PTESTS_PROBLEMS_META_FILESYSTEMS}"
>> +
>> +do_testimage[noexec] = "1"
>> +do_testimage[depends] = "${@'
>> '.join(['meta-filesystems-image-ptest-'+x+':do_testimage' for x in
>> d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
>> +
>> +do_build[depends] = "${@'
>> '.join(['meta-filesystems-image-ptest-'+x+':do_build' for x in
>> d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
>> +
>> +# normally image.bbclass would do this
>> +EXCLUDE_FROM_WORLD = "1"
>> +
>> +python () {
>> +    if bb.utils.contains('IMAGE_CLASSES', 'testimage', True, False, d):
>> +        bb.build.addtask("do_testimage", "", "", d)
>> +}
>> diff --git a/meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest-fast.bb
>> b/meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest-fast.bb
>> new file mode 100644
>> index 0000000000..0eb5344d9e
>> --- /dev/null
>> +++ b/meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest-fast.bb
>> @@ -0,0 +1,5 @@
>> +require meta-filesystems-image-ptest-all.bb
>> +
>> +DESCRIPTION = "Recipe to trigger execution of all fast meta-filesystems
>> ptest images."
>> +
>> +PTESTS_META_OE = "${PTESTS_FAST_META_FILESYSTEMS}"
>
> this should probably be PTESTS_META_FILESYSTEMS =
> Unless we want to expand the scope.
>

Also, THANK YOU for taking the example of meta-oe, meta-perl and
meta-python to another layer. I would love to see this extend to every
layer.


>> diff --git a/meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest.bb
>> b/meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest.bb
>> new file mode 100644
>> index 0000000000..90d6a92c1b
>> --- /dev/null
>> +++ b/meta-filesystems/recipes-filesystems/images/
>> meta-filesystems-image-ptest.bb
>> @@ -0,0 +1,40 @@
>> +inherit features_check
>> +REQUIRED_DISTRO_FEATURES = "ptest"
>> +
>> +require recipes-core/images/core-image-minimal.bb
>> +require conf/include/ptest-packagelists-meta-filesystems.inc
>> +
>> +SUMMARY = "meta-filesystems ptest test image"
>> +
>> +DESCRIPTION += "Also including the ${MCNAME} ptest package."
>> +HOMEPAGE = "https://www.openembedded.org/"
>> +
>> +PTESTS_META_FILESYSTEMS = "${PTESTS_SLOW_META_FILESYSTEMS}
>> ${PTESTS_FAST_META_FILESYSTEMS} ${PTESTS_PROBLEMS_META_FILESYSTEMS}"
>> +
>> +IMAGE_INSTALL:append = " ${MCNAME}-ptest openssh"
>> +
>> +BBCLASSEXTEND = "${@' '.join(['mcextend:'+x for x in
>> d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
>> +
>> +# The image can be sufficiently large (~1.8GB) that we need to be
>> careful that it fits in a live
>> +# image (which has a 4GB limit), so nullify the overhead factor (1.3x
>> out of the
>> +# box) and explicitly add up to 1500MB.
>> +IMAGE_OVERHEAD_FACTOR = "1.0"
>> +IMAGE_ROOTFS_EXTRA_SPACE = "324288"
>> +# If a particular ptest needs more space, it can be customized:
>> +#IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-<pn> = "1024288"
>> +
>> +# ptests need more memory than standard to avoid the OOM killer
>> +QB_MEM = "-m 1024"
>> +# If a particular ptest needs more memroy, it can be customized:
>> +#QB_MEM:virtclass-mcextend-<pn> = "-m 4096"
>> +
>> +TEST_SUITES = "ping ssh parselogs ptest"
>> +
>> +# Sadly at the moment the full set of ptests is not robust enough and
>> sporadically fails in random places
>> +PTEST_EXPECT_FAILURE = "1"
>> +
>> +python () {
>> +    if not d.getVar("MCNAME"):
>> +        raise bb.parse.SkipRecipe("No class extension set")
>> +}
>> +
>> --
>> 2.43.2
>>
>>
>>
>>
>>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#108998):
> https://lists.openembedded.org/g/openembedded-devel/message/108998
> Mute This Topic: https://lists.openembedded.org/mt/104516897/924729
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> ticotimo@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Khem Raj Feb. 23, 2024, 3:08 a.m. UTC | #3
On Thu, Feb 22, 2024 at 6:25 PM Tim Orling <ticotimo@gmail.com> wrote:
>
>
>
> On Thu, Feb 22, 2024 at 5:57 PM Tim Orling via lists.openembedded.org <ticotimo=gmail.com@lists.openembedded.org> wrote:
>>
>>
>>
>> On Thu, Feb 22, 2024 at 12:58 PM Khem Raj <raj.khem@gmail.com> wrote:
>>>
>>> This will help in running ptests like core layer, right now there are
>>> just 3 but I hope to get more contributions now that infra is in place
>>>
>>> to run all ptests
>>>
>>> bitbake meta-filesystems-image-ptest-all
>>>
>>> to run a single recipe ptests
>>>
>>> bitbake meta-filesystems-image-ptest-fuse3
>>>
>>> Signed-off-by: Khem Raj <raj.khem@gmail.com>
>>> ---
>>>  .../ptest-packagelists-meta-filesystems.inc   | 18 +++++++++
>>>  .../meta-filesystems-image-ptest-all.bb       | 25 ++++++++++++
>>>  .../meta-filesystems-image-ptest-fast.bb      |  5 +++
>>>  .../images/meta-filesystems-image-ptest.bb    | 40 +++++++++++++++++++
>>>  4 files changed, 88 insertions(+)
>>>  create mode 100644 meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
>>>  create mode 100644 meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-all.bb
>>>  create mode 100644 meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-fast.bb
>>>  create mode 100644 meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest.bb
>>>
>>> diff --git a/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc b/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
>>> new file mode 100644
>>> index 0000000000..f57bbab930
>>> --- /dev/null
>>> +++ b/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
>>> @@ -0,0 +1,18 @@
>>> +#
>>> +# Lists of the ptest in meta-filesystems, sorted into two sets by the time they take
>>> +# Please keep these sorted in alphabetical order
>>> +#
>>> +# A first pass at getting all meta-filesystems recipes which inherit ptest
>>> +# meta_filesystems_ptest_recipes=$(bitbake-layers show-recipes --recipes-only --layer meta-filesystems --inherits ptest --bare | sed -e '1,/=== Matching recipes: ===/d')
>>> +# ptests which take less than ~30s each
>>> +
>>> +PTESTS_FAST_META_FILESYSTEMS = "\
>>> +    e2tools \
>>> +    fuse3 \
>>> +"
>>> +
>>> +PTESTS_SLOW_META_FILESYSTEMS = "\
>>> +"
>>> +PTESTS_PROBLEMS_META_FILESYSTEMS = "\
>>> +    sshfs-fuse \
>>> +"
>>> diff --git a/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-all.bb b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-all.bb
>>> new file mode 100644
>>> index 0000000000..ffbfa1a3f6
>>> --- /dev/null
>>> +++ b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-all.bb
>>> @@ -0,0 +1,25 @@
>>> +DESCRIPTION = "Recipe to trigger execution of all meta-filesystems ptest images."
>>> +HOMEPAGE = "https://www.openembedded.org/"
>>> +
>>> +LICENSE = "MIT"
>>> +
>>> +inherit features_check nopackages
>>> +REQUIRED_DISTRO_FEATURES = "ptest"
>>> +
>>> +require conf/include/ptest-packagelists-meta-filesystems.inc
>>> +
>>> +# Include the full set of ptests
>>> +PTESTS_META_FILESYSTEMS = "${PTESTS_FAST_META_FILESYSTEMS} ${PTESTS_SLOW_META_FILESYSTEMS} ${PTESTS_PROBLEMS_META_FILESYSTEMS}"
>>> +
>>> +do_testimage[noexec] = "1"
>>> +do_testimage[depends] = "${@' '.join(['meta-filesystems-image-ptest-'+x+':do_testimage' for x in d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
>>> +
>>> +do_build[depends] = "${@' '.join(['meta-filesystems-image-ptest-'+x+':do_build' for x in d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
>>> +
>>> +# normally image.bbclass would do this
>>> +EXCLUDE_FROM_WORLD = "1"
>>> +
>>> +python () {
>>> +    if bb.utils.contains('IMAGE_CLASSES', 'testimage', True, False, d):
>>> +        bb.build.addtask("do_testimage", "", "", d)
>>> +}
>>> diff --git a/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-fast.bb b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-fast.bb
>>> new file mode 100644
>>> index 0000000000..0eb5344d9e
>>> --- /dev/null
>>> +++ b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-fast.bb
>>> @@ -0,0 +1,5 @@
>>> +require meta-filesystems-image-ptest-all.bb
>>> +
>>> +DESCRIPTION = "Recipe to trigger execution of all fast meta-filesystems ptest images."
>>> +
>>> +PTESTS_META_OE = "${PTESTS_FAST_META_FILESYSTEMS}"
>>
>> this should probably be PTESTS_META_FILESYSTEMS =
>> Unless we want to expand the scope.
>

yeah thanks for catching this. I have fixed it in master-next.

>
> Also, THANK YOU for taking the example of meta-oe, meta-perl and meta-python to another layer. I would love to see this extend to every layer.
>
>>>
>>> diff --git a/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest.bb b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest.bb
>>> new file mode 100644
>>> index 0000000000..90d6a92c1b
>>> --- /dev/null
>>> +++ b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest.bb
>>> @@ -0,0 +1,40 @@
>>> +inherit features_check
>>> +REQUIRED_DISTRO_FEATURES = "ptest"
>>> +
>>> +require recipes-core/images/core-image-minimal.bb
>>> +require conf/include/ptest-packagelists-meta-filesystems.inc
>>> +
>>> +SUMMARY = "meta-filesystems ptest test image"
>>> +
>>> +DESCRIPTION += "Also including the ${MCNAME} ptest package."
>>> +HOMEPAGE = "https://www.openembedded.org/"
>>> +
>>> +PTESTS_META_FILESYSTEMS = "${PTESTS_SLOW_META_FILESYSTEMS} ${PTESTS_FAST_META_FILESYSTEMS} ${PTESTS_PROBLEMS_META_FILESYSTEMS}"
>>> +
>>> +IMAGE_INSTALL:append = " ${MCNAME}-ptest openssh"
>>> +
>>> +BBCLASSEXTEND = "${@' '.join(['mcextend:'+x for x in d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
>>> +
>>> +# The image can be sufficiently large (~1.8GB) that we need to be careful that it fits in a live
>>> +# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
>>> +# box) and explicitly add up to 1500MB.
>>> +IMAGE_OVERHEAD_FACTOR = "1.0"
>>> +IMAGE_ROOTFS_EXTRA_SPACE = "324288"
>>> +# If a particular ptest needs more space, it can be customized:
>>> +#IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-<pn> = "1024288"
>>> +
>>> +# ptests need more memory than standard to avoid the OOM killer
>>> +QB_MEM = "-m 1024"
>>> +# If a particular ptest needs more memroy, it can be customized:
>>> +#QB_MEM:virtclass-mcextend-<pn> = "-m 4096"
>>> +
>>> +TEST_SUITES = "ping ssh parselogs ptest"
>>> +
>>> +# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places
>>> +PTEST_EXPECT_FAILURE = "1"
>>> +
>>> +python () {
>>> +    if not d.getVar("MCNAME"):
>>> +        raise bb.parse.SkipRecipe("No class extension set")
>>> +}
>>> +
>>> --
>>> 2.43.2
>>>
>>>
>>>
>>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#108998): https://lists.openembedded.org/g/openembedded-devel/message/108998
>> Mute This Topic: https://lists.openembedded.org/mt/104516897/924729
>> Group Owner: openembedded-devel+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [ticotimo@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
diff mbox series

Patch

diff --git a/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc b/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
new file mode 100644
index 0000000000..f57bbab930
--- /dev/null
+++ b/meta-filesystems/conf/include/ptest-packagelists-meta-filesystems.inc
@@ -0,0 +1,18 @@ 
+#
+# Lists of the ptest in meta-filesystems, sorted into two sets by the time they take
+# Please keep these sorted in alphabetical order
+#
+# A first pass at getting all meta-filesystems recipes which inherit ptest
+# meta_filesystems_ptest_recipes=$(bitbake-layers show-recipes --recipes-only --layer meta-filesystems --inherits ptest --bare | sed -e '1,/=== Matching recipes: ===/d')
+# ptests which take less than ~30s each
+
+PTESTS_FAST_META_FILESYSTEMS = "\
+    e2tools \
+    fuse3 \
+"
+
+PTESTS_SLOW_META_FILESYSTEMS = "\
+"
+PTESTS_PROBLEMS_META_FILESYSTEMS = "\
+    sshfs-fuse \
+"
diff --git a/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-all.bb b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-all.bb
new file mode 100644
index 0000000000..ffbfa1a3f6
--- /dev/null
+++ b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-all.bb
@@ -0,0 +1,25 @@ 
+DESCRIPTION = "Recipe to trigger execution of all meta-filesystems ptest images."
+HOMEPAGE = "https://www.openembedded.org/"
+
+LICENSE = "MIT"
+
+inherit features_check nopackages
+REQUIRED_DISTRO_FEATURES = "ptest"
+
+require conf/include/ptest-packagelists-meta-filesystems.inc
+
+# Include the full set of ptests
+PTESTS_META_FILESYSTEMS = "${PTESTS_FAST_META_FILESYSTEMS} ${PTESTS_SLOW_META_FILESYSTEMS} ${PTESTS_PROBLEMS_META_FILESYSTEMS}"
+
+do_testimage[noexec] = "1"
+do_testimage[depends] = "${@' '.join(['meta-filesystems-image-ptest-'+x+':do_testimage' for x in d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
+
+do_build[depends] = "${@' '.join(['meta-filesystems-image-ptest-'+x+':do_build' for x in d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
+
+# normally image.bbclass would do this
+EXCLUDE_FROM_WORLD = "1"
+
+python () {
+    if bb.utils.contains('IMAGE_CLASSES', 'testimage', True, False, d):
+        bb.build.addtask("do_testimage", "", "", d)
+}
diff --git a/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-fast.bb b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-fast.bb
new file mode 100644
index 0000000000..0eb5344d9e
--- /dev/null
+++ b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest-fast.bb
@@ -0,0 +1,5 @@ 
+require meta-filesystems-image-ptest-all.bb
+
+DESCRIPTION = "Recipe to trigger execution of all fast meta-filesystems ptest images."
+
+PTESTS_META_OE = "${PTESTS_FAST_META_FILESYSTEMS}"
diff --git a/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest.bb b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest.bb
new file mode 100644
index 0000000000..90d6a92c1b
--- /dev/null
+++ b/meta-filesystems/recipes-filesystems/images/meta-filesystems-image-ptest.bb
@@ -0,0 +1,40 @@ 
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "ptest"
+
+require recipes-core/images/core-image-minimal.bb
+require conf/include/ptest-packagelists-meta-filesystems.inc
+
+SUMMARY = "meta-filesystems ptest test image"
+
+DESCRIPTION += "Also including the ${MCNAME} ptest package."
+HOMEPAGE = "https://www.openembedded.org/"
+
+PTESTS_META_FILESYSTEMS = "${PTESTS_SLOW_META_FILESYSTEMS} ${PTESTS_FAST_META_FILESYSTEMS} ${PTESTS_PROBLEMS_META_FILESYSTEMS}"
+
+IMAGE_INSTALL:append = " ${MCNAME}-ptest openssh"
+
+BBCLASSEXTEND = "${@' '.join(['mcextend:'+x for x in d.getVar('PTESTS_META_FILESYSTEMS').split()])}"
+
+# The image can be sufficiently large (~1.8GB) that we need to be careful that it fits in a live
+# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
+# box) and explicitly add up to 1500MB.
+IMAGE_OVERHEAD_FACTOR = "1.0"
+IMAGE_ROOTFS_EXTRA_SPACE = "324288"
+# If a particular ptest needs more space, it can be customized:
+#IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-<pn> = "1024288"
+
+# ptests need more memory than standard to avoid the OOM killer
+QB_MEM = "-m 1024"
+# If a particular ptest needs more memroy, it can be customized:
+#QB_MEM:virtclass-mcextend-<pn> = "-m 4096"
+
+TEST_SUITES = "ping ssh parselogs ptest"
+
+# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places
+PTEST_EXPECT_FAILURE = "1"
+
+python () {
+    if not d.getVar("MCNAME"):
+        raise bb.parse.SkipRecipe("No class extension set")
+}
+