Loading load_check.py +76 −59 Original line number Diff line number Diff line Loading @@ -38,12 +38,14 @@ class MultipleTest(unittest.TestCase): print(f"Invalid input format: {e}. Please use 'type / username, password / duplicate_count'. Exiting.") exit(1) print("[선택(디폴트:일반접속)]테스트 유형 : 일반 접속(1), 일시 접속(2), 부하 화면 접근(3)") self.function_to_execute = int(input().strip()) # Initialize a list to hold driver instances for each thread self.drivers = [] self.verificationErrors = [] self.accept_next_alert = True # # ... (rest of your _interact_with_time_filters, _login_action, etc. methods remain unchanged) Loading Loading @@ -268,27 +270,75 @@ class MultipleTest(unittest.TestCase): driver.find_element_by_xpath( u"(.//*[normalize-space(text()) and normalize-space(.)='수집/판단 기준'])[1]/following::li[1]").click() def _execute_single_action_and_measure(self, driver, action_func, driver_instance_number, action_name, *args, **kwargs): """Executes a single action and measures its duration.""" start_time = time.time() try: action_func(driver, *args, **kwargs) except Exception as e: print(f"Session {driver_instance_number}, Action {action_name} failed: {e}") finally: end_time = time.time() print(f"Session {driver_instance_number}, User: {self.username}: {action_name} executed in {end_time - start_time:.2f} seconds") def _run_driver1_actions(self, driver, address, id, pw, account_type): wait = WebDriverWait(driver, 10) instance_number = driver.instance_number # Assuming instance_number is set on driver in _run_single_driver_actions self._login_action(driver, address, id, pw, wait) self._dashboard_actions(driver) self._topology_map_actions(driver) self._performance_operation_actions(driver) self._log_analysis_actions(driver) self._event_status_actions(driver) self._work_management_actions(driver, wait) self._execute_single_action_and_measure(driver, self._login_action, instance_number, "_login_action", address, id, pw, wait) self._execute_single_action_and_measure(driver, self._dashboard_actions, instance_number, "_dashboard_actions") self._execute_single_action_and_measure(driver, self._topology_map_actions, instance_number, "_topology_map_actions") self._execute_single_action_and_measure(driver, self._performance_operation_actions, instance_number, "_performance_operation_actions") self._execute_single_action_and_measure(driver, self._log_analysis_actions, instance_number, "_log_analysis_actions") self._execute_single_action_and_measure(driver, self._event_status_actions, instance_number, "_event_status_actions") self._execute_single_action_and_measure(driver, self._work_management_actions, instance_number, "_work_management_actions", wait) # Only run admin actions if the account_type is 1 (admin) if account_type == 1: # self._admin_settings_actions(driver) print("Admin actions executed.") self._execute_single_action_and_measure(driver, self._admin_settings_actions, instance_number, "_admin_settings_actions") elif account_type == 2: print("Manager account - no specific admin actions.") print(f"Session {instance_number}, User: {id}: Manager account - no specific admin actions.") elif account_type == 3: print("User account - no specific admin actions.") print(f"Session {instance_number}, User: {id}: User account - no specific admin actions.") time.sleep(1) def _run_driver2_actions(self, driver, address, id, pw, account_type): wait = WebDriverWait(driver, 10) instance_number = driver.instance_number self._execute_single_action_and_measure(driver, self._login_action, instance_number, "_login_action", address, id, pw, wait) self._execute_single_action_and_measure(driver, self._dashboard_actions, instance_number, "_dashboard_actions") self._execute_single_action_and_measure(driver, self._topology_map_actions, instance_number, "_topology_map_actions") self._execute_single_action_and_measure(driver, self._event_status_actions, instance_number, "_event_status_actions") if account_type == 1: print(f"Session {instance_number}, User: {id}: Admin actions not defined for this driver function.") elif account_type == 2: print(f"Session {instance_number}, User: {id}: Manager account - no specific admin actions.") elif account_type == 3: print(f"Session {instance_number}, User: {id}: User account - no specific admin actions.") def _run_driver3_actions(self, driver, address, id, pw, account_type): wait = WebDriverWait(driver, 10) instance_number = driver.instance_number self._execute_single_action_and_measure(driver, self._login_action, instance_number, "_login_action", address, id, pw, wait) self._execute_single_action_and_measure(driver, self._dashboard_actions, instance_number, "_dashboard_actions (1st)") self._execute_single_action_and_measure(driver, self._dashboard_actions, instance_number, "_dashboard_actions (2nd)") self._execute_single_action_and_measure(driver, self._performance_operation_actions, instance_number, "_performance_operation_actions (1st)") self._execute_single_action_and_measure(driver, self._performance_operation_actions, instance_number, "_performance_operation_actions (2nd)") self._execute_single_action_and_measure(driver, self._log_analysis_actions, instance_number, "_log_analysis_actions (1st)") self._execute_single_action_and_measure(driver, self._log_analysis_actions, instance_number, "_log_analysis_actions (2nd)") if account_type == 1: print(f"Session {instance_number}, User: {id}: Admin actions not defined for this driver function.") elif account_type == 2: print(f"Session {instance_number}, User: {id}: Manager account - no specific admin actions.") elif account_type == 3: print(f"Session {instance_number}, User: {id}: User account - no specific admin actions.") def _run_single_driver_actions(self, address, id, pw, account_type, driver_instance_number): Loading @@ -313,60 +363,27 @@ class MultipleTest(unittest.TestCase): options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(executable_path=self.webdriver_path, options=options) driver.instance_number = driver_instance_number # Attach instance number to driver for logging driver.implicitly_wait(10) # Common implicit wait for this driver self.drivers.append(driver) # Add this driver to the list for tearDown wait = WebDriverWait(driver, 10) print(f"Starting actions for session {driver_instance_number} with user: {id}") start_time = time.time() self._login_action(driver, address, id, pw, wait) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _login_action executed in {end_time - start_time:.2f} seconds") if self.function_to_execute == 1: self._execute_and_measure_actions(driver, address, id, pw, account_type, driver_instance_number, self._run_driver1_actions) elif self.function_to_execute == 2: self._execute_and_measure_actions(driver, address, id, pw, account_type, driver_instance_number, self._run_driver2_actions) elif self.function_to_execute == 3: self._execute_and_measure_actions(driver, address, id, pw, account_type, driver_instance_number, self._run_driver3_actions) def _execute_and_measure_actions(self, driver, address, id, pw, account_type, driver_instance_number, main_driver_func): start_time = time.time() self._dashboard_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _dashboard_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._topology_map_actions(driver) main_driver_func(driver, address, id, pw, account_type) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _topology_map_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._performance_operation_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _performance_operation_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._log_analysis_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _log_analysis_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._event_status_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _event_status_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._work_management_actions(driver, wait) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _work_management_actions executed in {end_time - start_time:.2f} seconds") if account_type == 1: start_time = time.time() self._admin_settings_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _admin_settings_actions executed in {end_time - start_time:.2f} seconds") print(f"Admin actions executed for session {driver_instance_number}.") elif account_type == 2: print(f"Manager account actions for session {driver_instance_number}.") elif account_type == 3: print(f"User account actions for session {driver_instance_number}.") print(f"Total time for Session {driver_instance_number}, User: {id} ({main_driver_func.__name__}): {end_time - start_time:.2f} seconds") time.sleep(1) time.sleep(1) # Keep the browser open for a short duration after actions def test_multiple(self): address = self.DC_address Loading @@ -377,7 +394,7 @@ class MultipleTest(unittest.TestCase): threads = [] for i in range(duplicate_count): # Pass unique driver instance to each thread # Pass unique driver instance to each thread, and the chosen function thread = threading.Thread(target=self._run_single_driver_actions, args=(address, username, password, account_type, i + 1)) threads.append(thread) thread.start() Loading Loading
load_check.py +76 −59 Original line number Diff line number Diff line Loading @@ -38,12 +38,14 @@ class MultipleTest(unittest.TestCase): print(f"Invalid input format: {e}. Please use 'type / username, password / duplicate_count'. Exiting.") exit(1) print("[선택(디폴트:일반접속)]테스트 유형 : 일반 접속(1), 일시 접속(2), 부하 화면 접근(3)") self.function_to_execute = int(input().strip()) # Initialize a list to hold driver instances for each thread self.drivers = [] self.verificationErrors = [] self.accept_next_alert = True # # ... (rest of your _interact_with_time_filters, _login_action, etc. methods remain unchanged) Loading Loading @@ -268,27 +270,75 @@ class MultipleTest(unittest.TestCase): driver.find_element_by_xpath( u"(.//*[normalize-space(text()) and normalize-space(.)='수집/판단 기준'])[1]/following::li[1]").click() def _execute_single_action_and_measure(self, driver, action_func, driver_instance_number, action_name, *args, **kwargs): """Executes a single action and measures its duration.""" start_time = time.time() try: action_func(driver, *args, **kwargs) except Exception as e: print(f"Session {driver_instance_number}, Action {action_name} failed: {e}") finally: end_time = time.time() print(f"Session {driver_instance_number}, User: {self.username}: {action_name} executed in {end_time - start_time:.2f} seconds") def _run_driver1_actions(self, driver, address, id, pw, account_type): wait = WebDriverWait(driver, 10) instance_number = driver.instance_number # Assuming instance_number is set on driver in _run_single_driver_actions self._login_action(driver, address, id, pw, wait) self._dashboard_actions(driver) self._topology_map_actions(driver) self._performance_operation_actions(driver) self._log_analysis_actions(driver) self._event_status_actions(driver) self._work_management_actions(driver, wait) self._execute_single_action_and_measure(driver, self._login_action, instance_number, "_login_action", address, id, pw, wait) self._execute_single_action_and_measure(driver, self._dashboard_actions, instance_number, "_dashboard_actions") self._execute_single_action_and_measure(driver, self._topology_map_actions, instance_number, "_topology_map_actions") self._execute_single_action_and_measure(driver, self._performance_operation_actions, instance_number, "_performance_operation_actions") self._execute_single_action_and_measure(driver, self._log_analysis_actions, instance_number, "_log_analysis_actions") self._execute_single_action_and_measure(driver, self._event_status_actions, instance_number, "_event_status_actions") self._execute_single_action_and_measure(driver, self._work_management_actions, instance_number, "_work_management_actions", wait) # Only run admin actions if the account_type is 1 (admin) if account_type == 1: # self._admin_settings_actions(driver) print("Admin actions executed.") self._execute_single_action_and_measure(driver, self._admin_settings_actions, instance_number, "_admin_settings_actions") elif account_type == 2: print("Manager account - no specific admin actions.") print(f"Session {instance_number}, User: {id}: Manager account - no specific admin actions.") elif account_type == 3: print("User account - no specific admin actions.") print(f"Session {instance_number}, User: {id}: User account - no specific admin actions.") time.sleep(1) def _run_driver2_actions(self, driver, address, id, pw, account_type): wait = WebDriverWait(driver, 10) instance_number = driver.instance_number self._execute_single_action_and_measure(driver, self._login_action, instance_number, "_login_action", address, id, pw, wait) self._execute_single_action_and_measure(driver, self._dashboard_actions, instance_number, "_dashboard_actions") self._execute_single_action_and_measure(driver, self._topology_map_actions, instance_number, "_topology_map_actions") self._execute_single_action_and_measure(driver, self._event_status_actions, instance_number, "_event_status_actions") if account_type == 1: print(f"Session {instance_number}, User: {id}: Admin actions not defined for this driver function.") elif account_type == 2: print(f"Session {instance_number}, User: {id}: Manager account - no specific admin actions.") elif account_type == 3: print(f"Session {instance_number}, User: {id}: User account - no specific admin actions.") def _run_driver3_actions(self, driver, address, id, pw, account_type): wait = WebDriverWait(driver, 10) instance_number = driver.instance_number self._execute_single_action_and_measure(driver, self._login_action, instance_number, "_login_action", address, id, pw, wait) self._execute_single_action_and_measure(driver, self._dashboard_actions, instance_number, "_dashboard_actions (1st)") self._execute_single_action_and_measure(driver, self._dashboard_actions, instance_number, "_dashboard_actions (2nd)") self._execute_single_action_and_measure(driver, self._performance_operation_actions, instance_number, "_performance_operation_actions (1st)") self._execute_single_action_and_measure(driver, self._performance_operation_actions, instance_number, "_performance_operation_actions (2nd)") self._execute_single_action_and_measure(driver, self._log_analysis_actions, instance_number, "_log_analysis_actions (1st)") self._execute_single_action_and_measure(driver, self._log_analysis_actions, instance_number, "_log_analysis_actions (2nd)") if account_type == 1: print(f"Session {instance_number}, User: {id}: Admin actions not defined for this driver function.") elif account_type == 2: print(f"Session {instance_number}, User: {id}: Manager account - no specific admin actions.") elif account_type == 3: print(f"Session {instance_number}, User: {id}: User account - no specific admin actions.") def _run_single_driver_actions(self, address, id, pw, account_type, driver_instance_number): Loading @@ -313,60 +363,27 @@ class MultipleTest(unittest.TestCase): options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(executable_path=self.webdriver_path, options=options) driver.instance_number = driver_instance_number # Attach instance number to driver for logging driver.implicitly_wait(10) # Common implicit wait for this driver self.drivers.append(driver) # Add this driver to the list for tearDown wait = WebDriverWait(driver, 10) print(f"Starting actions for session {driver_instance_number} with user: {id}") start_time = time.time() self._login_action(driver, address, id, pw, wait) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _login_action executed in {end_time - start_time:.2f} seconds") if self.function_to_execute == 1: self._execute_and_measure_actions(driver, address, id, pw, account_type, driver_instance_number, self._run_driver1_actions) elif self.function_to_execute == 2: self._execute_and_measure_actions(driver, address, id, pw, account_type, driver_instance_number, self._run_driver2_actions) elif self.function_to_execute == 3: self._execute_and_measure_actions(driver, address, id, pw, account_type, driver_instance_number, self._run_driver3_actions) def _execute_and_measure_actions(self, driver, address, id, pw, account_type, driver_instance_number, main_driver_func): start_time = time.time() self._dashboard_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _dashboard_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._topology_map_actions(driver) main_driver_func(driver, address, id, pw, account_type) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _topology_map_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._performance_operation_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _performance_operation_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._log_analysis_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _log_analysis_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._event_status_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _event_status_actions executed in {end_time - start_time:.2f} seconds") start_time = time.time() self._work_management_actions(driver, wait) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _work_management_actions executed in {end_time - start_time:.2f} seconds") if account_type == 1: start_time = time.time() self._admin_settings_actions(driver) end_time = time.time() print(f"Session {driver_instance_number}, User: {id}: _admin_settings_actions executed in {end_time - start_time:.2f} seconds") print(f"Admin actions executed for session {driver_instance_number}.") elif account_type == 2: print(f"Manager account actions for session {driver_instance_number}.") elif account_type == 3: print(f"User account actions for session {driver_instance_number}.") print(f"Total time for Session {driver_instance_number}, User: {id} ({main_driver_func.__name__}): {end_time - start_time:.2f} seconds") time.sleep(1) time.sleep(1) # Keep the browser open for a short duration after actions def test_multiple(self): address = self.DC_address Loading @@ -377,7 +394,7 @@ class MultipleTest(unittest.TestCase): threads = [] for i in range(duplicate_count): # Pass unique driver instance to each thread # Pass unique driver instance to each thread, and the chosen function thread = threading.Thread(target=self._run_single_driver_actions, args=(address, username, password, account_type, i + 1)) threads.append(thread) thread.start() Loading