Skip to content

Commit 3f6221b

Browse files
committed
Reintegrate test_speed
Related to #139.
1 parent ae81e2b commit 3f6221b

File tree

2 files changed

+121
-225
lines changed

2 files changed

+121
-225
lines changed
+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
from __future__ import absolute_import, print_function
4+
5+
try:
6+
import unittest2 as unittest
7+
except ImportError:
8+
import unittest
9+
10+
import os
11+
import sys
12+
from datetime import datetime
13+
from timeit import Timer
14+
15+
import pytz
16+
17+
from croniter import cron_m, croniter
18+
from croniter.tests import base
19+
20+
21+
class CroniterSpeedTest(base.TestCase):
22+
def run_long_test(self, iterations=1):
23+
dt = datetime(2010, 1, 23, 12, 18)
24+
itr = croniter("*/1 * * * *", dt)
25+
for i in range(iterations): # ~ 58
26+
itr.get_next()
27+
28+
itr = croniter("*/5 * * * *", dt)
29+
for i in range(iterations):
30+
itr.get_next()
31+
32+
dt = datetime(2010, 1, 24, 12, 2)
33+
itr = croniter("0 */3 * * *", dt)
34+
for i in range(iterations):
35+
itr.get_next()
36+
37+
dt = datetime(2010, 2, 24, 12, 9)
38+
itr = croniter("0 0 */3 * *", dt)
39+
for i in range(iterations):
40+
itr.get_next(datetime)
41+
42+
# test leap year
43+
dt = datetime(1996, 2, 27)
44+
itr = croniter("0 0 * * *", dt)
45+
for i in range(iterations):
46+
itr.get_next(datetime)
47+
48+
dt2 = datetime(2000, 2, 27)
49+
itr2 = croniter("0 0 * * *", dt2)
50+
for i in range(iterations):
51+
itr2.get_next(datetime)
52+
53+
dt = datetime(2010, 2, 25)
54+
itr = croniter("0 0 * * sat", dt)
55+
for i in range(iterations):
56+
itr.get_next(datetime)
57+
58+
dt = datetime(2010, 1, 25)
59+
itr = croniter("0 0 1 * wed", dt)
60+
for i in range(iterations):
61+
itr.get_next(datetime)
62+
63+
dt = datetime(2010, 1, 25)
64+
itr = croniter("0 0 1 * *", dt)
65+
for i in range(iterations):
66+
itr.get_next()
67+
68+
dt = datetime(2010, 8, 25, 15, 56)
69+
itr = croniter("*/1 * * * *", dt)
70+
for i in range(iterations):
71+
itr.get_prev(datetime)
72+
73+
dt = datetime(2010, 8, 25, 15, 0)
74+
itr = croniter("*/1 * * * *", dt)
75+
for i in range(iterations):
76+
itr.get_prev(datetime)
77+
78+
dt = datetime(2010, 8, 25, 0, 0)
79+
itr = croniter("*/1 * * * *", dt)
80+
for i in range(iterations):
81+
itr.get_prev(datetime)
82+
83+
dt = datetime(2010, 8, 25, 15, 56)
84+
itr = croniter("0 0 * * sat,sun", dt)
85+
for i in range(iterations):
86+
itr.get_prev(datetime)
87+
88+
dt = datetime(2010, 2, 25)
89+
itr = croniter("0 0 * * 7", dt)
90+
for i in range(iterations):
91+
itr.get_prev(datetime)
92+
93+
# dst regression test
94+
tz = pytz.timezone("Europe/Bucharest")
95+
offsets = set()
96+
dst_cron = "15 0,3 * 3 *"
97+
dst_iters = int(2 * 31 * (iterations / 40))
98+
dt = datetime(2010, 1, 25, tzinfo=tz)
99+
itr = croniter(dst_cron, dt)
100+
for i in range(dst_iters):
101+
d = itr.get_next(datetime)
102+
offsets.add(d.utcoffset())
103+
itr = croniter(dst_cron, dt)
104+
for i in range(dst_iters):
105+
d = itr.get_prev(datetime)
106+
offsets.add(d.utcoffset())
107+
108+
def test_not_long_time(self):
109+
if int(sys.version[0]) < 3:
110+
return
111+
iterations = int(os.environ.get("CRONITER_TEST_SPEED_ITERATIONS", "40"))
112+
globs = globals()
113+
globs.update(locals())
114+
t = Timer("self.run_long_test(iterations)", globals=globs)
115+
limit = 80
116+
ret = t.timeit(limit)
117+
self.assertTrue(ret < limit, "Regression in croniter speed detected ({0} {1}).".format(ret, limit))
118+
119+
120+
if __name__ == "__main__":
121+
unittest.main()

src/croniter/tests/test_speed.py

-225
This file was deleted.

0 commit comments

Comments
 (0)