Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Side by Side Diff: third_party/buildbot_7_12/buildbot/test/test_maildir.py

Issue 12207158: Bye bye buildbot 0.7.12. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # -*- test-case-name: buildbot.test.test_maildir -*-
2
3 from twisted.trial import unittest
4 import os, shutil
5 from buildbot.changes.mail import FCMaildirSource
6 from twisted.internet import defer, reactor, task
7 from twisted.python import util, log
8
9 class TimeOutError(Exception):
10 """The message were not received in a timely fashion"""
11
12 class MaildirTest(unittest.TestCase):
13 SECONDS_PER_MESSAGE = 1.0
14
15 def setUp(self):
16 log.msg("creating empty maildir")
17 self.maildir = "test-maildir"
18 if os.path.isdir(self.maildir):
19 shutil.rmtree(self.maildir)
20 log.msg("removing stale maildir")
21 os.mkdir(self.maildir)
22 os.mkdir(os.path.join(self.maildir, "cur"))
23 os.mkdir(os.path.join(self.maildir, "new"))
24 os.mkdir(os.path.join(self.maildir, "tmp"))
25 self.source = None
26
27 def tearDown(self):
28 log.msg("removing old maildir")
29 shutil.rmtree(self.maildir)
30 if self.source:
31 return self.source.stopService()
32
33 def addChange(self, c):
34 # NOTE: this assumes every message results in a Change, which isn't
35 # true for msg8-prefix
36 log.msg("got change")
37 self.changes.append(c)
38
39 def deliverMail(self, msg):
40 log.msg("delivering", msg)
41 newdir = os.path.join(self.maildir, "new")
42 # to do this right, use safecat
43 shutil.copy(msg, newdir)
44
45 def poll(self, changes, count, d):
46 if len(changes) == count:
47 d.callback("passed")
48
49 def testMaildir(self):
50 self.changes = []
51 s = self.source = FCMaildirSource(self.maildir)
52 s.parent = self
53 s.startService()
54 testfiles_dir = util.sibpath(__file__, "mail")
55 testfiles = [msg for msg in os.listdir(testfiles_dir)
56 if msg.startswith("freshcvs")]
57 assert testfiles
58 testfiles.sort()
59 count = len(testfiles)
60 d = defer.Deferred()
61
62 i = 1
63 for i in range(count):
64 msg = testfiles[i]
65 reactor.callLater(self.SECONDS_PER_MESSAGE*i, self.deliverMail,
66 os.path.join(testfiles_dir, msg))
67 self.loop = task.LoopingCall(self.poll, self.changes, count, d)
68 self.loop.start(0.1)
69 t = reactor.callLater(self.SECONDS_PER_MESSAGE*count + 15,
70 d.errback, TimeOutError)
71 # TODO: verify the messages, should use code from test_mailparse but
72 # I'm not sure how to factor the verification routines out in a
73 # useful fashion
74
75 #for i in range(count):
76 # msg, check = test_messages[i]
77 # check(self, self.changes[i])
78
79 def _shutdown(res):
80 if t.active():
81 t.cancel()
82 self.loop.stop()
83 return res
84 d.addBoth(_shutdown)
85
86 return d
87
88 # TODO: it would be nice to set this timeout after counting the number of
89 # messages in buildbot/test/mail/msg*, but I suspect trial wants to have
90 # this number before the method starts, and maybe even before setUp()
91 testMaildir.timeout = SECONDS_PER_MESSAGE*9 + 15
92
OLDNEW
« no previous file with comments | « third_party/buildbot_7_12/buildbot/test/test_locks.py ('k') | third_party/buildbot_7_12/buildbot/test/test_mailparse.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698