source: server/test/server/printer.py @ d518298

no-cups
Last change on this file since d518298 was d518298, checked in by Isaac Evans <ine@…>, 12 years ago

Corrected the testJobPlays test to spool the job

  • Property mode set to 100644
File size: 2.4 KB
Line 
1from gutenbach.server import GutenbachJob
2from gutenbach.server import GutenbachPrinter
3from gutenbach.server import errors
4
5from gutenbach.ipp import JobStates as States
6import unittest
7import tempfile
8import time
9
10def make_tempfile():
11    fh = tempfile.NamedTemporaryFile()
12    fh.write("test\n")
13    fh.seek(0)
14    return fh
15
16class TestGutenbachPrinter(unittest.TestCase):
17
18    testJobName = "unique_test_job"
19    testJobRequestingUserName = "unique_test_username"
20
21    def setUp(self):
22        self.printer = GutenbachPrinter("test")
23        self.printer.start()
24
25    def tearDown(self):
26        self.printer.running = False
27        self.printer.join()
28
29    # nb: this test assumes that pause_printer will block until it has paused.
30    def testPausePrinter(self):
31        self.printer.pause_printer()
32        self.assertEqual(self.printer.paused, True)
33
34        # check that no jobs are playing
35        for job_id, job in self.printer.jobs.items():
36            self.assertEqual(job.is_playing(), False)
37
38    def createTestJob(self):
39        return self.printer.create_job(self.testJobRequestingUserName, self.testJobName)
40 
41    def testCreateJob(self):
42        countBeforeAdded = len(self.printer.jobs)
43        job_id = self.createTestJob()
44        self.assertEqual(len(self.printer.jobs) - 1, countBeforeAdded)
45
46        queued_job = self.printer.get_job(job_id)
47        b = queued_job is not None
48        self.assertTrue(b)
49        self.assertEqual(queued_job.name, self.testJobName)
50        self.assertEqual(queued_job.creator, self.testJobRequestingUserName)
51        self.assertEqual(queued_job.state, States.HELD)
52
53    def testResumePrinter(self):
54        self.printer.resume_printer()
55        self.assertEqual(self.printer.paused, False)
56
57    def testJobPlays(self):
58        job_id = self.createTestJob()
59        fh = make_tempfile()
60        self.printer.get_job(job_id).spool(fh)
61        self.assertTrue(job_id in self.printer.pending_jobs)
62        self.assertFalse(job_id in self.printer.finished_jobs)
63        self.printer.complete_job()
64        while (self.printer.get_job(job_id).state == States.PENDING):
65            time.sleep(0.1)
66            continue
67       
68        non_pending_job = self.printer.get_job(job_id)
69        self.assertTrue(non_pending_job.state == States.COMPLETE)
70
71        self.assertFalse(job_id in self.printer.pending_jobs)
72        self.assertTrue(job_id in self.printer.finished_jobs)
73
74if __name__ == "__main__":
75    unittest.main()
Note: See TracBrowser for help on using the repository browser.