public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
From: "Alexis Lothoré" <alexis.lothore@bootlin.com>
To: Richard Purdie <richard.purdie@linuxfoundation.org>,
	Openembedded-core@lists.openembedded.org
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>
Subject: Re: [OE-Core][PATCH v3 1/5] lib/oeqa: share get_json_result_dir helper
Date: Fri, 23 Feb 2024 18:36:10 +0100	[thread overview]
Message-ID: <5b5df6fe-fe1d-4508-aae6-914137a167a2@bootlin.com> (raw)
In-Reply-To: <d17283d1e037be26e5fd905853ff47c48d630e85.camel@linuxfoundation.org>

On 2/23/24 18:27, Richard Purdie wrote:
> On Fri, 2024-02-23 at 16:16 +0100, Alexis Lothoré via
> lists.openembedded.org wrote:
>> From: Alexis Lothoré <alexis.lothore@bootlin.com>
>>
>> Multiple places in oeqa need to get the log output path, and redefine
>> a
>> small helper to accomplish this
>>
>> Define this helper in lib/oeqa/utils/__init__.py and import it
>> wherever
>> needed to allow using it.
>>
>> Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
>> ---
>> There is one additional place re-definining (slightly) differently
>> this
>> helper, which is in selftest/context.py. This one does not check
>> OEQA_JSON_RESULT_DIR from the datastore but through test data
>> embedded in
>> the test context. Based on Richard's feedback in v2, the datastore
>> functions may be correctly simulated even in this case, so I may do
>> some
>> tests and come up with a patch after this series
>> ---
>>  meta/classes-recipe/testimage.bbclass | 12 +++---------
>>  meta/lib/oeqa/sdk/testsdk.py          | 11 ++---------
>>  meta/lib/oeqa/utils/__init__.py       |  7 +++++++
>>  3 files changed, 12 insertions(+), 18 deletions(-)
>>
>> diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-
>> recipe/testimage.bbclass
>> index d076102f9691..959c226072aa 100644
>> --- a/meta/classes-recipe/testimage.bbclass
>> +++ b/meta/classes-recipe/testimage.bbclass
>> @@ -149,13 +149,6 @@ def get_testimage_configuration(d, test_type,
>> machine):
>>      return configuration
>>  get_testimage_configuration[vardepsexclude] = "DATETIME"
>>  
>> -def get_testimage_json_result_dir(d):
>> -    json_result_dir = os.path.join(d.getVar("LOG_DIR"), 'oeqa')
>> -    custom_json_result_dir = d.getVar("OEQA_JSON_RESULT_DIR")
>> -    if custom_json_result_dir:
>> -        json_result_dir = custom_json_result_dir
>> -    return json_result_dir
>> -
>>  def get_testimage_result_id(configuration):
>>      return '%s_%s_%s_%s' % (configuration['TEST_TYPE'],
>> configuration['IMAGE_BASENAME'], configuration['MACHINE'],
>> configuration['STARTTIME'])
>>  
>> @@ -224,6 +217,7 @@ def testimage_main(d):
>>      from oeqa.core.target.qemu import supported_fstypes
>>      from oeqa.core.utils.test import getSuiteCases
>>      from oeqa.utils import make_logger_bitbake_compatible
>> +    from oeqa.utils import get_json_result_dir
>>  
>>      def sigterm_exception(signum, stackframe):
>>          """
>> @@ -426,14 +420,14 @@ def testimage_main(d):
>>      # Show results (if we have them)
>>      if results:
>>          configuration = get_testimage_configuration(d, 'runtime',
>> machine)
>> -        results.logDetails(get_testimage_json_result_dir(d),
>> +        results.logDetails(get_json_result_dir(d),
>>                          configuration,
>>                          get_testimage_result_id(configuration),
>>                         
>> dump_streams=d.getVar('TESTREPORT_FULLLOGS'))
>>          results.logSummary(pn)
>>  
>>      # Copy additional logs to tmp/log/oeqa so it's easier to find
>> them
>> -    targetdir = os.path.join(get_testimage_json_result_dir(d),
>> d.getVar("PN"))
>> +    targetdir = os.path.join(get_json_result_dir(d), d.getVar("PN"))
>>      os.makedirs(targetdir, exist_ok=True)
>>      os.symlink(bootlog, os.path.join(targetdir,
>> os.path.basename(bootlog)))
>>      os.symlink(d.getVar("BB_LOGFILE"), os.path.join(targetdir,
>> os.path.basename(d.getVar("BB_LOGFILE") + "." +
>> d.getVar('DATETIME'))))
>> diff --git a/meta/lib/oeqa/sdk/testsdk.py
>> b/meta/lib/oeqa/sdk/testsdk.py
>> index b4719110edbc..518b09febb61 100644
>> --- a/meta/lib/oeqa/sdk/testsdk.py
>> +++ b/meta/lib/oeqa/sdk/testsdk.py
>> @@ -22,14 +22,6 @@ class TestSDKBase(object):
>>                          'LAYERS': get_layers(d.getVar("BBLAYERS"))}
>>          return configuration
>>  
>> -    @staticmethod
>> -    def get_sdk_json_result_dir(d):
>> -        json_result_dir = os.path.join(d.getVar("LOG_DIR"), 'oeqa')
>> -        custom_json_result_dir = d.getVar("OEQA_JSON_RESULT_DIR")
>> -        if custom_json_result_dir:
>> -            json_result_dir = custom_json_result_dir
>> -        return json_result_dir
>> -
>>      @staticmethod
>>      def get_sdk_result_id(configuration):
>>          return '%s_%s_%s_%s_%s' % (configuration['TEST_TYPE'],
>> configuration['IMAGE_BASENAME'], configuration['SDKMACHINE'],
>> configuration['MACHINE'], configuration['STARTTIME'])
>> @@ -72,6 +64,7 @@ class TestSDK(TestSDKBase):
>>  
>>          from bb.utils import export_proxies
>>          from oeqa.utils import make_logger_bitbake_compatible
>> +        from oeqa.utils import get_json_result_dir
>>  
>>          pn = d.getVar("PN")
>>          logger =
>> make_logger_bitbake_compatible(logging.getLogger("BitBake"))
>> @@ -134,7 +127,7 @@ class TestSDK(TestSDKBase):
>>              component = "%s %s" % (pn,
>> self.context_executor_class.name)
>>              context_msg = "%s:%s" % (os.path.basename(tcname),
>> os.path.basename(sdk_env))
>>              configuration = self.get_sdk_configuration(d,
>> self.test_type)
>> -            result.logDetails(self.get_sdk_json_result_dir(d),
>> +            result.logDetails(get_json_result_dir(d),
>>                              configuration,
>>                              self.get_sdk_result_id(configuration))
>>              result.logSummary(component, context_msg)
>> diff --git a/meta/lib/oeqa/utils/__init__.py
>> b/meta/lib/oeqa/utils/__init__.py
>> index fbc7f7d525d8..53bdcbf26618 100644
>> --- a/meta/lib/oeqa/utils/__init__.py
>> +++ b/meta/lib/oeqa/utils/__init__.py
>> @@ -90,3 +90,10 @@ def load_test_components(logger, executor):
>>                                  "_executor_class defined." %
>> (comp_name, comp_context))
>>  
>>      return components
>> +
>> +def get_json_result_dir(d):
>> +    json_result_dir = os.path.join(d.getVar("LOG_DIR"), 'oeqa')
>> +    custom_json_result_dir = d.getVar("OEQA_JSON_RESULT_DIR")
>> +    if custom_json_result_dir:
>> +        json_result_dir = custom_json_result_dir
>> +    return json_result_dir
>> \ No newline at end of file
>>
> 
> I suspect this is missing a change to TestSDKEXT:
> 
> https://autobuilder.yoctoproject.org/typhoon/#/builders/136/builds/56/steps/14/logs/stdio

Indeed, I messed up with some half-search-and-replace -_- Thanks for the test.
I'll delay a bit before sending v4 to avoid spamming the list.

Thanks,
Alexis

-- 
Alexis Lothoré, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



  reply	other threads:[~2024-02-23 17:36 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-23 15:16 [OE-Core][PATCH v3 0/5] testimage: add failed test post actions and fetch more data Alexis Lothoré
2024-02-23 15:16 ` [OE-Core][PATCH v3 1/5] lib/oeqa: share get_json_result_dir helper Alexis Lothoré
2024-02-23 17:27   ` Richard Purdie
2024-02-23 17:36     ` Alexis Lothoré [this message]
2024-02-23 15:16 ` [OE-Core][PATCH v3 2/5] testimage: create a list of failed test post actions Alexis Lothoré
2024-02-23 15:16 ` [OE-Core][PATCH v3 3/5] oeqa/utils/postactions: isolate directory creation in dedicated action Alexis Lothoré
2024-02-23 15:16 ` [OE-Core][PATCH v3 4/5] oeqa/utils/postactions: add target disk usage stat as post action Alexis Lothoré
2024-02-23 15:16 ` [OE-Core][PATCH v3 5/5] oeqa/utils/postactions: testimage: add host " Alexis Lothoré

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=5b5df6fe-fe1d-4508-aae6-914137a167a2@bootlin.com \
    --to=alexis.lothore@bootlin.com \
    --cc=Openembedded-core@lists.openembedded.org \
    --cc=alexandre.belloni@bootlin.com \
    --cc=richard.purdie@linuxfoundation.org \
    --cc=thomas.petazzoni@bootlin.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox