class TestSmsHandle(unittest.TestCase): def setUp(self): self.gsm = MyGSM() self.sms = MyGSM0705() self.daemon = DAEMON(self.gsm) def test_sms_punch(self): where, who, when, what = (1, u'10086', u'2014-10-21 15:10:18+08:00', u'punch,10012345,password') cmd_stat = CmdStat('punch') cmd_stat.add_cmd_result(u'failed.') sms_handle = SmsHandle(self.daemon, self.sms, CmdProc(cmd_stat.cmd)) sms_handle.execute(where, who, when, what) self.daemon.run(1) self.assertEqual(u'punch:10012345,password', ';'.join(map(':'.join, cmd_stat.stat))) self.assertEqual([1], self.sms.list_delete) self.assertEqual(u'10086,punch->failed.', ';'.join(map(','.join, self.sms.list_send)))
def start_daemon(dev): port = apply(create_port, dev) gsm = GSM(port) sms = GSM0705(gsm) daemon = DAEMON(gsm, []) sms_handle = SmsHandle(daemon, sms, CmdProc(CMD)) daemon.add_event_handle(sms.GSM0705_CMTI_HANDLE(sms_handle.execute)) daemon.add_command(sms.delete_all, PRIV_M) daemon.run()
class TestEngine(unittest.TestCase): def setUp(self): self.record_event = [] self.port = MockPort(self) self.gsm = GSM(self.port) self.daemon = DAEMON(self.gsm, [self.record,]) def record(self, line): def execute(): self.record_event.append(line) return [execute,] def test_event(self): self.port.mock_put_read('+CMTI: "SM",1,"MMS PUSH"\r\n') self.port.mock_put_read('') self.port.mock_put_read('') self.daemon.run(1) output = self.record_event self.assertEqual(['+CMTI: "SM",1,"MMS PUSH"\r\n',], self.record_event) def test_events(self): events = [ '+CMTI: "SM",1,"MMS PUSH"\r\n', '+CMTI: "SM",2,"MMS PUSH"\r\n', '+CMTI: "SM",3,"MMS PUSH"\r\n'] for event in events: self.port.mock_put_read(event) self.port.mock_put_read('') self.port.mock_put_read('') self.daemon.run(10) self.assertEqual(events, self.record_event) def test_exception_log(self): memory_handler = logging.handlers.MemoryHandler(100) log = logging.getLogger('gsm.daemon') log.addHandler(memory_handler) def div_0(): 1 / 0 self.daemon.add_command(div_0, 0) self.daemon.run(0) log.removeHandler(memory_handler) log_string = '\n'.join(map(lambda log: '\n'.join(log.getMessage().split('\n')[:2]), memory_handler.buffer)) self.assertEqual(log_string, 'Execute div_0 error.\nTraceback (most recent call last):')
def setUp(self): self.record_event = [] self.port = MockPort(self) self.gsm = GSM(self.port) self.daemon = DAEMON(self.gsm, [self.record,])
def setUp(self): self.gsm = MyGSM() self.sms = MyGSM0705() self.daemon = DAEMON(self.gsm)