def test_say_colon59_when_59(self):
     self.assertEqual(TimeConvert(59), '0:59')
Exemplo n.º 2
0
    def CrawlerHandler(self, clientsock, addr):
        db = DBManager()
        while True:

            if not self.q.empty():
                wow = self.q.get()
                if db.Findid(wow[0]) and db.Findid(
                        wow[0][:2] + str(int(wow[0][2:]) + wow[2]).zfill(8)
                ) and db.Findid(wow[0][:2] +
                                str(int(wow[0][2:]) + wow[2] * 2).zfill(8)):
                    log.debug("data is already found")
                    continue
                self.current.put(wow)
                print "Assign Task:{} {} {} {}".format(wow[0], wow[1], wow[2],
                                                       wow[3])
                s, d = self.AssignTask(wow[0], wow[1], wow[2], wow[3],
                                       (clientsock, addr))

                if s:
                    print "Success!!Add new Task~"
                    log.debug('add new Task : ' + TimeConvert(wow[1], d))
                    self.q.put(
                        (wow[0][:2] +
                         str(int(wow[0][2:]) + wow[3] * wow[2]).zfill(8),
                         TimeConvert(wow[1], d), wow[2], wow[3]))
                else:
                    print "Reach end!!Add guess data!!"
                    self.guess.put(
                        (wow[0][:2] +
                         str(int(wow[0][2:]) + wow[3] * wow[2] * 5).zfill(8),
                         TimeConvert(wow[1], 0), wow[2], wow[3], 14, 20))

                self.current.get()
            elif not self.guess.empty():
                wow = self.guess.get()
                if db.Findid(wow[0]) and db.Findid(
                        wow[0][:2] + str(int(wow[0][2:]) + wow[2]).zfill(8)
                ) and db.Findid(wow[0][:2] +
                                str(int(wow[0][2:]) + wow[2] * 2).zfill(8)):
                    log.debug("data is already found")
                    continue
                print "Assign Task:{} {} {} {} from guess".format(
                    wow[0], wow[1], wow[2], wow[3])
                s, d = self.AssignTask(wow[0], wow[1], wow[2], wow[3],
                                       (clientsock, addr))

                if s:
                    print "Success!!Add new Task~"
                    log.debug('add new Task : ' + TimeConvert(wow[1], d))
                    self.q.put(
                        (wow[0][:2] +
                         str(int(wow[0][2:]) + wow[3] * wow[2]).zfill(8),
                         TimeConvert(wow[1], d), wow[2], wow[3]))
                    self.q.put((wow[0], wow[1], wow[2] * (-1), wow[3]))
                else:
                    print "guess fail"
                    if wow[5] > 0:

                        if wow[4] == 14:
                            self.guess.put(
                                (wow[0][:2] +
                                 str(int(wow[0][2:]) +
                                     wow[3] * wow[2] * 5).zfill(8),
                                 TimeConvert(wow[1], 0), wow[2], wow[3], 14,
                                 wow[5] - 1))
                            self.guess.put((wow[0], TimeConvert(wow[1],
                                                                1), wow[2],
                                            wow[3], wow[4] - 1, wow[5]))
                            self.guess.put((wow[0], TimeConvert(wow[1],
                                                                -1), wow[2],
                                            wow[3], wow[4] - 2, wow[5]))
                        elif (wow[4] % 2) == 1 and wow[4] >= 6:
                            self.guess.put((wow[0], TimeConvert(wow[1],
                                                                1), wow[2],
                                            wow[3], wow[4] - 2, wow[5]))
                        elif (wow[4] % 2) == 0 and wow[4] >= 6:
                            self.guess.put((wow[0], TimeConvert(wow[1],
                                                                -1), wow[2],
                                            wow[3], wow[4] - 2, wow[5]))
                        elif (wow[4] % 2) == 1 and wow[4] < 6:
                            self.guess2.put((wow[0], TimeConvert(wow[1],
                                                                 1), wow[2],
                                             wow[3], wow[4] - 2, wow[5]))
                        elif (wow[4] % 2) == 0 and wow[4] < 6:
                            self.guess2.put((wow[0], TimeConvert(wow[1],
                                                                 -1), wow[2],
                                             wow[3], wow[4] - 2, wow[5]))
                        else:
                            log.error(
                                "guess data : {},{},{},{},{},{},{} should not in guess queue"
                                .format(wow[0], wow[1], wow[2], wow[3], wow[4],
                                        wow[5]))
                    else:
                        self.guess2.put(
                            (wow[0][:2] +
                             str(int(wow[0][2:]) +
                                 wow[3] * wow[2] * 5).zfill(8),
                             TimeConvert(wow[1],
                                         0), wow[2], wow[3], 14, wow[5] - 1))
            elif not self.guess2.empty():
                wow = self.guess2.get()
                if db.Findid(wow[0]) and db.Findid(
                        wow[0][:2] + str(int(wow[0][2:]) + wow[2]).zfill(8)
                ) and db.Findid(wow[0][:2] +
                                str(int(wow[0][2:]) + wow[2] * 2).zfill(8)):
                    log.debug("data is already found")
                    continue
                print "Assign Task:{} {} {} {} from guess2".format(
                    wow[0], wow[1], wow[2], wow[3])
                s, d = self.AssignTask(wow[0], wow[1], wow[2], wow[3],
                                       (clientsock, addr))

                if s:
                    print "Success!!Add new Task~"
                    log.debug('add new Task : ' + TimeConvert(wow[1], d))
                    self.q.put(
                        (wow[0][:2] +
                         str(int(wow[0][2:]) + wow[3] * wow[2]).zfill(8),
                         TimeConvert(wow[1], d), wow[2], wow[3]))
                    self.q.put((wow[0], wow[1], wow[2] * (-1), wow[3]))
                else:
                    print "guess fail"
                    if wow[5] > 0:

                        if (wow[4] % 2) == 1 and wow[4] >= 0:
                            self.guess2.put((wow[0], TimeConvert(wow[1],
                                                                 1), wow[2],
                                             wow[3], wow[4] - 2, wow[5]))

                        elif (wow[4] % 2) == 0 and wow[4] >= 0:
                            self.guess2.put((wow[0], TimeConvert(wow[1],
                                                                 -1), wow[2],
                                             wow[3], wow[4] - 2, wow[5]))

                        else:
                            log.info("date guess finished")
                    else:
                        if wow[4] == 14:
                            self.guess2.put(
                                (wow[0][:2] +
                                 str(int(wow[0][2:]) +
                                     wow[3] * wow[2] * 5).zfill(8),
                                 TimeConvert(wow[1], 0), wow[2], wow[3], 14,
                                 wow[5] - 1))
                            self.guess2.put((wow[0], TimeConvert(wow[1],
                                                                 1), wow[2],
                                             wow[3], wow[4] - 1, wow[5]))
                            self.guess2.put((wow[0], TimeConvert(wow[1],
                                                                 -1), wow[2],
                                             wow[3], wow[4] - 2, wow[5]))
                        elif (wow[4] % 2) == 1 and wow[4] >= 0:
                            self.guess2.put((wow[0], TimeConvert(wow[1],
                                                                 1), wow[2],
                                             wow[3], wow[4] - 2, wow[5]))

                        elif (wow[4] % 2) == 0 and wow[4] >= 0:
                            self.guess2.put((wow[0], TimeConvert(wow[1],
                                                                 -1), wow[2],
                                             wow[3], wow[4] - 2, wow[5]))

                        else:
                            log.info("date guess finished")
            else:
                print "queue is empty"
                time.sleep(20)
            # delete after testing
            with open('record.txt', 'a') as outFd:
                outFd.write(wow[0] + '\t')
                outFd.write(wow[1] + '\t')
                outFd.write(str(wow[2]) + '\t')
                outFd.write(str(wow[3]) + '\n')
 def test_say_1_when_60(self):
     self.assertEqual(TimeConvert(60), 1)
 def test_say_colon60_when_60(self):
     self.assertEqual(TimeConvert(60), '1:0')
 def test_say_colon45_when_45(self):
     self.assertEqual(TimeConvert(45), '0:45')
 def test_say_2colon6_when_126(self):
     self.assertEqual(TimeConvert(126), '2:6')
 def test_say_1colon3_when_63(self):
     self.assertEqual(TimeConvert(63), '1:3')