From b11d3566604319b1ac884c188dfb7629863a812b Mon Sep 17 00:00:00 2001 From: Tung Manh Hoang Date: Mon, 29 Dec 2025 11:09:53 +0700 Subject: [PATCH 1/6] KOB-51842 start governor for parallel tests section --- docs/modules/device-lab-management/nav.adoc | 2 ++ .../pages/governor/enable-governor.adoc | 26 +++++++++++++++++++ .../pages/governor/index.adoc | 11 ++++++++ .../use-apple-pay-in-manual-session.adoc | 2 +- 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 docs/modules/device-lab-management/pages/governor/enable-governor.adoc create mode 100644 docs/modules/device-lab-management/pages/governor/index.adoc diff --git a/docs/modules/device-lab-management/nav.adoc b/docs/modules/device-lab-management/nav.adoc index 43af59cd1..9a7fcea96 100644 --- a/docs/modules/device-lab-management/nav.adoc +++ b/docs/modules/device-lab-management/nav.adoc @@ -6,6 +6,8 @@ ** xref:deviceConnect/remote-update-deviceconnect.adoc[] * deviceShare ** xref:deviceShare/install-update-deviceshare.adoc[] +* xref:governor/index.adoc[] +** xref:governor/enable-governor.adoc[] * xref:ios-devices/index.adoc[] ** xref:ios-devices/prepare-ios-device.adoc[] ** xref:ios-devices/generate-an-ios-signing-certificate-and-provisioning-profile.adoc[] diff --git a/docs/modules/device-lab-management/pages/governor/enable-governor.adoc b/docs/modules/device-lab-management/pages/governor/enable-governor.adoc new file mode 100644 index 000000000..c9f04d3c5 --- /dev/null +++ b/docs/modules/device-lab-management/pages/governor/enable-governor.adoc @@ -0,0 +1,26 @@ += Enable governor for parallel tests +:navtitle: Enable governor + +Learn how to enable and configure the Max Parallel Tests for a hosting machine. + +== Prerequisites + +* A Kobiton account with *ADMIN* role. +* Private or local devices. + +== Enable governor + +Open the Kobiton web portal and log in using an account with *ADMIN* role. + +Select the profile picture and choose **Settings**, then choose **Device Management**. + +Choose *Settings* under a host machine. + +In the pop-up, choose either of the below options: + +* *Unlimited* (default): no limit for the host machine. + +* *Set custom limit*: set a custom limit from 1 to 999. + +Select *Save*. + diff --git a/docs/modules/device-lab-management/pages/governor/index.adoc b/docs/modules/device-lab-management/pages/governor/index.adoc new file mode 100644 index 000000000..ac859e747 --- /dev/null +++ b/docs/modules/device-lab-management/pages/governor/index.adoc @@ -0,0 +1,11 @@ += Governor for parallel tests +:navtitle: About governor + +Learn how to use the governor to ensure host machines for Private devices are operating within limits. + +== In this section + +* xref:governor/enable-governor.adoc[] + + + diff --git a/docs/modules/manual-testing/pages/local-devices/use-apple-pay-in-manual-session.adoc b/docs/modules/manual-testing/pages/local-devices/use-apple-pay-in-manual-session.adoc index cf7b5a54d..99a4501d0 100644 --- a/docs/modules/manual-testing/pages/local-devices/use-apple-pay-in-manual-session.adoc +++ b/docs/modules/manual-testing/pages/local-devices/use-apple-pay-in-manual-session.adoc @@ -3,7 +3,7 @@ Learn how to use Apple Pay to test payment flows in a Manual session. -Before you start, xref:devices:local-devices/set-up-device-for-apple-pay.adoc[ set up a device for Apple Pay]. +Before you start, xref:devices:local-devices/set-up-device-fo`r-apple-pay.adoc[ set up a device for Apple Pay]. Log into an Apple ID account. Turn on *AssistiveTouch* if device cleanup policy cleaned it up. From e88f2df59ec08a45c0d4af1b49497b334118c109 Mon Sep 17 00:00:00 2001 From: Tung Manh Hoang Date: Fri, 2 Jan 2026 16:40:50 +0700 Subject: [PATCH 2/6] KOB-51842 continue governor for parallel tests --- docs/modules/device-lab-management/nav.adoc | 3 +-- .../configure-max-parallel-tests.adoc} | 13 ++++++------- .../device-lab-management/pages/governor/index.adoc | 11 ----------- 3 files changed, 7 insertions(+), 20 deletions(-) rename docs/modules/device-lab-management/pages/{governor/enable-governor.adoc => deviceConnect/configure-max-parallel-tests.adoc} (51%) delete mode 100644 docs/modules/device-lab-management/pages/governor/index.adoc diff --git a/docs/modules/device-lab-management/nav.adoc b/docs/modules/device-lab-management/nav.adoc index 9a7fcea96..1762f5f0a 100644 --- a/docs/modules/device-lab-management/nav.adoc +++ b/docs/modules/device-lab-management/nav.adoc @@ -4,10 +4,9 @@ ** xref:deviceConnect/retrieve-deviceconnect-logs.adoc[] ** xref:deviceConnect/restart-deviceconnect-services.adoc[] ** xref:deviceConnect/remote-update-deviceconnect.adoc[] +** xref:deviceConnect/configure-max-parallel-tests.adoc[] * deviceShare ** xref:deviceShare/install-update-deviceshare.adoc[] -* xref:governor/index.adoc[] -** xref:governor/enable-governor.adoc[] * xref:ios-devices/index.adoc[] ** xref:ios-devices/prepare-ios-device.adoc[] ** xref:ios-devices/generate-an-ios-signing-certificate-and-provisioning-profile.adoc[] diff --git a/docs/modules/device-lab-management/pages/governor/enable-governor.adoc b/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc similarity index 51% rename from docs/modules/device-lab-management/pages/governor/enable-governor.adoc rename to docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc index c9f04d3c5..cd06288a2 100644 --- a/docs/modules/device-lab-management/pages/governor/enable-governor.adoc +++ b/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc @@ -1,14 +1,13 @@ -= Enable governor for parallel tests -:navtitle: Enable governor += Configure maximum parallel tests per host machine +:navtitle: Configure maximum parallel tests -Learn how to enable and configure the Max Parallel Tests for a hosting machine. +Learn how to enable and configure the maximum number of parallel tests for a hosting machine. -== Prerequisites +== When to apply -* A Kobiton account with *ADMIN* role. -* Private or local devices. +Not all host machines need to have the maximum number of parallel tests set. Below are the recommended conditions -== Enable governor +== Configure the maximum number of parallel tests Open the Kobiton web portal and log in using an account with *ADMIN* role. diff --git a/docs/modules/device-lab-management/pages/governor/index.adoc b/docs/modules/device-lab-management/pages/governor/index.adoc deleted file mode 100644 index ac859e747..000000000 --- a/docs/modules/device-lab-management/pages/governor/index.adoc +++ /dev/null @@ -1,11 +0,0 @@ -= Governor for parallel tests -:navtitle: About governor - -Learn how to use the governor to ensure host machines for Private devices are operating within limits. - -== In this section - -* xref:governor/enable-governor.adoc[] - - - From 1ff797200ce618fe8655f12d307a5d14db394682 Mon Sep 17 00:00:00 2001 From: Tung Manh Hoang Date: Mon, 5 Jan 2026 16:32:10 +0700 Subject: [PATCH 3/6] KOB-51842 continue governor for parallel tests --- .../configure-max-parallel-tests.adoc | 66 ++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc b/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc index cd06288a2..3c3781acf 100644 --- a/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc +++ b/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc @@ -5,7 +5,19 @@ Learn how to enable and configure the maximum number of parallel tests for a hos == When to apply -Not all host machines need to have the maximum number of parallel tests set. Below are the recommended conditions +Not all host machines need to have the maximum number of parallel tests set. Below are the recommended conditions: + +|=== +|Mode |Type of sessions |Connected devices | Max parallel tests + +|Lightning Mode |Manual only |More than 30 connected devices |30 + +|Lightning Mode |Both Manual and Automation |More than 30 connected devices |30 + +|Lightning Mode |Automation only |More than 30 connected devices |30 + +|=== + == Configure the maximum number of parallel tests @@ -23,3 +35,55 @@ In the pop-up, choose either of the below options: Select *Save*. +== Observe the parallel tests limit in action + +Once the limit has been set for a Mac mini host machine, the total number of parallel tests will be limited to the number set in the settings. + +The following session types count towards the total number: + +* Scriptless (Revisit) + +* Manual + +* Appium Automation + +* Native Espresso/UiAutomator Automation + +* Native XCUITest Automation + +* Gaming (Turbo Test GameDriver) + +* Turbo Test Appium + +* Mixed + +* CLI + +* API + +* Clean-up + +* Retained + +For a host machine, when the maximum has been reached, no additional session of the above types can be initiated on this host. Additionally: + +* All devices that are available on the host machine will be hidden from the Devices list. To show these devices, de-select the *Hide unavailable devices* + +* If available devices are not hidden in the Device list, both the *Launch* button is disabled. + +* In the Device Details, both the *Launch* and *Retain* buttons are disabled. + +* If an available device is launched using the URL, this error is returned: _Host has reached its configured capacity. Please try again later. Incident ID: HOST-400 - 12970311-1767603575646._ + +* Automation sessions that are launched will return an error + + +Recommended actions when the limit has been reached for a host: + +* Wait for existing sessions to be finished on the host before launching a new one. + +* Use similar devices on another host machine that is not a capacity. + +* If there are retained devices, cancel retaining if possible to allow for more sessions. + +NOTE: The limit only applies for new sessions initiated. If the limit is updated in the settings to a number that is lower than the number of existing parallel sessions, no session are terminated. \ No newline at end of file From 4ea39e9fbd48cd682ce1cb350f35ef7a11761966 Mon Sep 17 00:00:00 2001 From: Tung Manh Hoang Date: Wed, 7 Jan 2026 11:54:20 +0700 Subject: [PATCH 4/6] KOB-51842 complete governor for parallel test --- .../available-device-launch-disabled.png | Bin 0 -> 21359 bytes .../device-details-disabled-lauch-retain.png | Bin 0 -> 20966 bytes ...device-filter-hide-unavailable-devices.png | Bin 0 -> 3527 bytes .../images/host-machine-capacity-settings.png | Bin 0 -> 12695 bytes .../images/host-machine-set-capacity.png | Bin 0 -> 9852 bytes .../configure-max-parallel-tests.adoc | 69 ++++++++++-------- 6 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 docs/modules/device-lab-management/images/available-device-launch-disabled.png create mode 100644 docs/modules/device-lab-management/images/device-details-disabled-lauch-retain.png create mode 100644 docs/modules/device-lab-management/images/device-filter-hide-unavailable-devices.png create mode 100644 docs/modules/device-lab-management/images/host-machine-capacity-settings.png create mode 100644 docs/modules/device-lab-management/images/host-machine-set-capacity.png diff --git a/docs/modules/device-lab-management/images/available-device-launch-disabled.png b/docs/modules/device-lab-management/images/available-device-launch-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..528971bbad4b49c9d272d63cb4b5d7268436a5ea GIT binary patch literal 21359 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 B7p?#R literal 0 HcmV?d00001 diff --git a/docs/modules/device-lab-management/images/host-machine-capacity-settings.png b/docs/modules/device-lab-management/images/host-machine-capacity-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..e0bded2c022689a8c226e9c83ed740fb24b00f6e GIT binary patch literal 12695 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�W?y`j**tcz02MF#G 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 literal 0 HcmV?d00001 diff --git a/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc b/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc index 3c3781acf..34e493f52 100644 --- a/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc +++ b/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc @@ -1,41 +1,47 @@ -= Configure maximum parallel tests per host machine -:navtitle: Configure maximum parallel tests += Control the capacity limit of a host machine +:navtitle: Control host machine capacity limit -Learn how to enable and configure the maximum number of parallel tests for a hosting machine. +In this section, you will learn about: -== When to apply +* What the maximum capacity of a host machine is and when to set the limit. -Not all host machines need to have the maximum number of parallel tests set. Below are the recommended conditions: +* How to set the capacity limit. -|=== -|Mode |Type of sessions |Connected devices | Max parallel tests +* What the behaviour is after the limit is set. -|Lightning Mode |Manual only |More than 30 connected devices |30 +* Recommendations when the limit is reached. -|Lightning Mode |Both Manual and Automation |More than 30 connected devices |30 +== What is a host machine's capacity and when to set the limit -|Lightning Mode |Automation only |More than 30 connected devices |30 +A host machine has its own maximum capacity regarding how many parallel tests (the number of devices in sessions) can be run at once. This maximum capacity might be lower than the total of connected devices on the host. -|=== +If the host machine satisfies all hardware requirements from Kobiton, then the maximum capacity usually is 26 parallel tests at once. Therefore, only host machines with more than 26 connected devices need to have the limit set. +== Set the capacity limit -== Configure the maximum number of parallel tests +. Open the Kobiton web portal and log in using an account with *ADMIN* role. -Open the Kobiton web portal and log in using an account with *ADMIN* role. +. Select the profile picture and choose **Settings**, then choose **Device Management**. -Select the profile picture and choose **Settings**, then choose **Device Management**. +. Choose *Settings* under a host machine. -Choose *Settings* under a host machine. ++ -In the pop-up, choose either of the below options: +image:host-machine-capacity-settings.png[width=1000,alt="The Settings option of a host machine in Device Management"] + +. In the pop-up, choose either of the below options: * *Unlimited* (default): no limit for the host machine. -* *Set custom limit*: set a custom limit from 1 to 999. +* *Set custom limit*: set a custom limit from 1 to 999. The recommended limit is *26*. + ++ -Select *Save*. +image:host-machine-set-capacity.png[width=500,alt="The available options for setting capacity limit of a host machine"] -== Observe the parallel tests limit in action +. Select *Save*. + +== Observe the capacity limit in action Once the limit has been set for a Mac mini host machine, the total number of parallel tests will be limited to the number set in the settings. @@ -65,25 +71,30 @@ The following session types count towards the total number: * Retained -For a host machine, when the maximum has been reached, no additional session of the above types can be initiated on this host. Additionally: +When the maximum has been reached, no additional session of the above types can be initiated on this host even though there are still available devices. Specifically: + +* All devices that are available on the host machine will be hidden in the Devices list. To show these devices, de-select the *Hide unavailable devices* checkbox in the filter. -* All devices that are available on the host machine will be hidden from the Devices list. To show these devices, de-select the *Hide unavailable devices* ++ -* If available devices are not hidden in the Device list, both the *Launch* button is disabled. +image:device-filter-hide-unavailable-devices.png[width=300,alt="The Hide unavailable devices option in the Devices list filter"] + +** If available devices are not hidden in the Device list, the *Launch* button is disabled. + +image:available-device-launch-disabled.png[width=900,alt="An available device with the Launch button disabled"] * In the Device Details, both the *Launch* and *Retain* buttons are disabled. -* If an available device is launched using the URL, this error is returned: _Host has reached its configured capacity. Please try again later. Incident ID: HOST-400 - 12970311-1767603575646._ +image:device-details-disabled-lauch-retain.png[width=600,alt="The disabled Launch and Retain button in Device Details"] -* Automation sessions that are launched will return an error +* If an available device is launched via the URL, the Native Framework API or an automation script, this error is returned: _Host has reached its configured capacity. Please try again later._ +NOTE: The limit only applies for new sessions initiated. Existing sessions are not terminated if a limit that is lower than the current number of existing sessions are set. -Recommended actions when the limit has been reached for a host: +== Recommended actions when the limit has been reached * Wait for existing sessions to be finished on the host before launching a new one. -* Use similar devices on another host machine that is not a capacity. - -* If there are retained devices, cancel retaining if possible to allow for more sessions. +* Use similar devices on other host machines that is not at capacity if available. -NOTE: The limit only applies for new sessions initiated. If the limit is updated in the settings to a number that is lower than the number of existing parallel sessions, no session are terminated. \ No newline at end of file +* If possible, release devices from being retained to allow for more sessions. \ No newline at end of file From 3915e4a69c99d121221af1b462e8a1a6cdb8885a Mon Sep 17 00:00:00 2001 From: Tung Manh Hoang Date: Fri, 9 Jan 2026 11:01:48 +0700 Subject: [PATCH 5/6] KOB-51842 update content based on feedbacks --- docs/modules/device-lab-management/nav.adoc | 2 +- .../configure-max-parallel-tests.adoc | 100 --------------- .../deviceConnect/control-host-capacity.adoc | 116 ++++++++++++++++++ 3 files changed, 117 insertions(+), 101 deletions(-) delete mode 100644 docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc create mode 100644 docs/modules/device-lab-management/pages/deviceConnect/control-host-capacity.adoc diff --git a/docs/modules/device-lab-management/nav.adoc b/docs/modules/device-lab-management/nav.adoc index 1762f5f0a..c0b172239 100644 --- a/docs/modules/device-lab-management/nav.adoc +++ b/docs/modules/device-lab-management/nav.adoc @@ -4,7 +4,7 @@ ** xref:deviceConnect/retrieve-deviceconnect-logs.adoc[] ** xref:deviceConnect/restart-deviceconnect-services.adoc[] ** xref:deviceConnect/remote-update-deviceconnect.adoc[] -** xref:deviceConnect/configure-max-parallel-tests.adoc[] +** xref:deviceConnect/control-host-capacity.adoc[] * deviceShare ** xref:deviceShare/install-update-deviceshare.adoc[] * xref:ios-devices/index.adoc[] diff --git a/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc b/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc deleted file mode 100644 index 34e493f52..000000000 --- a/docs/modules/device-lab-management/pages/deviceConnect/configure-max-parallel-tests.adoc +++ /dev/null @@ -1,100 +0,0 @@ -= Control the capacity limit of a host machine -:navtitle: Control host machine capacity limit - -In this section, you will learn about: - -* What the maximum capacity of a host machine is and when to set the limit. - -* How to set the capacity limit. - -* What the behaviour is after the limit is set. - -* Recommendations when the limit is reached. - -== What is a host machine's capacity and when to set the limit - -A host machine has its own maximum capacity regarding how many parallel tests (the number of devices in sessions) can be run at once. This maximum capacity might be lower than the total of connected devices on the host. - -If the host machine satisfies all hardware requirements from Kobiton, then the maximum capacity usually is 26 parallel tests at once. Therefore, only host machines with more than 26 connected devices need to have the limit set. - -== Set the capacity limit - -. Open the Kobiton web portal and log in using an account with *ADMIN* role. - -. Select the profile picture and choose **Settings**, then choose **Device Management**. - -. Choose *Settings* under a host machine. - -+ - -image:host-machine-capacity-settings.png[width=1000,alt="The Settings option of a host machine in Device Management"] - -. In the pop-up, choose either of the below options: - -* *Unlimited* (default): no limit for the host machine. - -* *Set custom limit*: set a custom limit from 1 to 999. The recommended limit is *26*. - -+ - -image:host-machine-set-capacity.png[width=500,alt="The available options for setting capacity limit of a host machine"] - -. Select *Save*. - -== Observe the capacity limit in action - -Once the limit has been set for a Mac mini host machine, the total number of parallel tests will be limited to the number set in the settings. - -The following session types count towards the total number: - -* Scriptless (Revisit) - -* Manual - -* Appium Automation - -* Native Espresso/UiAutomator Automation - -* Native XCUITest Automation - -* Gaming (Turbo Test GameDriver) - -* Turbo Test Appium - -* Mixed - -* CLI - -* API - -* Clean-up - -* Retained - -When the maximum has been reached, no additional session of the above types can be initiated on this host even though there are still available devices. Specifically: - -* All devices that are available on the host machine will be hidden in the Devices list. To show these devices, de-select the *Hide unavailable devices* checkbox in the filter. - -+ - -image:device-filter-hide-unavailable-devices.png[width=300,alt="The Hide unavailable devices option in the Devices list filter"] - -** If available devices are not hidden in the Device list, the *Launch* button is disabled. - -image:available-device-launch-disabled.png[width=900,alt="An available device with the Launch button disabled"] - -* In the Device Details, both the *Launch* and *Retain* buttons are disabled. - -image:device-details-disabled-lauch-retain.png[width=600,alt="The disabled Launch and Retain button in Device Details"] - -* If an available device is launched via the URL, the Native Framework API or an automation script, this error is returned: _Host has reached its configured capacity. Please try again later._ - -NOTE: The limit only applies for new sessions initiated. Existing sessions are not terminated if a limit that is lower than the current number of existing sessions are set. - -== Recommended actions when the limit has been reached - -* Wait for existing sessions to be finished on the host before launching a new one. - -* Use similar devices on other host machines that is not at capacity if available. - -* If possible, release devices from being retained to allow for more sessions. \ No newline at end of file diff --git a/docs/modules/device-lab-management/pages/deviceConnect/control-host-capacity.adoc b/docs/modules/device-lab-management/pages/deviceConnect/control-host-capacity.adoc new file mode 100644 index 000000000..daf0ee2eb --- /dev/null +++ b/docs/modules/device-lab-management/pages/deviceConnect/control-host-capacity.adoc @@ -0,0 +1,116 @@ += Control the capacity limit of a host machine +:navtitle: Control host machine capacity limit + +== Overview + +This guide explains how to configure and manage the maximum number of parallel test sessions that can run on a host machine. + +It covers: + +* What a host machine capacity limit is and when it should be set + +* How to configure the capacity limit + +* How device availability changes when the limit is reached + +* Recommended actions when capacity is exceeded + +== What a host machine capacity limit is + +Each host machine has a finite capacity for running parallel test sessions. Capacity is determined by hardware resources and runtime conditions, and may be lower than the total number of devices connected to the host. + +If a host machine meets Kobiton’s hardware requirements, it can typically support up to 26 parallel sessions. + +For this reason, capacity limits are generally required only when more than 26 devices are connected to a single host. + +== Set the capacity limit + +To configure a capacity limit for a host machine: + +. Sign in to the Kobiton Portal using an account with the *ADMIN* predefined role. + +. Select your profile picture, then choose *Settings*. + +. Open *Device Management*. + +. Select *Settings* for the target host machine. ++ +image:host-machine-capacity-settings.png[width=1000,alt="The Settings option of a host machine in Device Management"] + +. In the pop-up, choose one of the following options: + +* *Unlimited* (default): no limit for the host machine. + +* *Set custom limit*: set a limit between 1 and 999. ++ +The recommended value is *26*. ++ +image:host-machine-set-capacity.png[width=500,alt="The available options for setting capacity limit of a host machine"] + +. Select *Save*. + +== How the capacity limit affects sessions + +Once a capacity limit is set, the total number of parallel sessions on the host is restricted to the configured value. + +The following session types count toward the capacity limit: + +* Scriptless (Revisit) + +* Manual + +* Appium Automation + +* Native Espresso/UiAutomator Automation + +* Native XCUITest Automation + +* Gaming (Turbo Test GameDriver) + +* Turbo Test Appium + +* Mixed + +* CLI + +* API + +* Clean-up + +* Retained + +When the capacity limit is reached: + +* Devices hosted on the machine remain *online* but are not immediately available for launch. + +* By default, these devices are hidden in the *Devices* list. + +** To view them, clear the *Hide unavailable devices* filter. ++ +image:device-filter-hide-unavailable-devices.png[width=300,alt="The Hide unavailable devices option in the Devices list filter"] + +* When visible, the *Launch* button is disabled. ++ +image:available-device-launch-disabled.png[width=900,alt="An available device with the Launch button disabled"] + +* In the Device Details, both the *Launch* and *Retain* buttons are disabled. ++ +image:device-details-disabled-lauch-retain.png[width=600,alt="The disabled Launch and Retain button in Device Details"] + +* If a session is initiated through the Portal, API, or automation while the host is at capacity, the following error is returned: ++ +_Host has reached its configured capacity. Please try again later._ + +Capacity limits apply only to *new sessions*. + +Existing sessions are not interrupted if a lower limit is set after they have started. + +== Recommended actions when capacity is reached + +* If a host machine reaches its capacity limit: + +** Wait for active sessions to complete before launching new ones. + +** Launch a similar device hosted on a different machine with available capacity. + +** Release retained devices when possible to free capacity for additional sessions. \ No newline at end of file From 8db67ca150ca6577407345a35885c1cb35b2001a Mon Sep 17 00:00:00 2001 From: Tung Manh Hoang Date: Tue, 3 Feb 2026 11:37:49 +0700 Subject: [PATCH 6/6] KOB-51842 small update based on feedbacks --- .../pages/deviceConnect/control-host-capacity.adoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/modules/device-lab-management/pages/deviceConnect/control-host-capacity.adoc b/docs/modules/device-lab-management/pages/deviceConnect/control-host-capacity.adoc index daf0ee2eb..9594c2ed8 100644 --- a/docs/modules/device-lab-management/pages/deviceConnect/control-host-capacity.adoc +++ b/docs/modules/device-lab-management/pages/deviceConnect/control-host-capacity.adoc @@ -1,9 +1,9 @@ -= Control the capacity limit of a host machine -:navtitle: Control host machine capacity limit += Control the capacity of a host machine +:navtitle: Control host machine capacity == Overview -This guide explains how to configure and manage the maximum number of parallel test sessions that can run on a host machine. +This guide explains how to configure and manage the maximum number of parallel test sessions that can run on a host machine. This setting acts as a governor to control overall test execution capacity. It covers: @@ -15,7 +15,7 @@ It covers: * Recommended actions when capacity is exceeded -== What a host machine capacity limit is +== Host machine capacity limits Each host machine has a finite capacity for running parallel test sessions. Capacity is determined by hardware resources and runtime conditions, and may be lower than the total number of devices connected to the host. @@ -23,7 +23,7 @@ If a host machine meets Kobiton’s hardware requirements, it can typically supp For this reason, capacity limits are generally required only when more than 26 devices are connected to a single host. -== Set the capacity limit +== Set the Max Parallel Tests To configure a capacity limit for a host machine: