Example #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!")
Example #2
0
 def cancel_job(self, job_name, taskid):
     flag = False
     query = Queue("%squeue" % self.jenkins_server, self.server)
     for i in query._get_queue_items_for_job(job_name):
         if eval(i.get_parameters()["params"])["task_id"] == taskid:
             query.delete_item(i)
             flag = True
             break
     return flag
Example #3
0
 def query_items(self, nodeName):
     """
     判断Slave上面排队的项目
     :param nodeName: Slave名称
     :return: 排队的项目
     """
     data = []
     query = Queue(self.jenkins_server + "queue", self.server)
     return query._data["items"]
Example #4
0
 def has_query_items(self, nodeName):
     """
     判断Slave上面是否有排队的项目
     :param nodeName: Slave名称
     :return: True/False
     """
     query = Queue(self.jenkins_server + "queue", self.server)
     if nodeName in str(query._data):
         logging.info(nodeName + " has query items!")
         return True
     else:
         logging.info(nodeName + " does not have query items!")
         return False
Example #5
0
 def cancel_all_build(self, job_name):
     """
     取消一个job上面所有排队的构建
     :param job_name: job名称
     :return: True/False
     """
     query = Queue(self.jenkins_server + "queue", self.server)
     for i in query._get_queue_items_for_job(job_name):
         query.delete_item(i)
     if len(query._get_queue_items_for_job(job_name)) == 0:
         return True
     else:
         return False
Example #6
0
class TestQueue(unittest.TestCase):

    @classmethod
    def mockGetData(self, url):
        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_get_job_for_queue_item(self):
        item40 = self.q[40]
        j = item40.get_job()
        self.assertIsInstance(j, Job)

    @mock.patch.object(Queue, '_poll')
    def test_poll_cache(self, _poll):
        # only gets called once in interval
        q = Queue('http://localhost:8080/queue', self.J, poll_cache_timeout=1)
        for i in range(2):
            q.poll()
        self.assertEquals(_poll.call_count, 1)
        q.poll(True)  # test force poll
        self.assertEquals(_poll.call_count, 2)

        # ensure it gets called again after cache timeout
        _poll.reset_mock()
        time.sleep(1.1)
        q.poll()
        self.assertTrue(_poll.called)

        # ensure it is disabled by default
        _poll.reset_mock()
        for i in range(2):
            self.q.poll()
        self.assertEquals(_poll.call_count, 2)
        self.assertIsNone(self.q.poll_cache_expires)
Example #7
0
 def setUp(self):
     self.J = Jenkins('http://localhost:8080')  # Jenkins
     self.q = Queue('http://localhost:8080/queue', self.J)
Example #8
0
 def get_queue(self):
     queue_url = self.get_queue_url()
     return Queue(queue_url, self)
Example #9
0
class TestQueue(unittest.TestCase):
    @classmethod
    def mockGetData(self, url):
        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_get_job_for_queue_item(self):
        item40 = self.q[40]
        j = item40.get_job()
        self.assertIsInstance(j, Job)
Example #10
0
 def setUp(self):
     self.J = Jenkins('http://localhost:8080')  # Jenkins
     self.q = Queue('http://localhost:8080/queue', self.J)
Example #11
0
class TestQueue(unittest.TestCase):

    @classmethod
    def mockGetData(self, url):
        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_get_job_for_queue_item(self):
        item40 = self.q[40]
        j = item40.get_job()
        self.assertIsInstance(j, Job)
Example #12
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
Example #13
-1
    def test_poll_cache(self, _poll):
        # only gets called once in interval
        q = Queue('http://localhost:8080/queue', self.J, poll_cache_timeout=1)
        for i in range(2):
            q.poll()
        self.assertEquals(_poll.call_count, 1)
        q.poll(True)  # test force poll
        self.assertEquals(_poll.call_count, 2)

        # ensure it gets called again after cache timeout
        _poll.reset_mock()
        time.sleep(1.1)
        q.poll()
        self.assertTrue(_poll.called)

        # ensure it is disabled by default
        _poll.reset_mock()
        for i in range(2):
            self.q.poll()
        self.assertEquals(_poll.call_count, 2)
        self.assertIsNone(self.q.poll_cache_expires)