Beispiel #1
0
 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()
Beispiel #2
0
 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()
Beispiel #3
0
 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()
Beispiel #4
0
 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()
Beispiel #5
0
 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()
Beispiel #6
0
    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)
Beispiel #7
0
 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)
Beispiel #8
0
 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)