def run_parallel_tests(url_client, servers_details, parallel_tests_lists, name_of_browser, version_of_browser, max_thread_count): """ Function used to run tests in parallel :param url_client: :param servers_details: :param parallel_tests_lists: :param name_of_browser: :param version_of_browser: :param max_thread_count: """ driver_object = None try: # Thread list threads_list = [] # Create thread for each server for ser in servers_details: # Logic to add new threads while True: # If active thread count <= max_thread_count, add new thread if threading.activeCount() <= max_thread_count: # Get remote web-driver instance at server level driver_object = \ test_utils.get_remote_webdriver(hub_url, name_of_browser, version_of_browser, ser['name']) # Launch client url in browser test_utils.launch_url_in_browser(driver_object, url_client) # Add name for thread thread_name = "parallel_tests" + ser['name'] # Start thread t = threading.Thread(target=execute_test, name=thread_name, args=(parallel_tests_lists, ser, driver_object)) threads_list.append(t) t.start() time.sleep(3) break # else sleep for 10 seconds else: time.sleep(10) # Start threads in parallel for t in threads_list: t.join() except Exception as exc: # Print exception stack trace traceback.print_exc(file=sys.stderr) print(str(exc)) # Clean driver object created if driver_object is not None: driver_object.quit()
def run_sequential_tests(url_client, servers_details, sequential_tests_lists, name_of_browser, version_of_browser): """ Function is used to execute tests that needs to be run in sequential manner. :param url_client: :param servers_details: :param sequential_tests_lists: :param name_of_browser: :param version_of_browser: :return: """ driver_object = None try: # Get remote web-driver instance driver_object = test_utils.get_remote_webdriver(hub_url, name_of_browser, version_of_browser, "Sequential_Tests") # Launch client url in browser test_utils.launch_url_in_browser(driver_object, url_client) # Add name for thread thread_name = "sequential_tests" # Start thread for ser in servers_details: t = threading.Thread(target=execute_test, name=thread_name, args=(sequential_tests_lists, ser, driver_object)) t.start() t.join() except Exception as exc: # Print exception stack trace traceback.print_exc(file=sys.stderr) print(str(exc)) finally: # Clean driver object created test_utils.quit_webdriver(driver_object)