Beispiel #1
0
    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)
Beispiel #2
0
    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")
Beispiel #3
0
    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)
Beispiel #4
0
    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")
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
    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)
Beispiel #8
0
    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)
Beispiel #9
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)
Beispiel #10
0
    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)), [])
Beispiel #11
0
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))
Beispiel #12
0
    def test_context(self):

        with asl.aslclient("ident", "facility", 0) as cli:
            self.assertIsInstance(cli, asl.aslclient)

        self.assertRaises(ValueError, cli.set_filter, 0)
Beispiel #13
0
    def test_no_redirection(self):
        cli = asl.aslclient("ident", "facility", 0)
        self.assertIsInstance(cli, asl.aslclient)

        self.assertFalse(hasattr(cli, "log_descriptor"))
Beispiel #14
0
 def __init__(self, ident=None, level=asl.ASL_STRING_INFO):
     logging.Handler.__init__(self)
     self._asl = asl.aslclient(ident, level, 0)