-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_on_apps.py
More file actions
46 lines (38 loc) · 1.51 KB
/
run_on_apps.py
File metadata and controls
46 lines (38 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import os
import asyncio
import argparse
import concurrent.futures
import csv
import logging
import pipeline
logger = logging.getLogger(__name__)
TIMEOUT_PER_RUN = 5 * 60 # 5 minutes
async def run(csvfile, apkdir, column=0, sniff=None, mitmproxy=False, coverage=False):
packages = []
with open(csvfile, "r") as f:
reader = csv.reader(f)
next(reader) # skip header
for row in reader:
packages.append(row[column])
for package in packages:
try:
await asyncio.wait_for(pipeline.run(package, f"{os.path.join(apkdir, package)}.apk",
n_actions=10, sniff=sniff, mitmproxy=mitmproxy,
coverage=coverage),
timeout=TIMEOUT_PER_RUN)
except asyncio.TimeoutError:
logger.warning(f">>>{package} TIMEOUT")
except Exception as e:
logger.warning(f">>>{package} ERROR {type(e).__name__} {str(e)}")
async def main():
parser = argparse.ArgumentParser(description="Run pipeline on a bunch of apps.")
parser.add_argument("csvfile", type=str)
parser.add_argument("--column", type=int, default=0)
parser.add_argument("--apkdir", type=str)
parser.add_argument("--mitmproxy", action="store_true")
parser.add_argument("--sniff", type=str)
parser.add_argument("--coverage", action="store_true", default=False)
args = parser.parse_args()
await run(args.csvfile, args.apkdir, args.column, args.sniff, args.mitmproxy, args.coverage)
if __name__ == '__main__':
asyncio.run(main())