mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-11-03 20:38:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			127 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/python3.9
 | 
						|
"""
 | 
						|
 | 
						|
    interop_tools : Tools for Interop
 | 
						|
                reboot
 | 
						|
    ./interop_tools --all_devices "{\"Galaxy S9\":\"Android\",\"Galaxy S20\":\"Android\"}""
 | 
						|
"""
 | 
						|
 | 
						|
import sys
 | 
						|
 | 
						|
if "libs" not in sys.path:
 | 
						|
    sys.path.append("../libs/perfecto_interop/")
 | 
						|
 | 
						|
import argparse
 | 
						|
import paramiko
 | 
						|
 | 
						|
import datetime
 | 
						|
import sys
 | 
						|
import os
 | 
						|
import time
 | 
						|
import warnings
 | 
						|
from _pytest.outcomes import xfail
 | 
						|
import urllib3
 | 
						|
from perfecto.model.model import Job, Project
 | 
						|
from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient, TestContext, TestResultFactory)
 | 
						|
import pytest
 | 
						|
import logging
 | 
						|
import re
 | 
						|
from selenium.common.exceptions import NoSuchElementException, TimeoutException
 | 
						|
from selenium.webdriver.common.by import By
 | 
						|
from selenium.webdriver.support.ui import WebDriverWait
 | 
						|
from appium.webdriver.common.mobileby import MobileBy
 | 
						|
from selenium.webdriver.support import expected_conditions as EC
 | 
						|
from appium import webdriver
 | 
						|
 | 
						|
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):
 | 
						|
        warnings.simplefilter("ignore", ResourceWarning)
 | 
						|
        urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
 | 
						|
 | 
						|
    def get_capabilities(self, platform_name, device, browser_name):
 | 
						|
        self.capabilities = {
 | 
						|
            'platformName': platform_name,
 | 
						|
            'model': device,
 | 
						|
            'browserName': browser_name,
 | 
						|
            'securityToken': 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJpYXQiOjE2MzI4Mzc2NDEsImp0aSI6IjAwZGRiYWY5LWQwYjMtNDRjNS1hYjVlLTkyNzFlNzc5ZGUzNiIsImlzcyI6Imh0dHBzOi8vYXV0aDIucGVyZmVjdG9tb2JpbGUuY29tL2F1dGgvcmVhbG1zL3RpcC1wZXJmZWN0b21vYmlsZS1jb20iLCJhdWQiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwic3ViIjoiODNkNjUxMWQtNTBmZS00ZWM5LThkNzAtYTA0ZjBkNTdiZDUyIiwidHlwIjoiT2ZmbGluZSIsImF6cCI6Im9mZmxpbmUtdG9rZW4tZ2VuZXJhdG9yIiwibm9uY2UiOiI2ZjE1YzYxNy01YTU5LTQyOWEtODc2Yi1jOTQxMTQ1ZDFkZTIiLCJzZXNzaW9uX3N0YXRlIjoiYmRjZTFmYTMtMjlkYi00MmFmLWI5YWMtYjZjZmJkMDEyOTFhIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.5R85_1R38ZFXv_wIjjCIsj8NJm1p66dCsLJI5DBEmks',
 | 
						|
            'useAppiumForWeb': 'false',
 | 
						|
            'useAppiumForHybrid': 'false',
 | 
						|
        }
 | 
						|
        return self.capabilities
 | 
						|
 | 
						|
    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, driver, device_model_name):
 | 
						|
        params = {}
 | 
						|
        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():
 | 
						|
    parser = argparse.ArgumentParser(prog="interop_tools",
 | 
						|
                                     formatter_class=argparse.RawTextHelpFormatter,
 | 
						|
                                     allow_abbrev=True,
 | 
						|
                                     epilog="About interop_tools.py",
 | 
						|
                                     description="Tools for Interop")
 | 
						|
 | 
						|
    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()
 | 
						|
    all_devices = args.all_devices
 | 
						|
    all_devices = ast.literal_eval(all_devices)
 | 
						|
 | 
						|
    perfecto_tool = perfecto_tools()
 | 
						|
 | 
						|
    def rebool_all(platform, device_name):
 | 
						|
        try:
 | 
						|
            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("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()
 |