Перезагрузка машины на каркасе робота - PullRequest
0 голосов
/ 14 февраля 2019

Мне нужно перезагрузить Linux-машину как часть моего теста, но после перезагрузки ssh-соединение закрывается и тест не пройден.

Я использую SSHLibrary для подключения к моим машинам (все linux vms), и я могу переключить соединение с этой машиной, а затем отправить команду перезагрузки.Проблема в том, что я пытаюсь подключить компьютер после перезагрузки, потому что соединение ssh закрыто.

RebootMachine
    Log To Console    Rebooting machine
    Switch Connection    ${MACHINE_ALIAS}
    Start Command    reboot    true
    Sleep   45s
    Switch Connection    ${MACHINE_ALIAS}
    Start Command    echo check

В последней строке ключевого слова я получаю: «SSHException: SSH сессия не активна»

Я попытался закрыть соединение и снова открыть его так:

 RebootMachine
    Log To Console    Rebooting machine
    Switch Connection    ${MACHINE_ALIAS}
    Start Command    reboot    true
    Sleep   45s
    Switch Connection    ${MACHINE_ALIAS}
    Close Connection
    Open Connection    ${MACHINE_IP}    ${MACHINE_ALIAS}
    Switch Connection    ${MACHINE_ALIAS}
    Start Command    echo check

Но он переключается на другую машину из моих подключений (команда echo выполняется на другой машине).

Мне нужен способ сделать перезагрузку во время теста и снова подключиться к перезагрузленной машине, это возможно?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

В дополнение к другому ответу я бы предложил удалить Sleep 45s из вашего кода.Перезагрузка может занять больше времени, и в этом случае ваш Open Connection потерпит неудачу.В аналогичном сценарии я использовал ключевое слово Wait Until Keyword Succeeds из библиотеки BuiltIn, чтобы избавиться от Sleep.

. Этот пример будет ждать максимум три минуты и будет пытатьсяоткрывать SSH-соединение каждые 15 секунд.

Wait Until Keyword Succeeds     3min   15s    Open Connection    ${MACHINE_IP}    alias=${MACHINE_ALIAS}  prompt=$

Так что, если перезапуск занимает 45 секунд, он будет ждать примерно столько же времени, но если по какой-то причине это займет больше времени в приемлемом интервале, он все равно будет работать.

Я бы по-прежнему использовал это решение, если для максимального времени перезагрузки требуется 45 секунд, тогда 3min следует заменить на 45s, а retry_interval (15 с) может составлять 10 секунд или что-то в этом роде..

0 голосов
/ 14 февраля 2019

После перезагрузки компьютера сеанс станет неактивным, позже, после его повторного запуска, вы должны снова выполнить Open Connection, но, похоже, вместо перезагрузки вы сделали switch connection.

Попробуйте изменитьпорядок ваших скриптов, как показано ниже, и я добавил несколько строк для входа на этот сервер:

Switch Connection    ${MACHINE_ALIAS}
Start Command    reboot    true
Sleep   45s

Open Connection    ${MACHINE_IP}    alias=${MACHINE_ALIAS}  prompt=$
${std_output}=  Login   ${username} ${password}
Should Contain  ${std_output}   $   

${stdout}= Execute Command  echo 'check'
 Should Contain   ${stdout}   check
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...