コード例 #1
0
ファイル: tests.py プロジェクト: pycronius/pycronius
    def test_start_stop(self):
        cp = Scheduler(
            [("odd_year", "* * * * * *")],
            [("even_year", "* * * * * */2")],
            start_year=1990, stop_year=1999
        )

        self.assertEqual(cp.get_matching_rules(datetime(1991, 12, 19, 18, 31))[0], "odd_year")
        self.assertEqual(cp.get_matching_rules(datetime(1992, 12, 19, 18, 31))[0], "even_year")
        self.assertEqual(cp.get_matching_rules(datetime(2000, 12, 19, 18, 31)), [])
コード例 #2
0
ファイル: tests.py プロジェクト: pycronius/pycronius
    def test_get_matching_rules(self):
        cp = Scheduler(
            [("open", "7:00 19:30 * * * *"), ("closed", "* 6 * * * *"), ("closed", "19:31 23:59 * * * *")],
            [("closed", "0:00 8:30 * * 6-7 *"), ("closed", "18:30 23:59 * * 6-7 *"), ("closed", "* * 24,25 12 * *"), ("closed", "* * 4 7 * *"), ("closed", "* * 5 4 * 2015")]
        )


        # Weekday
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 19, 18, 31))[0], "open")

        # Weekday Night
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 19, 19, 31))[0], "closed")

        # Weekend Morning
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 20, 8, 0))[0], "closed")

        # Weekend Day
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 20, 12, 0))[0], "open")

        # #Weekend Night
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 20, 18, 31))[0], "closed")

        # Christmas (Thursday)
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 25, 12, 0))[0], "closed")

        # Christmas Eve (Wednesday)
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 24, 12, 0))[0], "closed")

        # Easter (Sunday)
        self.assertEqual(cp.get_matching_rules(datetime(2015, 4, 5, 12, 0))[0], "closed")
コード例 #3
0
ファイル: benchmark.py プロジェクト: pycronius/pycronius
def benchmark_basic_scheduler():
    import time

    rules = [("open", "* 7-19 * * * *"), ("closed", "* 0-6 * * * *"), ("closed", "* 20-23 * * * *")]
    exceptions = [("closed", "* 0-8 * * 6-7 *"), ("closed", "* 17-23 * * 6-7 *"), ("closed", "* * 25 12 * *"), ("closed", "* * 4 7 * *")]
    # rules = [("open", "7:00 19:00 * * * *"), ("closed", "0:00 6:59 * * * *"), ("closed", "19:01 23:59 * * * *")]
    # exceptions = [("closed", "0:00 8:29 * * 6-7 *"), ("closed", "18:01 23:59 * * 6-7 *"), ("closed", "* * 25 12 * *"), ("closed", "* * 4 7 * *")]

    #Add Holidays
    for d in xrange(1, 31, 2):
        for m in xrange(1, 12):
            for y in xrange(2000, 2020):
                exceptions.append(("closed", "* * %s %s * %s" % (d, m, y)))

    print "Rules: {}".format(len(exceptions)+len(rules))
    start = time.time()

    cp = Scheduler(rules, exceptions)

    print "Time to build Scheduler: {:>19f}s".format(time.time() - start)

    start = time.time()
    i = 0
    for y in xrange(2014, 2015):
        for m in xrange(1, 13):
            for d in xrange(1, 28):
                for h in xrange(0, 24):
                    i += 1
                    day = datetime(y, m, d, h, 0)

    delta_dtos = time.time() - start

    start = time.time()
    i = 0
    for y in xrange(2014, 2015):
        for m in xrange(1, 13):
            for d in xrange(1, 28):
                for h in xrange(0, 24):
                        i += 1
                        cp.get_matching_rules(datetime(y, m, d, h, 0))

    delta_get_matching_rules = time.time() - start
    print "Time to run {} rule checks: {:>15f}s".format(i, delta_get_matching_rules)
    print "Time to build {} datetime objects: {:f}s".format(i, delta_dtos)
    print "Difference: {:>33f}s".format(delta_get_matching_rules - delta_dtos)
コード例 #4
0
ファイル: tests.py プロジェクト: pycronius/pycronius
    def test_holiday_rules(self):
        rules = [("open", "* 7-19 * * * *"), ("closed", "* 0-6 * * * *"), ("closed", "* 20-23 * * * *")]
        exceptions = [("closed", "* 0-8 * * 6-7 *"), ("closed", "* 17-23 * * 6-7 *"), ("closed", "* * 25 12 * *"), ("closed", "* * 4 7 * *")]

        for m in xrange(1, 12):
            exceptions.append(("closed", "* * 1 %s * 2014" % m))

        cp = Scheduler(rules, exceptions)

        # Weekday
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 19, 12, 0))[0], "open")

        # Weekday Night
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 19, 21, 30))[0], "closed")

        # Weekend
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 20, 8, 30))[0], "closed")

        #Weekend Night
        self.assertEqual(cp.get_matching_rules(datetime(2014, 12, 20, 17, 30))[0], "closed")

        # First of April (Tuesday)
        self.assertEqual(cp.get_matching_rules(datetime(2014, 4, 1, 12, 0))[0], "closed")