Skip to content

Commit 11118be

Browse files
committed
adding tests
1 parent 55fc542 commit 11118be

File tree

1 file changed

+44
-10
lines changed

1 file changed

+44
-10
lines changed

superlance/tests/crashmail_test.py

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import unittest
22
from superlance.compat import StringIO
3+
import re
34

45
class CrashMailTests(unittest.TestCase):
56
def _getTargetClass(self):
@@ -29,7 +30,7 @@ def _makeOnePopulated(self, programs, any, response=None):
2930
return prog
3031

3132
def test_runforever_not_process_state_exited(self):
32-
programs = {'foo':0, 'bar':0, 'baz_01':0 }
33+
programs = []
3334
any = None
3435
prog = self._makeOnePopulated(programs, any)
3536
prog.stdin.write('eventname:PROCESS_STATE len:0\n')
@@ -38,7 +39,7 @@ def test_runforever_not_process_state_exited(self):
3839
self.assertEqual(prog.stderr.getvalue(), 'non-exited event\n')
3940

4041
def test_runforever_expected_exit(self):
41-
programs = ['foo']
42+
programs = [re.compile('foo')]
4243
any = None
4344
prog = self._makeOnePopulated(programs, any)
4445
payload=('expected:1 processname:foo groupname:bar '
@@ -51,7 +52,7 @@ def test_runforever_expected_exit(self):
5152
self.assertEqual(prog.stderr.getvalue(), 'expected exit\n')
5253

5354
def test_runforever_unexpected_exit(self):
54-
programs = ['foo']
55+
programs = [re.compile('bar:foo')]
5556
any = None
5657
prog = self._makeOnePopulated(programs, any)
5758
payload=('expected:0 processname:foo groupname:bar '
@@ -63,20 +64,53 @@ def test_runforever_unexpected_exit(self):
6364
prog.runforever(test=True)
6465
output = prog.stderr.getvalue()
6566
lines = output.split('\n')
66-
self.assertEqual(lines[0], 'unexpected exit, mailing')
67-
self.assertEqual(lines[1], 'Mailed:')
68-
self.assertEqual(lines[2], '')
69-
self.assertEqual(lines[3], 'To: [email protected]')
70-
self.assertTrue('Subject: [foo]: foo crashed at' in lines[4])
71-
self.assertEqual(lines[5], '')
67+
68+
self.assertEqual(lines[1], 'unexpected exit, mailing')
69+
self.assertEqual(lines[2], 'Mailed:')
70+
self.assertEqual(lines[3], '')
71+
self.assertEqual(lines[4], 'To: [email protected]')
72+
self.assertTrue('Subject: [foo]: foo crashed at' in lines[5])
73+
self.assertEqual(lines[6], '')
7274
self.assertTrue(
73-
'Process foo in group bar exited unexpectedly' in lines[6])
75+
'Process foo in group bar exited unexpectedly' in lines[7])
7476
import os
7577
f = open(os.path.join(self.tempdir, 'email.log'), 'r')
7678
mail = f.read()
7779
f.close()
7880
self.assertTrue(
7981
'Process foo in group bar exited unexpectedly' in mail)
8082

83+
def test_runforever_unexpected_exit_group(self):
84+
programs = [re.compile('bar:*')]
85+
any = None
86+
prog = self._makeOnePopulated(programs, any)
87+
payload=('expected:0 processname:foo groupname:bar '
88+
'from_state:RUNNING pid:1')
89+
prog.stdin.write(
90+
'eventname:PROCESS_STATE_EXITED len:%s\n' % len(payload))
91+
prog.stdin.write(payload)
92+
prog.stdin.seek(0)
93+
prog.runforever(test=True)
94+
output = prog.stderr.getvalue()
95+
lines = output.split('\n')
96+
97+
self.assertEqual(lines[1], 'unexpected exit, mailing')
98+
99+
def test_runforever_unexpected_exit_ignored(self):
100+
programs = [re.compile('notfoo')]
101+
any = None
102+
prog = self._makeOnePopulated(programs, any)
103+
payload=('expected:0 processname:foo groupname:bar '
104+
'from_state:RUNNING pid:1')
105+
prog.stdin.write(
106+
'eventname:PROCESS_STATE_EXITED len:%s\n' % len(payload))
107+
prog.stdin.write(payload)
108+
prog.stdin.seek(0)
109+
prog.runforever(test=True)
110+
output = prog.stderr.getvalue()
111+
lines = output.split('\n')
112+
113+
self.assertTrue('ignoring [foo]: foo crashed ' in lines[1])
114+
81115
if __name__ == '__main__':
82116
unittest.main()

0 commit comments

Comments
 (0)