This revision was automatically updated to reflect the committed changes. Closed by commit rL365813: [lldb] Make TestDeletedExecutable more reliable (authored by teemperor, committed by ). Herald added a project: LLVM. Herald added a subscriber: llvm-commits.
Changed prior to commit: https://reviews.llvm.org/D64546?vs=209231&id=209300#toc Repository: rL LLVM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D64546/new/ https://reviews.llvm.org/D64546 Files: lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp @@ -1,9 +1,15 @@ #include <chrono> +#include <fstream> #include <thread> -int main(int argc, char const *argv[]) -{ +int main(int argc, char const *argv[]) { lldb_enable_attach(); - std::this_thread::sleep_for(std::chrono::seconds(30)); + { + // Create file to signal that this process has started up. + std::ofstream f; + f.open(argv[1]); + } + + std::this_thread::sleep_for(std::chrono::seconds(60)); } Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py @@ -1,5 +1,5 @@ """ -Test process attach/resume. +Test process attach when executable was deleted. """ from __future__ import print_function @@ -24,8 +24,22 @@ self.build() exe = self.getBuildArtifact("a.out") - popen = self.spawnSubprocess(exe) + # Use a file as a synchronization point between test and inferior. + pid_file_path = lldbutil.append_to_process_working_directory(self, + "token_pid_%d" % (int(os.getpid()))) + self.addTearDownHook( + lambda: self.run_platform_command( + "rm %s" % + (pid_file_path))) + + # Spawn a new process + popen = self.spawnSubprocess(exe, [pid_file_path]) self.addTearDownHook(self.cleanupSubprocesses) + + # Wait until process has fully started up. + pid = lldbutil.wait_for_file_on_target(self, pid_file_path) + + # Now we can safely remove the executable and test if we can attach. os.remove(exe) self.runCmd("process attach -p " + str(popen.pid))
Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp @@ -1,9 +1,15 @@ #include <chrono> +#include <fstream> #include <thread> -int main(int argc, char const *argv[]) -{ +int main(int argc, char const *argv[]) { lldb_enable_attach(); - std::this_thread::sleep_for(std::chrono::seconds(30)); + { + // Create file to signal that this process has started up. + std::ofstream f; + f.open(argv[1]); + } + + std::this_thread::sleep_for(std::chrono::seconds(60)); } Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py @@ -1,5 +1,5 @@ """ -Test process attach/resume. +Test process attach when executable was deleted. """ from __future__ import print_function @@ -24,8 +24,22 @@ self.build() exe = self.getBuildArtifact("a.out") - popen = self.spawnSubprocess(exe) + # Use a file as a synchronization point between test and inferior. + pid_file_path = lldbutil.append_to_process_working_directory(self, + "token_pid_%d" % (int(os.getpid()))) + self.addTearDownHook( + lambda: self.run_platform_command( + "rm %s" % + (pid_file_path))) + + # Spawn a new process + popen = self.spawnSubprocess(exe, [pid_file_path]) self.addTearDownHook(self.cleanupSubprocesses) + + # Wait until process has fully started up. + pid = lldbutil.wait_for_file_on_target(self, pid_file_path) + + # Now we can safely remove the executable and test if we can attach. os.remove(exe) self.runCmd("process attach -p " + str(popen.pid))
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits