diff --git a/tools/interop_tools.py b/tools/interop_tools.py index ba86fb795..3c05f1d31 100644 --- a/tools/interop_tools.py +++ b/tools/interop_tools.py @@ -3,8 +3,7 @@ interop_tools : Tools for Interop reboot - ./interop_tools --device "{\"Galaxy S9\":\"Android\"}" --project_name "" --job_name "" --job_number 1 --test_tag "" --test_case_name "" - ./interop_tools --device "{\"Galaxy S9\":\"Android\"}" --job_number 1 + ./interop_tools --all_devices "{\"Galaxy S9\":\"Android\",\"Galaxy S20\":\"Android\"}"" """ import sys @@ -15,7 +14,6 @@ if "libs" not in sys.path: import argparse import paramiko - import datetime import sys import os @@ -24,7 +22,7 @@ import warnings from _pytest.outcomes import xfail import urllib3 from perfecto.model.model import Job, Project -from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient,TestContext, TestResultFactory) +from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient, TestContext, TestResultFactory) import pytest import logging import re @@ -39,68 +37,55 @@ from android_lib import * from iOS_lib import * import json import ast + # device = iPhone-12, iPhone-11, iPhone-7 ,platform_name=iOS # device = Galaxy S20, Galaxy S10.*, Galaxy S9, Pixel 4, platform_name = Android class perfecto_tools: - def __init__(self, project_name="TIP-test-Execution", job_name="reboot-devices", job_number=1, - test_tag="TIP-PyTest-Execution", test_case_name="reboot", device="iPhone-12", - platform_name="iOS", browser_name="mobileOS"): + def __init__(self): warnings.simplefilter("ignore", ResourceWarning) urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - self.driver = None - self.reporting_client = None - self.projectname = project_name - self.projectversion = 1.0 - self.jobname = job_name - self.jobnumber = job_number - self.tags = test_tag - self.device = device # iPhone-11 - self.testCaseName = test_case_name - self.platform_name = platform_name # iOS - self.browser_name = browser_name + def get_capabilities(self, platform_name, device, browser_name): self.capabilities = { - 'platformName': self.platform_name, - 'model': self.device, - 'browserName': self.browser_name, + 'platformName': platform_name, + 'model': device, + 'browserName': browser_name, 'securityToken': 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJpYXQiOjE2MzI4Mzc2NDEsImp0aSI6IjAwZGRiYWY5LWQwYjMtNDRjNS1hYjVlLTkyNzFlNzc5ZGUzNiIsImlzcyI6Imh0dHBzOi8vYXV0aDIucGVyZmVjdG9tb2JpbGUuY29tL2F1dGgvcmVhbG1zL3RpcC1wZXJmZWN0b21vYmlsZS1jb20iLCJhdWQiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwic3ViIjoiODNkNjUxMWQtNTBmZS00ZWM5LThkNzAtYTA0ZjBkNTdiZDUyIiwidHlwIjoiT2ZmbGluZSIsImF6cCI6Im9mZmxpbmUtdG9rZW4tZ2VuZXJhdG9yIiwibm9uY2UiOiI2ZjE1YzYxNy01YTU5LTQyOWEtODc2Yi1jOTQxMTQ1ZDFkZTIiLCJzZXNzaW9uX3N0YXRlIjoiYmRjZTFmYTMtMjlkYi00MmFmLWI5YWMtYjZjZmJkMDEyOTFhIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.5R85_1R38ZFXv_wIjjCIsj8NJm1p66dCsLJI5DBEmks', 'useAppiumForWeb': 'false', 'useAppiumForHybrid': 'false', } - self.app_data = { - "webURL": "https://www.google.com", - "lblSearch": "//*[@class='gLFyf']", - "elelSearch": "(//*[@class='sbic sb43'])[1]", - "BtnRunSpeedTest": "//*[text()='RUN SPEED TEST']", - "bundleId-iOS-Settings": 'com.apple.Preferences', - "bundleId-iOS-Safari": 'com.apple.mobilesafari', - "downloadMbps": "//*[@id='knowledge-verticals-internetspeedtest__download']/P[@class='spiqle']", - "UploadMbps": "//*[@id='knowledge-verticals-internetspeedtest__upload']/P[@class='spiqle']", - # Android - "platformName-android": 'Android', - "appPackage-android": 'com.android.settings' - } + return self.capabilities - self.driver = webdriver.Remote( - "https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub", - self.capabilities - ) - self.device_model_name = self.driver.execute_script('mobile:handset:info', {'property': 'model'}) - self.perfecto_execution_context = PerfectoExecutionContext(self.driver, self.tags, Job(self.jobname, self.jobnumber), - Project(self.projectname, self.projectversion)) - self.reporting_client = PerfectoReportiumClient(self.perfecto_execution_context) - self.reporting_client.test_start(test_case_name, TestContext([], "Perforce")) + def get_driver(self, capabilities): + try: + self.driver = webdriver.Remote( + "https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub", + capabilities + ) + except: + exit("Unable to get driver") + + return self.driver def driver_wait(self, time): self.driver.implicitly_wait(time) - def reboot(self): + def reboot(self, driver, device_model_name): params = {} - print("rebooting..",self.device_model_name) - self.driver.execute_script('mobile:handset:reboot', params) - print("rebooting complete !!") + print("rebooting..", device_model_name) + driver.execute_script('mobile:handset:reboot', params) + print("rebooting complete for ",device_model_name) + + def close_driver(self, driver, device_model_name): + try: + driver.close() + print("Driver Closed for ",device_model_name) + except: + print("Unable to close driver") + finally: + driver.quit() def main(): @@ -110,51 +95,32 @@ def main(): epilog="About interop_tools.py", description="Tools for Interop") - parser.add_argument('--device', type=str, help=' --device : device you want to reboot', - default="{\"Galaxy S20\": 'Android', \"Galaxy S10.*\": 'Android', \"Galaxy S9\": 'Android', \"Pixel 4\": 'Android',\"iPhone-12\": 'iOS', \"iPhone-11\": 'iOS', \"iPhone-7\" : 'iOS'}") - - parser.add_argument('--project_name', type=str, help='', default="TIP-test-Execution") - parser.add_argument('--job_name', type=str, help='', default="reboot-devices") - parser.add_argument('--job_number', type=int, help='', default=1) - parser.add_argument('--test_tag', type=str, help='', default="TIP-PyTest-Execution") - parser.add_argument('--test_case_name', type=str, help='', default="reboot") + parser.add_argument('--all_devices', type=str, + help=' --all_devices : device you want to reboot ' + 'ex. --all_devices "{\"Galaxy S9\":\"Android\",\"Galaxy S20\":\"Android\"}" ', + default="{\"Galaxy S20\": 'Android', \"Galaxy S10.*\": 'Android', \"Galaxy S9\": 'Android', \"Pixel 4\": 'Android',\"iPhone-12\": 'iOS', \"iPhone-11\": 'iOS', \"iPhone-7\" : 'iOS', \"iPhone-XR\" : 'iOS'}") args = parser.parse_args() - devices = args.device - print(devices) - device = ast.literal_eval(devices) - job_name = args.job_name - job_number = args.job_number - test_tag = args.test_tag - test_case_name = args.test_case_name + all_devices = args.all_devices + all_devices = ast.literal_eval(all_devices) + perfecto_tool = perfecto_tools() - for device_name,platform in device.items(): + def rebool_all(platform, device_name): try: - perfecto_tool = perfecto_tools(device=device_name, - platform_name=platform, - job_name=job_name, - job_number=job_number, - test_tag=test_tag, - test_case_name=str(test_case_name+"-"+device_name)) - try: - perfecto_tool.reboot() - perfecto_tool.reporting_client.test_stop(TestResultFactory.create_success()) - except: - print("Reboot Failed !") - perfecto_tool.reporting_client.test_stop(TestResultFactory.create_failure("Failed!")) - finally: - try: - perfecto_tool.driver.close() - except: - print("not able to close the driver") - try: - perfecto_tool.driver.quit() - except: - print("not able to quit the driver") + capabilities = perfecto_tool.get_capabilities(platform_name=platform, device=device_name, + browser_name="mobileOS") + driver = perfecto_tool.get_driver(capabilities=capabilities) + perfecto_tool.reboot(driver=driver, device_model_name=device_name) except: - print("Failed to get Driver") + print("Reboot Failed !") + finally: + print("Closing driver for: ", device_name) + perfecto_tool.close_driver(driver=driver,device_model_name=device_name) + for device_name, platform in all_devices.items(): + rebool_all(platform=platform,device_name=device_name) + print(device_name) if __name__ == '__main__': main()