[
https://issues.apache.org/jira/browse/YUNIKORN-3431?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andy Huang updated YUNIKORN-3431:
---------------------------------
Description:
YUNIKORN-3367 changes KubernetesShim.Stop() from sending a single value on
stopChan to closing the channel, so both wait.Until goroutines started by
KubernetesShim.doScheduling() stop.
The current unit tests verify that stopChan is closed and that Stop() is
idempotent, but they do not start doScheduling() or verify that both
scheduling-loop goroutines terminate. A regression to a buffered channel with a
single send could still satisfy the current channel assertion while leaving one
loop running.
Add a regression test that:
* starts KubernetesShim successfully with the mock scheduler, so both schedule
and checkOutstandingApps loops are running;
* calls Stop();
* verifies that both loop goroutines terminate.
Possible implementations:
* use goleak.VerifyNone scoped to this test, after the shared goleak support
from YUNIKORN-3357 is available; or
* add a testable loop-completion signal/counter to KubernetesShim and wait for
both goroutines to exit.
The test should specifically protect against the original single-send shutdown
failure.
Related issues:
* https://issues.apache.org/jira/browse/YUNIKORN-3367
* [https://github.com/apache/yunikorn-k8shim/pull/1074]
was:
YUNIKORN-3367 changes KubernetesShim.Stop() from sending a single value on
stopChan to closing the channel, so both wait.Until goroutines started by
KubernetesShim.doScheduling() stop.
The current unit tests verify that stopChan is closed and that Stop() is
idempotent, but they do not start doScheduling() or verify that both
scheduling-loop goroutines terminate. A regression to a buffered channel with a
single send could still satisfy the current channel assertion while leaving one
loop running.
Add a regression test that:
* starts KubernetesShim successfully with the mock scheduler, so both schedule
and checkOutstandingApps loops are running;
* calls Stop();
* verifies that both loop goroutines terminate.
Possible implementations:
* use goleak.VerifyNone scoped to this test, after the shared goleak support
from YUNIKORN-3357 is available; or
* add a testable loop-completion signal/counter to KubernetesShim and wait for
both goroutines to exit.
The test should specifically protect against the original single-send shutdown
failure.
Related issues:
* https://issues.apache.org/jira/browse/YUNIKORN-3367
* https://issues.apache.org/jira/browse/YUNIKORN-3368
* https://github.com/apache/yunikorn-k8shim/pull/1074
> Add regression test coverage for KubernetesShim scheduling loop shutdown
> ------------------------------------------------------------------------
>
> Key: YUNIKORN-3431
> URL: https://issues.apache.org/jira/browse/YUNIKORN-3431
> Project: Apache YuniKorn
> Issue Type: Test
> Reporter: Andy Huang
> Priority: Minor
>
> YUNIKORN-3367 changes KubernetesShim.Stop() from sending a single value on
> stopChan to closing the channel, so both wait.Until goroutines started by
> KubernetesShim.doScheduling() stop.
> The current unit tests verify that stopChan is closed and that Stop() is
> idempotent, but they do not start doScheduling() or verify that both
> scheduling-loop goroutines terminate. A regression to a buffered channel with
> a single send could still satisfy the current channel assertion while leaving
> one loop running.
> Add a regression test that:
> * starts KubernetesShim successfully with the mock scheduler, so both
> schedule and checkOutstandingApps loops are running;
> * calls Stop();
> * verifies that both loop goroutines terminate.
> Possible implementations:
> * use goleak.VerifyNone scoped to this test, after the shared goleak support
> from YUNIKORN-3357 is available; or
> * add a testable loop-completion signal/counter to KubernetesShim and wait
> for both goroutines to exit.
> The test should specifically protect against the original single-send
> shutdown failure.
> Related issues:
> * https://issues.apache.org/jira/browse/YUNIKORN-3367
> * [https://github.com/apache/yunikorn-k8shim/pull/1074]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]