Skip to content

Commit

Permalink
change logzero to loguru in part of code, add test in workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
codeskyblue committed Jun 30, 2022
1 parent b6f0e63 commit cc87b39
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 23 deletions.
6 changes: 5 additions & 1 deletion .github/workflows/publish-to-test-pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@ jobs:
python-version: 3.7
- name: Install pypa/build
run: >-
python3 -m pip install wheel
python3 -m pip install wheel pytest
- name: Test
run: >-
python3 -m pip install -e .
python3 -m pytest -v tests/
- name: Build targz and wheel
run: >-
python3 setup.py sdist bdist_wheel
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,7 @@ memory {'pid': 21243, 'timestamp': 1620725873348, 'value': 40.54920196533203}

```bash
# 功耗采集
# 每一秒打印一行JSON,至于里面什么单位不太懂
$ tidevice energy com.example.demo
{"energy.overhead": 490.0, "kIDEGaugeSecondsSinceInitialQueryKey": 1209, "energy.version": 1, "energy.gpu.cost": 0, "energy.cpu.cost": 62.15080582703523, "energy.networkning.overhead": 500, "energy.appstate.cost": 8, "energy.location.overhead": 0, "energy.thermalstate.cost": 0, "energy.networking.cost": 501.341030606293, "energy.cost": 767.8212481980341, "energy.display.cost": 214.3294117647059, "energy.cpu.overhead": 0, "energy.location.cost": 0, "energy.gpu.overhead": 0, "energy.appstate.overhead": 0, "energy.display.overhead": 0, "energy.inducedthermalstate.cost": -1}
```
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ simple_tornado>=0.2.2
retry
simplejson
tabulate
loguru
3 changes: 3 additions & 0 deletions tidevice/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import requests
from logzero import setup_logger
from tabulate import tabulate
from loguru import logger as ulogger

from ._device import Device
from ._imagemounter import cache_developer_image
Expand All @@ -40,6 +41,8 @@
logger = logging.getLogger(PROGRAM_NAME)


ulogger.disable(PROGRAM_NAME)

def _complete_udid(udid: Optional[str] = None) -> str:
infos = um.device_list()
# Find udid exactly match
Expand Down
28 changes: 26 additions & 2 deletions tidevice/_instruments.py
Original file line number Diff line number Diff line change
Expand Up @@ -945,7 +945,31 @@ def stop_energy_sampling(self, pid: int):
ch_network = InstrumentsService.XcodeEnergyStatistics
return self.call_message(ch_network, 'stopSamplingForPIDs:', [{pid}])

def get_process_energy_stats(self, pid: int) -> Optional[Iterator[dict]]:
def get_process_energy_stats(self, pid: int) -> Optional[dict]:
"""
Returns dict:
example:
{
"energy.overhead": -10,
"kIDEGaugeSecondsSinceInitialQueryKey": 10,
"energy.version": 1,
"energy.gpu.cost": 0,
"energy.cpu.cost": 0.10964105931592821,
"energy.networkning.overhead": 0,
"energy.appstate.cost": 8,
"energy.location.overhead": 0,
"energy.thermalstate.cost": 0,
"energy.networking.cost": 0,
"energy.cost": -9.890358940684072,
"energy.display.cost": 0,
"energy.cpu.overhead": 0,
"energy.location.cost": 0,
"energy.gpu.overhead": 0,
"energy.appstate.overhead": 0,
"energy.display.overhead": 0,
"energy.inducedthermalstate.cost": -1
}
"""
ch_network = InstrumentsService.XcodeEnergyStatistics
args = [{}, {pid}]
ret = self.call_message(ch_network, 'sampleAttributes:forPIDs:', args)
Expand All @@ -959,7 +983,7 @@ def stop_network_sampling(self, pid: int):
ch_network = 'com.apple.xcode.debug-gauge-data-providers.NetworkStatistics'
return self.call_message(ch_network, 'stopSamplingForPIDs:', [{pid}])

def get_process_network_stats(self, pid: int) -> Optional[Iterator[dict]]:
def get_process_network_stats(self, pid: int) -> Optional[dict]:
"""
经测试数据始终不是很准,用safari测试,每次刷新图片的时候,rx.bytes总是不动
"""
Expand Down
43 changes: 26 additions & 17 deletions tidevice/_safe_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,37 @@
from ._utils import set_socket_timeout
from .exceptions import *

logger = logging.getLogger(PROGRAM_NAME)
from loguru import logger
# logger = logging.getLogger(PROGRAM_NAME)

_n = [0]
_nlock = threading.Lock()
_id_numbers = []

def get_uniq_id() -> int:
def acquire_uid() -> int:
with _nlock:
_n[0] += 1
_id_numbers.append(_n[0])
return _n[0]


def release_uid(id: int):
try:
_id_numbers.remove(id)
except ValueError:
pass
logger.debug("Activate socket count {}", len(_id_numbers))



class SafeStreamSocket:
def __init__(self, addr: Union[str, tuple, socket.socket,
Any]):
"""
Args:
addr: can be /var/run/usbmuxd or (localhost, 27015)
"""
self._id = get_uniq_id()
self._id = acquire_uid()
self._sock = None
self._dup_sock = None # keep original sock when switch_to_ssl
self._name = None
Expand All @@ -59,17 +71,14 @@ def __init__(self, addr: Union[str, tuple, socket.socket,
self._sock = socket.socket(family, socket.SOCK_STREAM)
self._sock.connect(addr)

def _cleanup():
_id = str(self.id)
if self.name:
_id = self.name + ":" + str(self.id)
logger.debug("CLOSE(%s)", _id)
self._sock.close()
if self._dup_sock:
self._dup_sock.close()

self._finalizer = weakref.finalize(self, _cleanup)
self._finalizer = weakref.finalize(self, self._cleanup)

def _cleanup(self):
release_uid(self.id)
self._sock.close()
if self._dup_sock:
self._dup_sock.close()

def close(self):
self._finalizer()

Expand Down Expand Up @@ -166,9 +175,9 @@ def send_packet(self, payload: dict, message_type: int = 8):
tag: int
"""
#if self.is_secure():
# logger.debug(secure_text + " send: %s", payload)
# logger.debug(secure_text + " send: {}", payload)
#else:
logger.debug("SEND(%d): %s", self.id, payload)
logger.debug("SEND({}): {}", self.id, payload)

body_data = plistlib.dumps(payload)
if self._first: # first package
Expand Down Expand Up @@ -196,10 +205,10 @@ def recv_packet(self, header_size=None) -> dict:
logger.debug("Recv pair record data ...")
else:
# if self.is_secure():
# logger.debug(secure_text + " recv" + Color.END + ": %s",
# logger.debug(secure_text + " recv" + Color.END + ": {}",
# payload)
# else:
logger.debug("RECV(%d): %s", self.id, payload)
logger.debug("RECV({}): {}", self.id, payload)
return payload


Expand Down
6 changes: 3 additions & 3 deletions tidevice/_wdaproxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@


class WDAService:
_DEFAULT_TIMEOUT = 30 # http request timeout
_DEFAULT_TIMEOUT = 90 # http request timeout

def __init__(self, d: Device, bundle_id: str = "com.*.xctrunner", env: dict={}, check_interval: float = 60):
def __init__(self, d: Device, bundle_id: str = "com.*.xctrunner", env: dict={}):
self._d = d
self._bundle_id = bundle_id
self._service = ThreadService(self._keep_wda_running)
Expand Down Expand Up @@ -78,7 +78,7 @@ def _wait_ready(self,
return False

def _wait_until_quit(self,
proc,
proc: subprocess.Popen,
stop_event: threading.Event,
check_interval: float = 30.0) -> float:
"""
Expand Down

0 comments on commit cc87b39

Please sign in to comment.