From 769faea3a4c9dfbf749137bef7cbbc240f05b56e Mon Sep 17 00:00:00 2001 From: IVAN ARIAS LEON Date: Thu, 21 Mar 2019 09:49:52 +0100 Subject: [PATCH 1/5] [FEATURE] Check GGR session Change-Id: Id90c1a4b0320944a866bc98b0399ca2ae618ae6a --- toolium/selenoid.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/toolium/selenoid.py b/toolium/selenoid.py index 17780711..5ccbb726 100644 --- a/toolium/selenoid.py +++ b/toolium/selenoid.py @@ -23,6 +23,7 @@ # constants STATUS_OK = 200 +STATUS_PORT = "8888" DOWNLOADS_PATH = u'downloads' MP4_EXTENSION = u'mp4' LOG_EXTENSION = u'log' @@ -66,6 +67,11 @@ def __init__(self, driver_wrapper, **kwargs): self.output_directory = kwargs.get('output_dir', DriverWrappersPool.output_directory) self.browser_remote = driver_wrapper.config.getboolean_optional('Server', 'enabled', False) self.enabled_logs = driver_wrapper.config.getboolean_optional('Server', 'logs_enabled', False) + self.browser = driver_wrapper.config.get('Driver', 'type') + + # rename the browse name to selenoid browser + if self.browser == "iexplore": + self.browser = "internet explorer" if self.browser_remote: self.session_id = driver_wrapper.driver.session_id @@ -127,6 +133,31 @@ def get_selenoid_info(self): self.driver_wrapper.logger.info('Selenoid host info: \n %s' % selenoid_info) return selenoid_info + def is_the_session_still_active(self): + """ + Is the GGR session still active? Associated to a browser and the sessionId + Example of GGR status: + {"browsers":{"MicrosoftEdge":{"latest":{}},"android":{"8.1":{}},"chrome":{"70.0":{},"latest":{"test_tef":{"count":1,"sessions":[{"caps":{"browserName":"chrome","enableVNC":true,"enableVideo":true,"platform":"ANY","screenResolution":"1280x1024x24","version":"latest","videoName":"selenoide952e551bb9395e16d060f28c54e5d31.mp4","videoScreenSize":"1280x1024"},"container":"8489205e28c9781472e99c3921a6240de3894a3603ed9e187ad6360b6b013b8b","containerInfo":{"id":"8489205e28c9781472e99c3921a6240de3894a3603ed9e187ad6360b6b013b8b","ip":"172.17.0.4"},"id":"1345506093dfed8dbcef610da476911a228ca315978e5464ae49fb1142bbc49b","screen":"1280x1024x24","vnc":true}]}}},"firefox":{"59.0":{},"63.0":{},"64.0":{},"latest":{}},"internet explorer":{"11":{}},"opera":{"56.0":{},"latest":{}},"safari":{"latest":{}}},"pending":0,"queued":0,"total":30,"used":1} + :return boolean + """ + server_url_splitted = self.server_url.split(":") + host_url = "{}:{}:{}:{}/status".format(server_url_splitted[0], server_url_splitted[1], server_url_splitted[2], STATUS_PORT) + + print "browser: %s" % self.browser + + try: + response = requests.get(host_url).json()["browsers"][self.browser] + except Exception as e: + self.driver_wrapper.logger.warn("the GGR status request has failed: \n %s" % response.content) + return None + for browser in response: + if response[browser] != {}: + sessions = response[browser][server_url_splitted[1].split("@")[0].replace("//", "")]["sessions"] + for pos in range(len(sessions)): + if sessions[pos]["id"] == self.session_id: + return True + return False + def download_session_video(self, scenario_name, timeout=5): """ download the execution video file if the scenario fails or the video is enabled, From bb216755e7b8fb0ded3d39957bfac0e0e4e70437 Mon Sep 17 00:00:00 2001 From: IVAN ARIAS LEON Date: Thu, 21 Mar 2019 10:22:17 +0100 Subject: [PATCH 2/5] [ADD] info in the changelog Change-Id: I57d0efe579ad2662bd41da0778481e119469cfb0 --- CHANGELOG.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0895db62..feeae6cd 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,6 +6,8 @@ v1.5.2 *Release date: WIP* +- Check if a GGR session (current) is still active + v1.5.1 ------ From a07aac3e449e01478ff1827cf45cd553f97c0e63 Mon Sep 17 00:00:00 2001 From: IVAN ARIAS LEON Date: Thu, 21 Mar 2019 12:08:04 +0100 Subject: [PATCH 3/5] [FIX] browser name Change-Id: Ia43712a7e7ec100d8e69b9a8719af955188900be --- toolium/selenoid.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/toolium/selenoid.py b/toolium/selenoid.py index 5ccbb726..6a279e6f 100644 --- a/toolium/selenoid.py +++ b/toolium/selenoid.py @@ -67,11 +67,7 @@ def __init__(self, driver_wrapper, **kwargs): self.output_directory = kwargs.get('output_dir', DriverWrappersPool.output_directory) self.browser_remote = driver_wrapper.config.getboolean_optional('Server', 'enabled', False) self.enabled_logs = driver_wrapper.config.getboolean_optional('Server', 'logs_enabled', False) - self.browser = driver_wrapper.config.get('Driver', 'type') - - # rename the browse name to selenoid browser - if self.browser == "iexplore": - self.browser = "internet explorer" + self.browser = driver_wrapper.driver.desired_capabilities['browserName'] if self.browser_remote: self.session_id = driver_wrapper.driver.session_id @@ -138,13 +134,11 @@ def is_the_session_still_active(self): Is the GGR session still active? Associated to a browser and the sessionId Example of GGR status: {"browsers":{"MicrosoftEdge":{"latest":{}},"android":{"8.1":{}},"chrome":{"70.0":{},"latest":{"test_tef":{"count":1,"sessions":[{"caps":{"browserName":"chrome","enableVNC":true,"enableVideo":true,"platform":"ANY","screenResolution":"1280x1024x24","version":"latest","videoName":"selenoide952e551bb9395e16d060f28c54e5d31.mp4","videoScreenSize":"1280x1024"},"container":"8489205e28c9781472e99c3921a6240de3894a3603ed9e187ad6360b6b013b8b","containerInfo":{"id":"8489205e28c9781472e99c3921a6240de3894a3603ed9e187ad6360b6b013b8b","ip":"172.17.0.4"},"id":"1345506093dfed8dbcef610da476911a228ca315978e5464ae49fb1142bbc49b","screen":"1280x1024x24","vnc":true}]}}},"firefox":{"59.0":{},"63.0":{},"64.0":{},"latest":{}},"internet explorer":{"11":{}},"opera":{"56.0":{},"latest":{}},"safari":{"latest":{}}},"pending":0,"queued":0,"total":30,"used":1} - :return boolean + :return boolean (although in case of error in the request will be returned None) """ server_url_splitted = self.server_url.split(":") host_url = "{}:{}:{}:{}/status".format(server_url_splitted[0], server_url_splitted[1], server_url_splitted[2], STATUS_PORT) - print "browser: %s" % self.browser - try: response = requests.get(host_url).json()["browsers"][self.browser] except Exception as e: From 128619adaa8f4e64ce5b81c5a503bb11621057cb Mon Sep 17 00:00:00 2001 From: IVAN ARIAS LEON Date: Thu, 21 Mar 2019 12:37:14 +0100 Subject: [PATCH 4/5] [FIX] Codacy/PR Quality Review Change-Id: I5c5e61bfdf0f7af59a71c9c8061d2029d0057767 --- toolium/selenoid.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/toolium/selenoid.py b/toolium/selenoid.py index 6a279e6f..4dd60703 100644 --- a/toolium/selenoid.py +++ b/toolium/selenoid.py @@ -142,13 +142,13 @@ def is_the_session_still_active(self): try: response = requests.get(host_url).json()["browsers"][self.browser] except Exception as e: - self.driver_wrapper.logger.warn("the GGR status request has failed: \n %s" % response.content) + self.driver_wrapper.logger.warn("the GGR status request has failed: \nResponse: %s \nError message: %s\n" % (response.content, e)) return None for browser in response: if response[browser] != {}: sessions = response[browser][server_url_splitted[1].split("@")[0].replace("//", "")]["sessions"] - for pos in range(len(sessions)): - if sessions[pos]["id"] == self.session_id: + for idx, session in enumerate(sessions): + if session["id"] == self.session_id: return True return False From 2dbfee27d0e832334c721a8a54794a5b2ea8db5d Mon Sep 17 00:00:00 2001 From: IVAN ARIAS LEON Date: Thu, 21 Mar 2019 12:55:41 +0100 Subject: [PATCH 5/5] [FIX] Codacy/PR Quality Review II Change-Id: I5d3117d4acb778e8736cddcfda76b71f8534ce01 --- toolium/selenoid.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolium/selenoid.py b/toolium/selenoid.py index 4dd60703..393b71e3 100644 --- a/toolium/selenoid.py +++ b/toolium/selenoid.py @@ -147,7 +147,7 @@ def is_the_session_still_active(self): for browser in response: if response[browser] != {}: sessions = response[browser][server_url_splitted[1].split("@")[0].replace("//", "")]["sessions"] - for idx, session in enumerate(sessions): + for session in sessions: if session["id"] == self.session_id: return True return False