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 0000000..d4bc9c6 --- /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 0000000..f8558a7 --- /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 0000000..7af4e3d --- /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; +} |