Project

General

Profile

action #65109

Updated by livdywan almost 4 years ago

There are some things that could be improved. 

 Maybe decreasing IO load on workers, snapshots on qemu backend are done basically everywhere even where it doesn't make much sense, small jobs(one, few) tests, multimachine and installations. 

 I add `QEMU_DISABLE_SNAPSHOTS=1` into most of QAM suites, there are installations with following tests, but fail is mostly some random timeout, typing, etc. issue. The test is restarted anyway... It could make sense to disable snapshots by default on suites where snapshot is waste of IO, exceptions could overwrite it with `QEMU_DISABLE_SNAPSHOTS=0`. 

 Review testapi, remove/fix inconsistent functions and add functions which are used widely in combinations? 
 e.g. `wait_screen_change` is widely used and failing where is expected that the function will wait, wait can be more than just screen change, generally is the function waiting 0 seconds. Thus I don't use it, because when you add wait time, mostly in gui/ncurses tests, you expect that it will wait some minimal time, not zero. 

 I guess there is some screen change like button animation, but that does not mean the action is finished and next step should continue safely. 
 Exactly for this I prefer `wait_still_screen`, as you can define min/max wait time based on screen activity. 

 `send_key` is often used with `wait_still_screen` or `wait_screen_change`, despite `wait_screen_change` is part of send_key as parameter to wait after key press. I guess most of people don't know that there is parameter in `send_key` for `wait_screen_change`, which is still questionable if it will be sufficient wait function. 

 Btw I was thinking that the parameter is not working since it was using `wait_idle`, which became deprecated. In one tests was created `send_key_and_wait` [1], use of `wait_still_screen` could be parameter of `send_key`, replace or be second parameter with `wait_screen_change`? 

 ## Acceptance criteria 
  * **AC1:** Unify implementation of `max_interval/wait_still_screen/wait_screen_change` for `send_key` and other *testapi* functions. 
  * **AC2:** Reduce I/O overhead proactively 

 ## Suggestions 

 * **AC1:** 
   * Extend `send_key` with a `wait_still_screen` option 
   * Refactor wait logic for better re-use 
 * **AC2:** 
   * Enable and disable `QEMU_DISABLE_SNAPSHOTS` systematically 
   * Evaluate resource usage e.g. CPU load, I/O causing timeouts 

 [1] https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/tests/yast2_gui/yast2_instserver.pm#L27

Back