def test_readPacket_multi_pdu(self): p1 = gear.Packet(gear.constants.REQ, gear.constants.WORK_COMPLETE, b'H:127.0.0.1:11\x00' + (b'x' * 2600)) p2 = gear.Packet(gear.constants.REQ, gear.constants.GRAB_JOB_UNIQ, b'') self.socket._set_data( [p1.toBinary()[:1448], p1.toBinary()[1448:] + p2.toBinary()]) # First packet r1 = self.conn.readPacket() self.assertEquals(r1, p1) # Second packet r2 = self.conn.readPacket() self.assertEquals(r2, p2) self.assertEndOfData()
def test_readPacket_admin_mix(self): p1 = gear.Packet(gear.constants.REQ, gear.constants.WORK_COMPLETE, b'H:127.0.0.1:11\x00' + (b'x' * 5000)) command = b'status\n' p2 = gear.Packet(gear.constants.REQ, gear.constants.WORK_COMPLETE, b'H:127.0.0.1:11\x00' + (b'x' * 5000)) self.socket._set_data([p1.toBinary() + command + p2.toBinary()]) r1 = self.conn.readPacket() self.assertEquals(r1, p1) ra = self.conn.readPacket() self.assertEqual(ra.command, command.strip()) r2 = self.conn.readPacket() self.assertEquals(r2, p2) self.assertEndOfData()
def test_readPacket_large(self): p1 = gear.Packet(gear.constants.REQ, gear.constants.WORK_COMPLETE, b'H:127.0.0.1:11\x00' + (b'x' * 10000)) self.socket._set_data([p1.toBinary()]) r1 = self.conn.readPacket() self.assertEquals(r1, p1) self.assertEndOfData()
def test_readPacket_admin_mix(self): p1 = gear.Packet(gear.constants.REQ, gear.constants.WORK_COMPLETE, b'H:127.0.0.1:11\x00' + (b'x' * 5000)) response = b'test\t0\t0\t1\n.\n' p2 = gear.Packet(gear.constants.REQ, gear.constants.WORK_COMPLETE, b'H:127.0.0.1:11\x00' + (b'x' * 5000)) req = gear.StatusAdminRequest() self.conn.admin_requests.append(req) self.socket._set_data([p1.toBinary() + response + p2.toBinary()]) r1 = self.conn.readPacket() self.assertEquals(r1, p1) ra = self.conn.readPacket() self.assertEqual(ra.response, response) r2 = self.conn.readPacket() self.assertEquals(r2, p2) self.assertEndOfData()
def test_readPacket_multi_pdu(self): p1 = gear.Packet(gear.constants.REQ, gear.constants.WORK_COMPLETE, b'H:127.0.0.1:11\x00' + (b'x' * 2600)) p2 = gear.Packet(gear.constants.REQ, gear.constants.GRAB_JOB_UNIQ, b'') self.socket._set_data( [p1.toBinary()[:1448], p1.toBinary()[1448:] + p2.toBinary()]) # First half of first packet with testtools.ExpectedException(gear.RetryIOError): self.conn.readPacket() # Second half of first packet r1 = self.conn.readPacket() self.assertEqual(r1, p1) # Second packet r2 = self.conn.readPacket() self.assertEqual(r2, p2) self.assertEndOfData()
def test_handleStatusRes_2(self): client = gear.Client() packet = gear.Packet(gear.constants.RES, gear.constants.STATUS_RES, b'H:127.0.0.1:11\x001\x000\x00\x00') packet.getJob = lambda: gear.Job("", "") job = client.handleStatusRes(packet) self.assertTrue(job.known) self.assertFalse(job.running)
def lookForLostBuilds(self): self.log.debug("Looking for lost builds") for build in self.builds.values(): if build.result: # The build has finished, it will be removed continue job = build.__gearman_job if not job.handle: # The build hasn't been enqueued yet continue p = gear.Packet(gear.constants.REQ, gear.constants.GET_STATUS, job.handle) job.connection.sendPacket(p)
def lookForLostBuilds(self): self.log.debug("Looking for lost builds") # Construct a list from the values iterator to protect from it changing # out from underneath us. for build in list(self.builds.values()): if build.result: # The build has finished, it will be removed continue job = build.__gearman_job if not job.handle: # The build hasn't been enqueued yet continue p = gear.Packet(gear.constants.REQ, gear.constants.GET_STATUS, job.handle) job.connection.sendPacket(p)