- standalone reboot script

- template for standalone scripts

Signed-off-by: Sushant Bawiskar <sushant.bawiskar@candelatech.com>
This commit is contained in:
sushant
2021-09-28 17:50:22 +05:30
committed by Sushant Bawiskar
parent 480fe19cd4
commit 8319567964

159
tools/interop_tools.py Normal file
View File

@@ -0,0 +1,159 @@
#!/usr/bin/python3.9
"""
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
"""
import sys
if "libs" not in sys.path:
sys.path.append("../libs/perfecto_libs/")
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
# 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"):
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
self.capabilities = {
'platformName': self.platform_name,
'model': self.device,
'browserName': self.browser_name,
'securityToken': 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJpYXQiOjE2MjE4NjgyOTksImp0aSI6IjIzNGFiOTM1LWIxYjQtNGZiOC1hZmJiLTM0OTQwNzU5MjIwMyIsImlzcyI6Imh0dHBzOi8vYXV0aDIucGVyZmVjdG9tb2JpbGUuY29tL2F1dGgvcmVhbG1zL3RpcC1wZXJmZWN0b21vYmlsZS1jb20iLCJhdWQiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwic3ViIjoiN2I1MzBhZTAtODgxOC00N2I5LTgzZjMtN2ZhMGZiMGRkYjRlIiwidHlwIjoiT2ZmbGluZSIsImF6cCI6Im9mZmxpbmUtdG9rZW4tZ2VuZXJhdG9yIiwibm9uY2UiOiI1MzI2NDQxNS0xYTQwLTQ1ZTctOGVkMi1hOTNiYWZmZWNjYjIiLCJzZXNzaW9uX3N0YXRlIjoiY2YzY2JlOGMtY2Y5OC00NzRlLWJmODctYTIxNzU0NzVhM2EzIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.4a4v6AKxmY95Zb-l84K_Od49WPikwOHP7ryctfmnn-w',
'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'
}
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 driver_wait(self, time):
self.driver.implicitly_wait(time)
def reboot(self):
params = {}
print("rebooting..",self.device_model_name)
self.driver.execute_script('mobile:handset:reboot', params)
print("rebooting complete !!")
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('--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")
args = parser.parse_args()
print(args.device)
device = json.loads(args.device)
job_name = args.job_name
job_number = args.job_number
test_tag = args.test_tag
test_case_name = args.test_case_name
for device_name,platform in device.items():
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")
except:
print("Failed to get Driver")
if __name__ == '__main__':
main()