Esempio n. 1
0
 def cancel_jobs(self, job_name, conditions):
     query = Queue(self.jenkins_server + "queue", self.server)
     # self.server.jobs[job_name].delete_from_queue() #  method 2
     for i in query.get_queue_items_for_job(job_name):
         if conditions in str(i._data):
             query.delete_item(i)
             logging.info(str(i) + " is deleted!")
Esempio n. 2
0
class TestQueue(unittest.TestCase):
    QUEUE_DATA = {
        'items': [{
            'actions': [{
                'causes': [{
                    'shortDescription': 'Started by user anonymous',
                    'userId': None,
                    'userName': '******'
                }],
                'parameters': [{
                    'name': 'name1',
                    'value': 'value1'
                }, {
                    'name': 'node'
                }]
            }],
            'blocked':
            False,
            'buildable':
            True,
            'buildableStartMilliseconds':
            1371419916747,
            'id':
            42,
            'inQueueSince':
            1371419909428,
            'params':
            '',
            'stuck':
            False,
            'task': {
                'color': 'grey',
                'name': 'klscuimkqo',
                'url': 'http://localhost:8080/job/klscuimkqo/'
            },
            'why':
            'Waiting for next available executor'
        }, {
            'actions': [{
                'causes': [{
                    'shortDescription': 'Started by user anonymous',
                    'userId': None,
                    'userName': '******'
                }]
            }],
            'blocked':
            False,
            'buildable':
            True,
            'buildableStartMilliseconds':
            1371419911747,
            'id':
            41,
            'inQueueSince':
            1371419906327,
            'params':
            '',
            'stuck':
            False,
            'task': {
                'color': 'grey',
                'name': 'vluyhzzepl',
                'url': 'http://localhost:8080/job/vluyhzzepl/'
            },
            'why':
            'Waiting for next available executor'
        }, {
            'actions': [{
                'causes': [{
                    'shortDescription': 'Started by user anonymous',
                    'userId': None,
                    'userName': '******'
                }]
            }],
            'blocked':
            False,
            'buildable':
            True,
            'buildableStartMilliseconds':
            1371419911747,
            'id':
            40,
            'inQueueSince':
            1371419903212,
            'params':
            '',
            'stuck':
            False,
            'task': {
                'color': 'grey',
                'name': 'utmebvpxrw',
                'url': 'http://localhost:8080/job/utmebvpxrw/'
            },
            'why':
            'Waiting for next available executor'
        }]
    }

    @classmethod
    def mockGetData(self, url, tree):
        try:
            return TestQueue.URL_DATA[url]
        except KeyError:
            raise FourOhFourError(url)

    URL_DATA = {}

    URL_DATA['http://*****:*****@mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def setUp(self):
        self.J = Jenkins('http://*****:*****@mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def test_getitem(self):
        item40 = self.q[40]
        self.assertIsInstance(item40, QueueItem)

    @mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def test_get_job_for_queue_item(self):
        item40 = self.q[40]
        j = item40.get_job()
        self.assertIsInstance(j, Job)

    @mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def test_get_queue_item_for_job(self):
        item40 = self.q.get_queue_items_for_job('klscuimkqo')
        self.assertIsInstance(item40, list)
        self.assertEquals(len(item40), 1)
        self.assertIsInstance(item40[0], QueueItem)

    @mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def test_qi_get_parameters(self):
        qi = self.q[42]
        self.assertEquals(qi.get_parameters(), {
            'name1': 'value1',
            'node': None
        })
Esempio n. 3
0
class TestQueue(unittest.TestCase):
    QUEUE_DATA = {
        'items': [
            {
                'actions': [
                    {
                        'causes': [
                            {
                                'shortDescription': 'Started by user anonymous',
                                'userId': None,
                                'userName': '******'
                            }
                        ],
                        'parameters':
                        [{'name': 'name1', 'value': 'value1'},
                         {'name': 'node'}]
                    }
                ],
                'blocked': False,
                'buildable': True,
                'buildableStartMilliseconds': 1371419916747,
                'id': 42,
                'inQueueSince': 1371419909428,
                'params': '',
                'stuck': False,
                'task': {
                    'color': 'grey',
                    'name': 'klscuimkqo',
                    'url': 'http://localhost:8080/job/klscuimkqo/'
                },
                'why': 'Waiting for next available executor'
            },
            {
                'actions': [
                    {
                        'causes': [
                            {
                                'shortDescription': 'Started by user anonymous',
                                'userId': None,
                                'userName': '******'
                            }
                        ]
                    }
                ],
                'blocked': False,
                'buildable': True,
                'buildableStartMilliseconds': 1371419911747,
                'id': 41,
                'inQueueSince': 1371419906327,
                'params': '',
                'stuck': False,
                'task': {
                    'color': 'grey',
                    'name': 'vluyhzzepl',
                    'url': 'http://localhost:8080/job/vluyhzzepl/'
                },
                'why': 'Waiting for next available executor'
            },
            {
                'actions': [
                    {
                        'causes': [
                            {
                                'shortDescription': 'Started by user anonymous',
                                'userId': None,
                                'userName': '******'
                            }
                        ]
                    }
                ],
                'blocked': False,
                'buildable': True,
                'buildableStartMilliseconds': 1371419911747,
                'id': 40,
                'inQueueSince': 1371419903212,
                'params': '',
                'stuck': False,
                'task': {
                    'color': 'grey',
                    'name': 'utmebvpxrw',
                    'url': 'http://localhost:8080/job/utmebvpxrw/'
                },
                'why': 'Waiting for next available executor'
            }
        ]
    }

    @classmethod
    def mockGetData(self, url, tree):
        try:
            return TestQueue.URL_DATA[url]
        except KeyError:
            raise FourOhFourError(url)

    URL_DATA = {}

    URL_DATA['http://*****:*****@mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def setUp(self):
        self.J = Jenkins('http://*****:*****@mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def test_getitem(self):
        item40 = self.q[40]
        self.assertIsInstance(item40, QueueItem)

    @mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def test_get_job_for_queue_item(self):
        item40 = self.q[40]
        j = item40.get_job()
        self.assertIsInstance(j, Job)

    @mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def test_get_queue_item_for_job(self):
        item40 = self.q.get_queue_items_for_job('klscuimkqo')
        self.assertIsInstance(item40, list)
        self.assertEquals(len(item40), 1)
        self.assertIsInstance(item40[0], QueueItem)

    @mock.patch.object(JenkinsBase, 'get_data', mockGetData)
    def test_qi_get_parameters(self):
        qi = self.q[42]
        self.assertEquals(qi.get_parameters(), {'name1': 'value1',
                                                'node': None})
Esempio n. 4
0
 def get_query_taskids_from_device_bk(self, job_name):
     """
     获取相应job在每一个节点上面排队的taskid
     :param job_name: job名称
     :return: device ID和对应的task ID
     """
     query_items = {}
     count = 1
     while count < 10:
         try:
             self.server.jobs[job_name].get_last_build()._data
             break
         except:
             count += 1
     query = Queue(self.jenkins_server + "queue", self.server)
     try:
         for i in (query.get_queue_items_for_job(job_name) +
                   self.get_running_objects(job_name)):
             i = i._data
             # print i
             if "actions" in i.keys():
                 for item in i["actions"]:
                     if "parameters" in item.keys():
                         for value_item in item["parameters"]:
                             if "name" in value_item and value_item[
                                     "name"] == "params":
                                 value = eval(value_item["value"])
                             if job_name == self.get_jenkins_info().get(
                                     'safety_cancel_name'):
                                 if "name" in value_item and value_item[
                                         "name"] == "nodeName":
                                     device_ID = value_item["value"]
                         break
                 if job_name == self.get_jenkins_info().get(
                         'compatibility_job_name'):
                     device_ID = value["nodeName"].split("_")[-1]
                     appinfo_ID = value["appinfo_id"]
                     server_address = value["server_address"]
                 elif job_name == self.get_jenkins_info().get(
                         'safety_cancel_name'):
                     appinfo_ID = []
                     first_flag = False
                     for item in value["scanInfo"]:
                         appinfo_ID.append(item["id"])
                         if not first_flag:
                             server_address = item["server_address"]
                             first_flag = True
                 if device_ID not in query_items.keys():
                     query_items[device_ID] = [{
                         "id":
                         appinfo_ID,
                         "server_address":
                         server_address
                     }]
                 else:
                     query_items[device_ID].append({
                         "id":
                         appinfo_ID,
                         "server_address":
                         server_address
                     })
     except NoBuildData:
         query_items = {}
     return query_items