HEX
Server: Apache
System: Linux dinesh8189 5.15.98-grsec-sharedvalley-2.lc.el8.x86_64 #1 SMP Thu Mar 9 09:07:30 -03 2023 x86_64
User: cgmgerenciamento1 (814285)
PHP: 8.1.26
Disabled: apache_child_terminate,dl,escapeshellarg,escapeshellcmd,exec,link,mail,openlog,passthru,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php_check_syntax,php_strip_whitespace,popen,proc_close,proc_open,shell_exec,symlink,system
Upload Files
File: //lib/python3.6/site-packages/tracer/tests/test_processes.py
from .__meta__ import *
from tracer.resources.processes import Processes, Process, ProcessWrapper
from tracer.resources.collections import ProcessesCollection
import os
import subprocess


class TestProcesses(unittest.TestCase):

	@unittest.skipIf(True, "@TODO Create Mock for Processes class")
	def test_children(self):
		process = Processes.all()[0]
		children = process.children()
		self.assertIsInstance(children, ProcessesCollection)

		for child in children:
			self.assertIsInstance(child, Process)

	@unittest.skipIf(True, "@TODO Create Mock for Processes class")
	def test_unique_process(self):
		process = Process(os.getpid())
		parent = Process(os.getppid())

		self.assertIs(process, Process(os.getpid()))
		self.assertIs(parent, process.parent())
		self.assertIn(process, parent.children())

		Process.reset_cache()
		process2 = Process(os.getpid())
		self.assertEqual(process, process2)
		self.assertIsNot(process, process2)

	@unittest.skipIf(True, "@TODO Create Mock for Processes class")
	def test_process_caching(self):
		process = Process(os.getpid())

		# Populate the cache entry for children
		process.children()

		child = subprocess.Popen(os.sys.executable, stdin=subprocess.PIPE)
		self.assertEqual(0, len(process.children()))

		process.rebuild_cache()
		self.assertEqual(1, len(process.children()))

		child.terminate()

	def test_name_sshd(self):
		p1 = ProcessMock()
		p1.data = {"name": "sshd",
			   "exe": "/usr/sbin/sshd",
			   "cmdline": ["/usr/sbin/sshd", "-D", "foo", "bar"]}
		assert p1.name() == "sshd"

		p2 = ProcessMock()
		p2.data = {"name": "sshd",
			   "exe": "/usr/sbin/sshd",
			   "cmdline": ["some", "thing", "and", "arguments", "idk", "what"]}
		assert p2.name() == "ssh-thing-session"

		# I don't know what case this is in a real life but see #129 and #125
		p3 = ProcessMock()
		p3.data = {"name": "sshd", "exe": "/usr/sbin/sshd",
			   "cmdline": ["withoutparams"]}
		assert p3.name() == "sshd"


class ProcessMock(ProcessWrapper):
	def __init__(self):
		self.data = {}

	def _attr(self, name):
		return self.data[name]