Suspend will be triggered twice on an UMA or a non-switchable hybrid system

Bug #1431202 reported by Po-Hsu Lin
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Provider for Plainbox - Canonical Certification (Legacy)
Fix Released
High
Po-Hsu Lin

Bug Description

After the fix for bug 1425386 has landed.
It works fine with switchable hybrid graphic systems, but it will ask tester to run suspend twice for an UMA or a non-switchable hybrid system:

For a hybrid system, it will be tested like this:
(card2) S3-advanced
(card2) card2-display-after-suspend
(card2) cycle-resolution-after-suspend
(card1) card1-suspend-after-switch-card
(card1) card1-display-after-suspend

But for an UMA system, it's
(card1) S3-advanced
(card1) cycle-resolution
(card1) card1-suspend-after-switch-card
(card1) card1-display-after-suspend

As you can see it will ask tester to run the suspend test twice, it's ok but a bit annoying.

This could be fixed by explicitly set S3-advanced and related test cases to card2-*, e.g.
(card2) card2-S3-advanced
(card2) card2-display-after-suspend
(card2) card2-cycle-resolution-after-suspend
(card1) card1-suspend-after-switch-card
(card1) card1-display-after-suspend

However, this will make dependencies to be more complicated.

(The missing card1-cycle-resolution-after-suspend will be handled in bug 1430642)

Related branches

Po-Hsu Lin (cypressyew)
summary: - The test case sequence for suspend/graphic-related should be re-ordered
+ Suspend will be triggered twice on an UMA or a non-switchable hybrid
+ system
Revision history for this message
Zygmunt Krynicki (zyga) wrote :

Assigning to Sam as he's working on the GPU tests now.

Changed in plainbox-provider-canonical-certification:
assignee: nobody → Po-Hsu Lin (cypressyew)
Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Dependency chart for this case attached, you can see the issue here
(suspend will be triggered twice, because we're not using the generated local job for the two suspend job)

Po-Hsu Lin (cypressyew)
Changed in plainbox-provider-canonical-certification:
status: New → In Progress
importance: Low → High
Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

For this suspend-twice issue, there are several possible solutions, but all with different issues.

* Solution A:
Ask suspend_advanced to depend on 2_switch_card test
therefore it won't be executed on UMA system

However, this would cause those "OTHER AFTER SUSPEND TESTS" to be skipped.

* Solution B:
Move suspend_advanced job, make it act as the suspend job for the 1st card
add dependency to the graphic_switch test, make sure it's running on
the correct GPU, and change the "suspend/1_suspend_after_switch_to_card" into
"suspend/2_suspend_after_switch_to_card" for 2nd card.

However, there are some jobs for graphics after suspend on 2nd card still
depend on suspend_advanced, if we do this, it will still be triggered due to
the dependency setting, unless we will remove the dependency

* Solution C:
Remove the suspend_advance job totally, replace it with the one generated by
the local job. This could help us to create some dependency for those job that
does not have a dependency yet (e.g. suspend/2_suspend-time-check)

Howevere, this will cause some problem to those "OTHER AFTER SUSPEND TESTS",
the suspend_advanced is no longer available, we have to move the dependency to
one of the suspend test generated by the local job (ideally to the suspend
test of 1st card). But the issue is that we can't use the dependency of
depends: suspend/1_suspend_after_switch_to_card_.*
nor
depends: suspend/1_suspend_after_switch_to_card_`echo "${product}" | sed 's/ /_/g;s/[^_a-zA-Z0-9-]//g'`

Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Another thing is that if we move "OTHER AFTER SUSPEND TESTS" to the place where we test card 1
e.g. from:
suspend-card2
OTHER AFTER SUSPEND TESTS
hibernate-card2
switch-card1
suspend-card1
hibernate-card1

to:
suspend-card2
hibernate-card2
switch-card1
suspend-card1
OTHER AFTER SUSPEND TESTS
hibernate-card1

it will work perfectly on UMA system, but on a hybrid graphic system, they will be triggered after the hibernate test for card 2, I'm not sure if this is acceptable.

Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Dependency chart for solution A

Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Dependency chart for solution B

Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

* Solution D
Adapted from solution B,
Move suspend_advanced job, make it act as the suspend job for the 1st card
add dependency to the graphic_switch test, make sure it's running on
the correct GPU, and change the "suspend/1_suspend_after_switch_to_card" into
"suspend/2_suspend_after_switch_to_card" for 2nd card.
And not to use all the jobs generated by the local job, so we can change the dependency for 2nd card to the "suspend/2_suspend_after_switch_to_card" job itself, make them not depend on suspend_advanced.

Testing branch now

Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Dependency chart for solution D

Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Dependency chart for solution D updated
Making suspend_advanced not depend on 1_switch_card job, since it will need to be written as:
depneds: graphics/1_switch_card_*
But this kind of expression is only available in local jobs.

Po-Hsu Lin (cypressyew)
Changed in plainbox-provider-canonical-certification:
status: In Progress → Fix Committed
Po-Hsu Lin (cypressyew)
Changed in plainbox-provider-canonical-certification:
milestone: none → 0.16.1
Changed in plainbox-provider-canonical-certification:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.