Skip to main content

SoloX - Real-time collection tool for Android/iOS performance data.

Project description

English | 中文

SoloX

solox preview

🔎Preview

SoloX - Real-time collection tool for Android/iOS performance data.

We are committed to solving inefficient, cumbersome test execution, and our goal is Simple Test In SoloX!

📦Requirements

  • Install Python 3.10 + Download
  • Install adb and configure environment variables (SoloX's adb may not necessarily fit your computer) Download

💡 Python 3.6 ~ 3.9 , please download a version of solox lower than 2.5.4.

💡 If Windows users need to test ios, install and start Itunes. Documentation

📥Installation

default

pip install -U solox 

mirrors

pip install -i  https://mirrors.ustc.edu.cn/pypi/web/simple -U solox

💡 If your network is unable to download through [pip install -U solox], please try using mirrors to download, but the download of SoloX may not be the latest version.

🚀Startup SoloX

default

python -m solox

customize

python -m solox --host={ip} --port={port}

🏴󠁣󠁩󠁣󠁭󠁿Collect in python

from solox.public.apm import APM
from solox.public.common import Devices

# solox version >= 2.1.2

d = Devices()
pids = d.getPid(deviceId='ca6bd5a5', pkgName='com.bilibili.app.in') # for android

apm = APM(pkgName='com.bilibili.app.in',platform='Android', deviceId='ca6bd5a5', 
          surfaceview=True, noLog=True, pid=None)
# apm = APM(pkgName='com.bilibili.app.in', platform='iOS') only supports one device
# surfaceview: False = gfxinfo (Developer - GPU rendering mode - adb shell dumpsys gfxinfo)
# noLog : False (Save test data to log file)

# ************* Collect a performance parameter ************* #
cpu = apm.collectCpu() # %
memory = apm.collectMemory() # MB
flow = apm.collectFlow(wifi=True) # KB
fps = apm.collectFps() # HZ
battery = apm.collectBattery() # level:% temperature:°C current:mA voltage:mV power:w
gpu = apm.collectGpu() # % only supports ios

# ************* Collect all performance parameter ************* #
apm = APM(pkgName='com.playit.videoplayer',platform='Android', deviceId='BRNUT21B15044184', 
          surfaceview=True, noLog=False, pid=None, duration=20) # duration : second
# apm = APM(pkgName='com.bilibili.app.in', platform='iOS',  noLog=False, duration=20)    
result = apm.collectAll()
[I 230504 10:40:30 common:179] Clean up useless files ...
[I 230504 10:40:30 common:185] Clean up useless files success
[I 230504 10:40:38 apm:362] cpu: {'appCpuRate': 15.15, 'systemCpuRate': 98.18}
[I 230504 10:40:38 apm:387] battery: {'level': 61, 'temperature': 35.0}
[I 230504 10:40:38 apm:412] fps: {'fps': 57, 'jank': 0}
[I 230504 10:40:38 apm:401] network: {'upFlow': 0.0, 'downFlow': 0.0}
[I 230504 10:40:38 apm:373] memory: {'totalPass': 170.05, 'nativePass': 57.72, 'dalvikPass': 10.63}
[I 230504 10:40:39 apm:387] battery: {'level': 61, 'temperature': 35.0}
[I 230504 10:40:39 apm:412] fps: {'fps': 50, 'jank': 3}
[I 230504 10:40:39 apm:401] network: {'upFlow': 1.0, 'downFlow': 0.65}
[I 230504 10:40:40 apm:362] cpu: {'appCpuRate': 9.56, 'systemCpuRate': 98.68}
[I 230504 10:40:40 apm:373] memory: {'totalPass': 262.14, 'nativePass': 64.87, 'dalvikPass': 13.16}
[I 230504 10:40:40 apm:412] fps: {'fps': 50, 'jank': 3}
[I 230504 10:40:40 apm:387] battery: {'level': 61, 'temperature': 35.0}
[I 230504 10:40:41 apm:401] network: {'upFlow': 0.0, 'downFlow': 0.22}
[I 230504 10:40:41 apm:373] memory: {'totalPass': 262.34, 'nativePass': 65.58, 'dalvikPass': 13.32}
[I 230504 10:40:43 apm:401] network: {'upFlow': 0.0, 'downFlow': 0.0}
[I 230504 10:40:43 apm:362] cpu: {'appCpuRate': 4.7, 'systemCpuRate': 99.68}
[I 230504 10:40:44 apm:387] battery: {'level': 61, 'temperature': 35.0}
[I 230504 10:40:44 apm:412] fps: {'fps': 50, 'jank': 3}
[I 230504 10:40:44 apm:401] network: {'upFlow': 0.0, 'downFlow': 0.22}
[I 230504 10:40:44 apm:373] memory: {'totalPass': 261.59, 'nativePass': 64.71, 'dalvikPass': 13.46}
[I 230504 10:40:45 apm:362] cpu: {'appCpuRate': 4.75, 'systemCpuRate': 101.1}
[I 230504 10:40:45 apm:387] battery: {'level': 61, 'temperature': 35.0}
[I 230504 10:40:45 apm:412] fps: {'fps': 50, 'jank': 3}
[I 230504 10:40:45 apm:401] network: {'upFlow': 0.07, 'downFlow': 0.0}
[I 230504 10:40:46 apm:373] memory: {'totalPass': 261.62, 'nativePass': 64.7, 'dalvikPass': 13.49}
[I 230504 10:40:52 common:300] Generating test results ...
[I 230504 10:40:52 common:320] Generating test results success: D:\github\SoloX\report\apm_2023-05-04-10-40-52
[I 230504 10:40:52 common:219] Generating HTML ...
[I 230504 10:40:52 common:237] Generating HTML success : D:\github\SoloX\report\apm_2023-05-04-10-40-52\report.html

🏴󠁣󠁩󠁣󠁭󠁿Collect in API

Start the service in the background

# solox version >= 2.1.5

macOS/Linux: nohup python3 -m solox &
Windows: start /min python3 -m solox &

Request apm data from api

Android: http://{ip}:{port}/apm/collect?platform=Android&deviceid=ca6bd5a5&pkgname=com.bilibili.app.in&target=cpu
iOS: http://{ip}:{port}/apm/collect?platform=iOS&pkgname=com.bilibili.app.in&target=cpu

target in ['cpu','memory','network','fps','battery','gpu']

🔥Features

  • No ROOT/Jailbreak: No need of Root for Android devices, Jailbreak for iOS devices. Efficiently solving the test and analysis challenges in Android & iOS performance.
  • Data Integrality: We provide the data about CPU, GPU, Memory, Battery, Network,FPS, Jank, etc., which you may easy to get.
  • Beautiful Report: A beautiful and detailed report analysis, where to store, visualize, edit, manage, and download all the test cases collected with SoloX no matter where you are or when is it.
  • Useful Monitoring Settings: Support setting alarm values, collecting duration, and accessing mobile devices on other PC machines during the monitoring process.
  • PK Model: Supports simultaneous comparative testing of two mobile devices.
    • 🌱2-devices: test the same app on two different phones.
    • 🌱2-apps: test two different apps on two phones with the same configuration.

Browser

Chrome

Terminal

💕Thanks

Project details


Release history Release notifications | RSS feed

This version

2.6.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

solox-2.6.1.tar.gz (5.5 MB view hashes)

Uploaded Source

Built Distribution

solox-2.6.1-py3-none-any.whl (5.6 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page