All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv3] ltp: make copyFrom scp command non-fatal
@ 2020-08-05 18:10 Matthew
  2020-08-05 18:27 ` [OE-core] " Richard Purdie
  2020-08-05 18:32 ` ✗ patchtest: failure for ltp: make copyFrom scp command non-fatal (rev3) Patchwork
  0 siblings, 2 replies; 6+ messages in thread
From: Matthew @ 2020-08-05 18:10 UTC (permalink / raw)
  To: openembedded-core

[YOCTO #13802]

Make the scp failure non-fatal so the ltp tests continue to run and
the rest of the logs will be available to see afterwards.

Signed-off-by: Mingde (Matthew) Zeng <matthew.zeng@windriver.com>
---
 meta/lib/oeqa/core/target/ssh.py   | 7 +++++--
 meta/lib/oeqa/runtime/cases/ltp.py | 2 +-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py
index 090b40a814..aefb576805 100644
--- a/meta/lib/oeqa/core/target/ssh.py
+++ b/meta/lib/oeqa/core/target/ssh.py
@@ -107,13 +107,16 @@ class OESSHTarget(OETarget):
             scpCmd = self.scp + [localSrc, remotePath]
             return self._run(scpCmd, ignore_status=False)

-    def copyFrom(self, remoteSrc, localDst):
+    def copyFrom(self, remoteSrc, localDst, warn_on_failure=False):
         """
             Copy file from target.
         """
         remotePath = '%s@%s:%s' % (self.user, self.ip, remoteSrc)
         scpCmd = self.scp + [remotePath, localDst]
-        return self._run(scpCmd, ignore_status=False)
+        (status, output) = self._run(scpCmd, ignore_status=warn_on_failure)
+        if warn_on_failure and status:
+            self.logger.warning("Copy returned non-zero exit status %d:\n%s" % (status, output))
+        return (status, output)

     def copyDirTo(self, localSrc, remoteDst):
         """
diff --git a/meta/lib/oeqa/runtime/cases/ltp.py b/meta/lib/oeqa/runtime/cases/ltp.py
index 6dc5ef22ad..da529ce482 100644
--- a/meta/lib/oeqa/runtime/cases/ltp.py
+++ b/meta/lib/oeqa/runtime/cases/ltp.py
@@ -78,7 +78,7 @@ class LtpTest(LtpTestBase):
             # copy nice log from DUT
             dst = os.path.join(self.ltptest_log_dir, "%s" %  ltp_group )
             remote_src = "/opt/ltp/results/%s" % ltp_group
-            (status, output) = self.target.copyFrom(remote_src, dst)
+            (status, output) = self.target.copyFrom(remote_src, dst, True)
             msg = 'File could not be copied. Output: %s' % output
             self.assertEqual(status, 0, msg=msg)

--
2.27.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCHv3] ltp: make copyFrom scp command non-fatal
  2020-08-05 18:10 [PATCHv3] ltp: make copyFrom scp command non-fatal Matthew
@ 2020-08-05 18:27 ` Richard Purdie
  2020-08-05 18:33   ` Matthew
  2020-08-05 18:32 ` ✗ patchtest: failure for ltp: make copyFrom scp command non-fatal (rev3) Patchwork
  1 sibling, 1 reply; 6+ messages in thread
From: Richard Purdie @ 2020-08-05 18:27 UTC (permalink / raw)
  To: Matthew, openembedded-core

On Wed, 2020-08-05 at 14:10 -0400, Matthew wrote:
> [YOCTO #13802]
> 
> Make the scp failure non-fatal so the ltp tests continue to run and
> the rest of the logs will be available to see afterwards.
> 
> Signed-off-by: Mingde (Matthew) Zeng <matthew.zeng@windriver.com>
> ---
>  meta/lib/oeqa/core/target/ssh.py   | 7 +++++--
>  meta/lib/oeqa/runtime/cases/ltp.py | 2 +-
>  2 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py
> index 090b40a814..aefb576805 100644
> --- a/meta/lib/oeqa/core/target/ssh.py
> +++ b/meta/lib/oeqa/core/target/ssh.py
> @@ -107,13 +107,16 @@ class OESSHTarget(OETarget):
>              scpCmd = self.scp + [localSrc, remotePath]
>              return self._run(scpCmd, ignore_status=False)
> 
> -    def copyFrom(self, remoteSrc, localDst):
> +    def copyFrom(self, remoteSrc, localDst, warn_on_failure=False):
>          """
>              Copy file from target.
>          """
>          remotePath = '%s@%s:%s' % (self.user, self.ip, remoteSrc)
>          scpCmd = self.scp + [remotePath, localDst]
> -        return self._run(scpCmd, ignore_status=False)
> +        (status, output) = self._run(scpCmd, ignore_status=warn_on_failure)
> +        if warn_on_failure and status:
> +            self.logger.warning("Copy returned non-zero exit status %d:\n%s" % (status, output))
> +        return (status, output)
> 
>      def copyDirTo(self, localSrc, remoteDst):
>          """
> diff --git a/meta/lib/oeqa/runtime/cases/ltp.py b/meta/lib/oeqa/runtime/cases/ltp.py
> index 6dc5ef22ad..da529ce482 100644
> --- a/meta/lib/oeqa/runtime/cases/ltp.py
> +++ b/meta/lib/oeqa/runtime/cases/ltp.py
> @@ -78,7 +78,7 @@ class LtpTest(LtpTestBase):
>              # copy nice log from DUT
>              dst = os.path.join(self.ltptest_log_dir, "%s" %  ltp_group )
>              remote_src = "/opt/ltp/results/%s" % ltp_group
> -            (status, output) = self.target.copyFrom(remote_src, dst)
> +            (status, output) = self.target.copyFrom(remote_src, dst, True)
>              msg = 'File could not be copied. Output: %s' % output
>              self.assertEqual(status, 0, msg=msg)

The idea of this change is so "the ltp tests continue to run" yet if I
understand that code, a copy failure will throw the assertEqual and
hence stop the test so we don't get all the other logging information?

Cheers,

Richard


^ permalink raw reply	[flat|nested] 6+ messages in thread

* ✗ patchtest: failure for ltp: make copyFrom scp command non-fatal (rev3)
  2020-08-05 18:10 [PATCHv3] ltp: make copyFrom scp command non-fatal Matthew
  2020-08-05 18:27 ` [OE-core] " Richard Purdie
@ 2020-08-05 18:32 ` Patchwork
  1 sibling, 0 replies; 6+ messages in thread
From: Patchwork @ 2020-08-05 18:32 UTC (permalink / raw)
  To: Mingde Zeng; +Cc: openembedded-core

== Series Details ==

Series: ltp: make copyFrom scp command non-fatal (rev3)
Revision: 3
URL   : https://patchwork.openembedded.org/series/25475/
State : failure

== Summary ==


Thank you for submitting this patch series to OpenEmbedded Core. This is
an automated response. Several tests have been executed on the proposed
series by patchtest resulting in the following failures:



* Issue             Series does not apply on top of target branch [test_series_merge_on_head] 
  Suggested fix    Rebase your series on top of targeted branch
  Targeted branch  master (currently at 10221e578f)



If you believe any of these test results are incorrect, please reply to the
mailing list (openembedded-core@lists.openembedded.org) raising your concerns.
Otherwise we would appreciate you correcting the issues and submitting a new
version of the patchset if applicable. Please ensure you add/increment the
version number when sending the new version (i.e. [PATCH] -> [PATCH v2] ->
[PATCH v3] -> ...).

---
Guidelines:     https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest
Test suite:     http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCHv3] ltp: make copyFrom scp command non-fatal
  2020-08-05 18:27 ` [OE-core] " Richard Purdie
@ 2020-08-05 18:33   ` Matthew
  2020-08-05 18:36     ` Richard Purdie
  0 siblings, 1 reply; 6+ messages in thread
From: Matthew @ 2020-08-05 18:33 UTC (permalink / raw)
  To: Richard Purdie; +Cc: openembedded-core


Richard Purdie <richard.purdie@linuxfoundation.org> writes:

> On Wed, 2020-08-05 at 14:10 -0400, Matthew wrote:
>> [YOCTO #13802]
>>
>> Make the scp failure non-fatal so the ltp tests continue to run and
>> the rest of the logs will be available to see afterwards.
>>
>> Signed-off-by: Mingde (Matthew) Zeng <matthew.zeng@windriver.com>
>> ---
>>  meta/lib/oeqa/core/target/ssh.py   | 7 +++++--
>>  meta/lib/oeqa/runtime/cases/ltp.py | 2 +-
>>  2 files changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py
>> index 090b40a814..aefb576805 100644
>> --- a/meta/lib/oeqa/core/target/ssh.py
>> +++ b/meta/lib/oeqa/core/target/ssh.py
>> @@ -107,13 +107,16 @@ class OESSHTarget(OETarget):
>>              scpCmd = self.scp + [localSrc, remotePath]
>>              return self._run(scpCmd, ignore_status=False)
>>
>> -    def copyFrom(self, remoteSrc, localDst):
>> +    def copyFrom(self, remoteSrc, localDst, warn_on_failure=False):
>>          """
>>              Copy file from target.
>>          """
>>          remotePath = '%s@%s:%s' % (self.user, self.ip, remoteSrc)
>>          scpCmd = self.scp + [remotePath, localDst]
>> -        return self._run(scpCmd, ignore_status=False)
>> +        (status, output) = self._run(scpCmd, ignore_status=warn_on_failure)
>> +        if warn_on_failure and status:
>> +            self.logger.warning("Copy returned non-zero exit status %d:\n%s" % (status, output))
>> +        return (status, output)
>>
>>      def copyDirTo(self, localSrc, remoteDst):
>>          """
>> diff --git a/meta/lib/oeqa/runtime/cases/ltp.py b/meta/lib/oeqa/runtime/cases/ltp.py
>> index 6dc5ef22ad..da529ce482 100644
>> --- a/meta/lib/oeqa/runtime/cases/ltp.py
>> +++ b/meta/lib/oeqa/runtime/cases/ltp.py
>> @@ -78,7 +78,7 @@ class LtpTest(LtpTestBase):
>>              # copy nice log from DUT
>>              dst = os.path.join(self.ltptest_log_dir, "%s" %  ltp_group )
>>              remote_src = "/opt/ltp/results/%s" % ltp_group
>> -            (status, output) = self.target.copyFrom(remote_src, dst)
>> +            (status, output) = self.target.copyFrom(remote_src, dst, True)
>>              msg = 'File could not be copied. Output: %s' % output
>>              self.assertEqual(status, 0, msg=msg)
>
> The idea of this change is so "the ltp tests continue to run" yet if I
> understand that code, a copy failure will throw the assertEqual and
> hence stop the test so we don't get all the other logging information?

When warn_on_failure=True, so is ignore_status. Then 'status and not ignore_status' evaluates to false, and 'raise AssertionError("Command '%s' returned non-zero exit ...)' will not run.

>
> Cheers,
>
> Richard
>
> 


--
Mingde (Matthew) Zeng

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCHv3] ltp: make copyFrom scp command non-fatal
  2020-08-05 18:33   ` Matthew
@ 2020-08-05 18:36     ` Richard Purdie
  2020-08-05 18:44       ` Matthew
  0 siblings, 1 reply; 6+ messages in thread
From: Richard Purdie @ 2020-08-05 18:36 UTC (permalink / raw)
  To: Mingde (Matthew) Zeng; +Cc: openembedded-core

On Wed, 2020-08-05 at 14:33 -0400, Mingde (Matthew) Zeng wrote:
> Richard Purdie <richard.purdie@linuxfoundation.org> writes:
> 
> > On Wed, 2020-08-05 at 14:10 -0400, Matthew wrote:
> > > [YOCTO #13802]
> > > 
> > > Make the scp failure non-fatal so the ltp tests continue to run and
> > > the rest of the logs will be available to see afterwards.
> > > 
> > > Signed-off-by: Mingde (Matthew) Zeng <matthew.zeng@windriver.com>
> > > ---
> > >  meta/lib/oeqa/core/target/ssh.py   | 7 +++++--
> > >  meta/lib/oeqa/runtime/cases/ltp.py | 2 +-
> > >  2 files changed, 6 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py
> > > index 090b40a814..aefb576805 100644
> > > --- a/meta/lib/oeqa/core/target/ssh.py
> > > +++ b/meta/lib/oeqa/core/target/ssh.py
> > > @@ -107,13 +107,16 @@ class OESSHTarget(OETarget):
> > >              scpCmd = self.scp + [localSrc, remotePath]
> > >              return self._run(scpCmd, ignore_status=False)
> > > 
> > > -    def copyFrom(self, remoteSrc, localDst):
> > > +    def copyFrom(self, remoteSrc, localDst, warn_on_failure=False):
> > >          """
> > >              Copy file from target.
> > >          """
> > >          remotePath = '%s@%s:%s' % (self.user, self.ip, remoteSrc)
> > >          scpCmd = self.scp + [remotePath, localDst]
> > > -        return self._run(scpCmd, ignore_status=False)
> > > +        (status, output) = self._run(scpCmd, ignore_status=warn_on_failure)
> > > +        if warn_on_failure and status:
> > > +            self.logger.warning("Copy returned non-zero exit status %d:\n%s" % (status, output))
> > > +        return (status, output)
> > > 
> > >      def copyDirTo(self, localSrc, remoteDst):
> > >          """
> > > diff --git a/meta/lib/oeqa/runtime/cases/ltp.py b/meta/lib/oeqa/runtime/cases/ltp.py
> > > index 6dc5ef22ad..da529ce482 100644
> > > --- a/meta/lib/oeqa/runtime/cases/ltp.py
> > > +++ b/meta/lib/oeqa/runtime/cases/ltp.py
> > > @@ -78,7 +78,7 @@ class LtpTest(LtpTestBase):
> > >              # copy nice log from DUT
> > >              dst = os.path.join(self.ltptest_log_dir, "%s" %  ltp_group )
> > >              remote_src = "/opt/ltp/results/%s" % ltp_group
> > > -            (status, output) = self.target.copyFrom(remote_src, dst)
> > > +            (status, output) = self.target.copyFrom(remote_src, dst, True)
> > >              msg = 'File could not be copied. Output: %s' % output
> > >              self.assertEqual(status, 0, msg=msg)
> > 
> > The idea of this change is so "the ltp tests continue to run" yet if I
> > understand that code, a copy failure will throw the assertEqual and
> > hence stop the test so we don't get all the other logging information?
> 
> When warn_on_failure=True, so is ignore_status. Then 'status and not
> ignore_status' evaluates to false, and 'raise AssertionError("Command
> '%s' returned non-zero exit ...)' will not run.

Sure, but status will be non-zero and the code says:

(status, output) = self.target.copyFrom(remote_src, dst, True)
msg = 'File could not be copied. Output: %s' % output
self.assertEqual(status, 0, msg=msg)

so

self.assertEqual(status, 0, msg=msg)

will fail if copyFrom() fails?

Cheers,

Richard





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCHv3] ltp: make copyFrom scp command non-fatal
  2020-08-05 18:36     ` Richard Purdie
@ 2020-08-05 18:44       ` Matthew
  0 siblings, 0 replies; 6+ messages in thread
From: Matthew @ 2020-08-05 18:44 UTC (permalink / raw)
  To: Richard Purdie; +Cc: openembedded-core


Richard Purdie <richard.purdie@linuxfoundation.org> writes:

> On Wed, 2020-08-05 at 14:33 -0400, Mingde (Matthew) Zeng wrote:
>> Richard Purdie <richard.purdie@linuxfoundation.org> writes:
>>
>> > On Wed, 2020-08-05 at 14:10 -0400, Matthew wrote:
>> > > [YOCTO #13802]
>> > >
>> > > Make the scp failure non-fatal so the ltp tests continue to run and
>> > > the rest of the logs will be available to see afterwards.
>> > >
>> > > Signed-off-by: Mingde (Matthew) Zeng <matthew.zeng@windriver.com>
>> > > ---
>> > >  meta/lib/oeqa/core/target/ssh.py   | 7 +++++--
>> > >  meta/lib/oeqa/runtime/cases/ltp.py | 2 +-
>> > >  2 files changed, 6 insertions(+), 3 deletions(-)
>> > >
>> > > diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py
>> > > index 090b40a814..aefb576805 100644
>> > > --- a/meta/lib/oeqa/core/target/ssh.py
>> > > +++ b/meta/lib/oeqa/core/target/ssh.py
>> > > @@ -107,13 +107,16 @@ class OESSHTarget(OETarget):
>> > >              scpCmd = self.scp + [localSrc, remotePath]
>> > >              return self._run(scpCmd, ignore_status=False)
>> > >
>> > > -    def copyFrom(self, remoteSrc, localDst):
>> > > +    def copyFrom(self, remoteSrc, localDst, warn_on_failure=False):
>> > >          """
>> > >              Copy file from target.
>> > >          """
>> > >          remotePath = '%s@%s:%s' % (self.user, self.ip, remoteSrc)
>> > >          scpCmd = self.scp + [remotePath, localDst]
>> > > -        return self._run(scpCmd, ignore_status=False)
>> > > +        (status, output) = self._run(scpCmd, ignore_status=warn_on_failure)
>> > > +        if warn_on_failure and status:
>> > > +            self.logger.warning("Copy returned non-zero exit status %d:\n%s" % (status, output))
>> > > +        return (status, output)
>> > >
>> > >      def copyDirTo(self, localSrc, remoteDst):
>> > >          """
>> > > diff --git a/meta/lib/oeqa/runtime/cases/ltp.py b/meta/lib/oeqa/runtime/cases/ltp.py
>> > > index 6dc5ef22ad..da529ce482 100644
>> > > --- a/meta/lib/oeqa/runtime/cases/ltp.py
>> > > +++ b/meta/lib/oeqa/runtime/cases/ltp.py
>> > > @@ -78,7 +78,7 @@ class LtpTest(LtpTestBase):
>> > >              # copy nice log from DUT
>> > >              dst = os.path.join(self.ltptest_log_dir, "%s" %  ltp_group )
>> > >              remote_src = "/opt/ltp/results/%s" % ltp_group
>> > > -            (status, output) = self.target.copyFrom(remote_src, dst)
>> > > +            (status, output) = self.target.copyFrom(remote_src, dst, True)
>> > >              msg = 'File could not be copied. Output: %s' % output
>> > >              self.assertEqual(status, 0, msg=msg)
>> >
>> > The idea of this change is so "the ltp tests continue to run" yet if I
>> > understand that code, a copy failure will throw the assertEqual and
>> > hence stop the test so we don't get all the other logging information?
>>
>> When warn_on_failure=True, so is ignore_status. Then 'status and not
>> ignore_status' evaluates to false, and 'raise AssertionError("Command
>> '%s' returned non-zero exit ...)' will not run.
>
> Sure, but status will be non-zero and the code says:
>
> (status, output) = self.target.copyFrom(remote_src, dst, True)
> msg = 'File could not be copied. Output: %s' % output
> self.assertEqual(status, 0, msg=msg)
>
> so
>
> self.assertEqual(status, 0, msg=msg)
>
> will fail if copyFrom() fails?

Right, I'll comment that line out as well.

Also, I received the Patchwork email complaining a conflict, however I successfully applied my patch after git pulling a couple times, do you know what's wrong?

>
> Cheers,
>
> Richard


--
Mingde (Matthew) Zeng

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-08-05 18:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-05 18:10 [PATCHv3] ltp: make copyFrom scp command non-fatal Matthew
2020-08-05 18:27 ` [OE-core] " Richard Purdie
2020-08-05 18:33   ` Matthew
2020-08-05 18:36     ` Richard Purdie
2020-08-05 18:44       ` Matthew
2020-08-05 18:32 ` ✗ patchtest: failure for ltp: make copyFrom scp command non-fatal (rev3) Patchwork

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.