File: test_safe_exit.py

package info (click to toggle)
python-jenkinsapi 0.3.17-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,500 kB
  • sloc: python: 10,001; xml: 50; makefile: 31; sh: 26
file content (43 lines) | stat: -rw-r--r-- 1,210 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""
System tests for `jenkinsapi.jenkins` module.
"""

import time
import logging
from jenkinsapi.build import Build
from jenkinsapi_tests.test_utils.random_strings import random_string
from jenkinsapi_tests.systests.job_configs import LONG_RUNNING_JOB


log = logging.getLogger(__name__)


def test_safe_exit(jenkins):
    job_name = "Bcreate_%s" % random_string()
    job = jenkins.create_job(job_name, LONG_RUNNING_JOB)
    qq = job.invoke()
    time.sleep(3)
    bn = qq.block_until_building(delay=3).get_number()
    assert isinstance(bn, int)

    build = qq.get_build()
    assert isinstance(build, Build)
    assert build.is_running()

    # A job is now running and safe_exit should await running jobs
    # Call, but wait only for 5 seconds then cancel exit
    jenkins.safe_exit(wait_for_exit=False)
    time.sleep(5)

    jenkins.cancel_quiet_down()  # leave quietDown mode
    assert jenkins.is_quieting_down is False

    build.stop()
    # if we call next line right away - Jenkins have no time to stop job
    # so we wait a bit
    while build.is_running():
        time.sleep(0.5)

    console = build.get_console()
    assert isinstance(console, str)
    assert "Started by user" in console