def test_redirection(self): cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) fd = os.open("/dev/null", os.O_WRONLY) cli.log_descriptor(None, asl.ASL_LEVEL_NOTICE, fd, asl.ASL_LOG_DESCRIPTOR_WRITE) self.assertRaises(ValueError, cli.log_descriptor, None, asl.ASL_LEVEL_NOTICE, fd, 44) self.assertRaises( TypeError, cli.log_descriptor, "u", asl.ASL_LEVEL_NOTICE, fd, asl.ASL_LOG_DESCRIPTOR_WRITE, ) # cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) fd = os.open("/dev/null", os.O_WRONLY) msg = asl.aslmsg(asl.ASL_TYPE_MSG) msg[asl.ASL_KEY_FACILITY] = "com.apple.console" cli.log_descriptor(msg, asl.ASL_LEVEL_NOTICE, fd, asl.ASL_LOG_DESCRIPTOR_WRITE)
def test_no_bytes(self): self.assertRaises(TypeError, asl.aslclient, "ident", b"faclity", 0) self.assertRaises(TypeError, asl.aslclient, b"ident", "faclity", 0) cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) self.assertRaises(TypeError, cli.log, None, asl.ASL_LEVEL_NOTICE, b"hello world")
def test_basic_creation(self): cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) self.assertRaises(TypeError, asl.aslclient, "ident") self.assertRaises(TypeError, asl.aslclient, "ident", "faclity", "option") self.assertRaises(TypeError, asl.aslclient, "ident", "faclity", 0, "extra") self.assertRaises(TypeError, asl.aslclient, "ident", 42, 0) self.assertRaises(TypeError, asl.aslclient, 32, "facility", 42)
def test_send(self): cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) msg = asl.aslmsg(asl.ASL_TYPE_MSG) msg[asl.ASL_KEY_MSG] = "Breaking attempt!" cli.send(msg) self.assertRaises(TypeError, cli.send, None) self.assertRaises(TypeError, cli.send, "hello")
def do_sendlog(opts): if not opts.keys: print("No message arguments specified", file=sys.stderr) sys.exit(1) cli = asl.aslclient(ident=None, facility="user", options=0) msg = asl.aslmsg(asl.ASL_TYPE_MSG) for k, v in opts.keys: msg[k] = v cli.send(msg)
def do_consolelog(options): ident = options.ident message = " ".join(options.message) level = options.level cli = asl.aslclient(ident=ident, facility="com.apple.console", options=0) msg = asl.aslmsg(asl.ASL_TYPE_MSG) msg[asl.ASL_KEY_FACILITY] = "com.apple.console" msg[asl.ASL_KEY_LEVEL] = level msg[asl.ASL_KEY_READ_UID] = str(os.getuid()) cli.log(msg, asl.STRING2LEVEL[level], message)
def test_add_remove(self): self.assertRaises(OSError, os.fstat, 99) cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) cli.add_log_file(99) cli.remove_log_file(99) # self.assertRaises(OSError, cli.add_log_file, 99) # self.assertRaises(OSError, cli.remove_log_file, 99) cli.add_log_file(2) cli.remove_log_file(2) cli.remove_log_file(2)
def test_filter(self): cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) f = cli.set_filter(250) self.assertIsInstance(f, int) f = cli.set_filter(f) self.assertEqual(f, 250) self.assertRaises(TypeError, cli.set_filter, "debug") cli.close() self.assertRaises(ValueError, cli.set_filter, 0)
def test_log(self): cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) # Can't easily verify... cli.log(None, asl.ASL_LEVEL_NOTICE, "hello world") self.assertRaises(TypeError, cli.log, "hello", asl.ASL_LEVEL_NOTICE, "hello world") msg = asl.aslmsg(asl.ASL_TYPE_MSG) cli.log(msg, asl.ASL_LEVEL_NOTICE, "hello world") self.assertRaises(TypeError, cli.log, msg, asl.ASL_LEVEL_NOTICE, "hello world %s", "extra") self.assertRaises(TypeError, cli.log, msg, asl.ASL_LEVEL_NOTICE)
def test_search(self): cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) msg = asl.aslmsg(asl.ASL_TYPE_QUERY) msg.set_query(asl.ASL_KEY_FACILITY, "com.apple.console", asl.ASL_QUERY_OP_EQUAL) info = None for info in cli.search(msg): self.assertIsInstance(info, asl.aslmsg) self.assertIsNot(info, None) msg = asl.aslmsg(asl.ASL_TYPE_QUERY) msg.set_query(asl.ASL_KEY_FACILITY, "com.apple.nosuchapp", asl.ASL_QUERY_OP_EQUAL) self.assertEqual(list(cli.search(msg)), []) msg = asl.aslmsg(asl.ASL_TYPE_QUERY) msg.set_query(asl.ASL_KEY_FACILITY, "com.apple.console", asl.ASL_QUERY_OP_EQUAL) self.assertNotEqual(list(cli.search(msg)), [])
def do_query(opts): cli = asl.aslclient(ident=None, facility="user", options=0) msg = asl.aslmsg(asl.ASL_TYPE_QUERY) if opts.show_console: msg.set_query(asl.ASL_KEY_FACILITY, "com.apple.console", asl.ASL_QUERY_OP_EQUAL) # Other search parameters if opts.query: valid = True for key, op, value in opts.query: try: msg.set_query(key, value, OP_MAP[op]) except KeyError: valid = False print("Invalid query operation:", op, file=sys.stderr) if not valid: sys.exit(1) if opts.exists: for key in opts.exists: msg.set_query(key, "", asl.ASL_QUERY_OP_TRUE) for record in cli.search(msg): if opts.format is None: for key in sorted(record.keys()): print("{} {}".format(key, record[key])) print() else: fmt_arg: collections.defaultdict = collections.defaultdict(str) fmt_arg.update({k: record[k] for k in record.keys()}) print(opts.format.format_map(fmt_arg))
def test_context(self): with asl.aslclient("ident", "facility", 0) as cli: self.assertIsInstance(cli, asl.aslclient) self.assertRaises(ValueError, cli.set_filter, 0)
def test_no_redirection(self): cli = asl.aslclient("ident", "facility", 0) self.assertIsInstance(cli, asl.aslclient) self.assertFalse(hasattr(cli, "log_descriptor"))
def __init__(self, ident=None, level=asl.ASL_STRING_INFO): logging.Handler.__init__(self) self._asl = asl.aslclient(ident, level, 0)