diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/logging')
| -rw-r--r-- | packages/Python/lldbsuite/test/logging/Makefile | 5 | ||||
| -rw-r--r-- | packages/Python/lldbsuite/test/logging/TestLogging.py | 107 | ||||
| -rw-r--r-- | packages/Python/lldbsuite/test/logging/main.cpp | 62 | 
3 files changed, 174 insertions, 0 deletions
| diff --git a/packages/Python/lldbsuite/test/logging/Makefile b/packages/Python/lldbsuite/test/logging/Makefile new file mode 100644 index 0000000000000..d4bc9c6890432 --- /dev/null +++ b/packages/Python/lldbsuite/test/logging/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules diff --git a/packages/Python/lldbsuite/test/logging/TestLogging.py b/packages/Python/lldbsuite/test/logging/TestLogging.py new file mode 100644 index 0000000000000..f8558a758ee9d --- /dev/null +++ b/packages/Python/lldbsuite/test/logging/TestLogging.py @@ -0,0 +1,107 @@ +""" +Test lldb logging.  This test just makes sure logging doesn't crash, and produces some output. +""" + +from __future__ import print_function + + + +import os, time, string +import lldb +from lldbsuite.test.lldbtest import * + +class LogTestCase(TestBase): + +    mydir = TestBase.compute_mydir(__file__) +    append_log_file = "lldb-commands-log-append.txt" +    truncate_log_file = "lldb-commands-log-truncate.txt" + +    @classmethod +    def classCleanup(cls): +        """Cleanup the test byproducts.""" +        cls.RemoveTempFile(cls.truncate_log_file) +        cls.RemoveTempFile(cls.append_log_file) + +    def test (self): +        self.build() +        if self.debug_info == "dsym": +            self.command_log_tests ("dsym") +        else: +            self.command_log_tests ("dwarf") + +    def command_log_tests (self, type): +        exe = os.path.join (os.getcwd(), "a.out") +        self.expect("file " + exe, +                    patterns = [ "Current executable set to .*a.out" ]) + +        log_file = os.path.join (os.getcwd(), "lldb-commands-log-%s-%s-%s.txt" % (type, +                                                                                  os.path.basename(self.getCompiler()), +                                                                                  self.getArchitecture())) + +        if (os.path.exists (log_file)): +            os.remove (log_file) + +        # By default, Debugger::EnableLog() will set log options to +        # PREPEND_THREAD_NAME + OPTION_THREADSAFE. We don't want the +        # threadnames here, so we enable just threadsafe (-t). +        self.runCmd ("log enable -t -f '%s' lldb commands" % (log_file)) +         +        self.runCmd ("command alias bp breakpoint") +                      +        self.runCmd ("bp set -n main") + +        self.runCmd ("bp l") + +        self.runCmd("log disable lldb") + +        self.assertTrue (os.path.isfile (log_file)) + +        f = open (log_file) +        log_lines = f.readlines() +        f.close () +        os.remove (log_file) + +        self.assertTrue(log_lines > 0, "Something was written to the log file.") + +    # Check that lldb truncates its log files +    @no_debug_info_test +    def test_log_truncate (self): +        if (os.path.exists (self.truncate_log_file)): +            os.remove (self.truncate_log_file) + +        # put something in our log file +        with open(self.truncate_log_file, "w") as f: +            for i in range(1, 1000): +                f.write("bacon\n") + +        self.runCmd ("log enable -t -f '%s' lldb commands" % (self.truncate_log_file)) +        self.runCmd ("help log") +        self.runCmd ("log disable lldb") + +        self.assertTrue (os.path.isfile (self.truncate_log_file)) +        with open(self.truncate_log_file, "r") as f: +            contents = f.read () + +        # check that it got removed +        self.assertTrue(string.find(contents, "bacon") == -1) + +    # Check that lldb can append to a log file +    @no_debug_info_test +    def test_log_append (self): +        if (os.path.exists (self.append_log_file)): +            os.remove (self.append_log_file) + +        # put something in our log file +        with open(self.append_log_file, "w") as f: +            f.write("bacon\n") + +        self.runCmd ("log enable -t -a -f '%s' lldb commands" % (self.append_log_file)) +        self.runCmd ("help log") +        self.runCmd ("log disable lldb") + +        self.assertTrue (os.path.isfile (self.append_log_file)) +        with open(self.append_log_file, "r") as f: +            contents = f.read () + +        # check that it is still there +        self.assertTrue(string.find(contents, "bacon") == 0) diff --git a/packages/Python/lldbsuite/test/logging/main.cpp b/packages/Python/lldbsuite/test/logging/main.cpp new file mode 100644 index 0000000000000..7af4e3de2d0bd --- /dev/null +++ b/packages/Python/lldbsuite/test/logging/main.cpp @@ -0,0 +1,62 @@ +//===-- main.cpp ------------------------------------------------*- C++ -*-===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include <cstdlib> +#include <string> +#include <fstream> +#include <iostream> + +int +product (int x, int y) +{ +    int result = x * y; +    return result; +} + +int +sum (int a, int b) +{ +    int result = a + b; +    return result; +} + +int +strange_max (int m, int n) +{ +    if (m > n) +        return m; +    else if (n > m) +        return n; +    else +        return 0; +} + +int +foo (int i, int j) +{ +    if (strange_max (i, j) == i) +        return product (i, j); +    else if (strange_max  (i, j) == j) +        return sum (i, j); +    else +        return product (sum (i, i), sum (j, j)); +} + +int +main(int argc, char const *argv[]) +{ + +    int array[3]; + +    array[0] = foo (1238, 78392); +    array[1] = foo (379265, 23674); +    array[2] = foo (872934, 234); + +    return 0; +} | 
