action #25702

add option in tty console to change key

Added by coolo over 2 years ago. Updated almost 2 years ago.

Status:ResolvedStart date:01/10/2017
Priority:HighDue date:
Assignee:mkittler% Done:

0%

Category:Feature requests
Target version:Done
Difficulty:
Duration:

Description

Right now we have to choose the tty key for e.g. 'x11' in the distribution. But with modern distributions, the X session is a bit more flexible than that, so we need
to support setting the tty out of the tests.

E.g. by means of console('x11')->set_tty(2);

As this would require us checking if 'x11' is a tty console, we can also do a more generic approach to reset args.

console('x11')->set_arg(tty => 7) - which would change the arg dict

History

#1 Updated by coolo over 2 years ago

  • Priority changed from Normal to Low
  • Target version set to Ready

#2 Updated by coolo almost 2 years ago

  • Priority changed from Low to High

we need this now for upgrade tests as GNOME moved ttys.

#3 Updated by qmsu almost 2 years ago

This api is really required during migration tests, i.e. SLE 12-sp3 -> 15, we need switch consoles several times in the test process as following:
- openQA test triggered migration from sle12-sp3 hdd image by sle 15 installer will initialize consoles as root-console at 6 and x11-console at 2
- switch version to sle 12-sp3 to patch the system ---- 1st console tty switch required: x11 from 2 to 7
- when system patched, reboot to do upgrade
- after upgrade, boot to sle 15 and run some gui tests ---- 2nd console tty switch required: x11 from 7 to 2
- rollback to sle 12-sp3 from btrfs snapshot ---- 3rd console tty switch required: x11 from 2 to 7

#4 Updated by okurz almost 2 years ago

Doesn't the same approach as in https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/tests/x11/start_wayland_plasma5.pm help?

console('x11')->{args}->{tty} = 3;

#5 Updated by coolo almost 2 years ago

I don't consider that an API

#6 Updated by qmsu almost 2 years ago

coolo wrote:

I don't consider that an API

Yeah, not API, but a method of ttyConsole class. Whatever, just need a way to change the console tty during test.

#7 Updated by qmsu almost 2 years ago

okurz wrote:

Doesn't the same approach as in https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/tests/x11/start_wayland_plasma5.pm help?


console('x11')->{args}->{tty} = 3;

No, seems the method above never work as expected. console('x11') returns a console_proxy object, which is not the real console object. So "console('x11')->{args}->{tty} = 2;" only adds an attribution to the console_proxy object, but won't affect the real tty console object.

Actually I tried it at the beginning, even before I used "$testapi::distri->{consoles}->{'x11'}->{args}->{tty} = 2;", which disn't work neither, just as coolo said in IRC:
your tests run in a different process than the actual key pressing

#8 Updated by coolo almost 2 years ago

  • Target version changed from Ready to Current Sprint

this one should be pretty simple

#9 Updated by mkittler almost 2 years ago

  • Assignee set to mkittler

I haven't done much with the backend previously so I'll take this "pretty simple" task dive into the backend's code base. Let's see whether it is actually pretty simple and how to test it.

#10 Updated by mkittler almost 2 years ago

  • Status changed from New to In Progress

PR: https://github.com/os-autoinst/os-autoinst/pull/933

If this works, it was 'pretty simple' indeed. However, figuring out why this works (in contrast to just writing console('x11')->{args}->{tty} = 3;) wasn't that easy. Hence the verbose comments in the PR/change.

No, seems the method above never work as expected. console('x11') returns a console_proxy object, which is not the real console object. So "console('x11')->{args}->{tty} = 2;" only adds an attribution to the console_proxy object, but won't affect the real tty console object.

Yes, so you really have to pass the values through an API function. Perl's magic AUTOLOAD function name is then triggered so the value is passed correctly via RPC.

BTW, I had fun reading the official documentation about AUTOLOAD:

The fully qualified name of the original subroutine magically appears in the global $AUTOLOAD variable of the same package as the AUTOLOAD routine. The name is not passed as an ordinary argument because, er, well, just because, that's why.

Perl ist echt die Spaßpartei unter den Programmiersprachen.

#11 Updated by mkittler almost 2 years ago

  • Status changed from In Progress to Feedback

The change has been merged.

I also created a PR for fixing the tests mentioned in the previous comments: https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/4672

@qmsu Maybe you would like to test it.

#12 Updated by szarate almost 2 years ago

  • Status changed from Feedback to Resolved

#13 Updated by szarate almost 2 years ago

  • Target version changed from Current Sprint to Done

#14 Updated by qmsu almost 2 years ago

@mkittler, Has your change for this ticket been deployed on o.s.d? If so, I would like to test it in SLE15 migration testing. Thanks.

#15 Updated by okurz almost 2 years ago

yes, it's deployed

#16 Updated by qmsu almost 2 years ago

Great, thanks for the confirmation. Then I can try to change the console tty during migration testing, i.e. SLE 12-SP3 -> 15.

Also available in: Atom PDF