Skip to content

Commit da02450

Browse files
committed
test
1 parent ef91022 commit da02450

1 file changed

Lines changed: 115 additions & 24 deletions

File tree

tools/test-my-pr.py

Lines changed: 115 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,15 @@
88
import donate_cpu_lib as lib
99
import argparse
1010
import glob
11+
import gzip
12+
import natsort
1113
import os
1214
import sys
1315
import random
16+
import re
17+
import requests
1418
import subprocess
19+
import time
1520

1621

1722
def format_float(a, b=1):
@@ -20,6 +25,100 @@ def format_float(a, b=1):
2025
return 'N/A'
2126

2227

28+
def ftp_get(url):
29+
try:
30+
response = requests.get(url, timeout=300)
31+
if response.ok:
32+
return response.content
33+
except Exception:
34+
pass
35+
return None
36+
37+
38+
def latestvername(names):
39+
s = natsort.natsorted(names, key=lambda x: x[x.index('_')+1:x.index('.orig.tar')])
40+
return s[-1]
41+
42+
43+
def getpackages():
44+
debian = 'https://ftp.debian.org/debian/'
45+
46+
data = ftp_get(debian + 'ls-lR.gz')
47+
if data is None:
48+
print('Failed to fetch ls-lR.gz')
49+
sys.exit(1)
50+
51+
lines = gzip.decompress(data).decode('utf-8', errors='replace').splitlines()
52+
53+
# Example content in ls-lR:
54+
#./pool/main/0/0xffff:
55+
#total 1452
56+
#-rw-r--r-- 2 dak debadmin 6524 Dec 25 2016 0xffff_0.7-2.debian.tar.xz
57+
#-rw-r--r-- 2 dak debadmin 1791 Dec 25 2016 0xffff_0.7-2.dsc
58+
#-rw-r--r-- 2 dak debadmin 57168 Dec 25 2016 0xffff_0.7-2_amd64.deb
59+
#-rw-r--r-- 2 dak debadmin 48578 Dec 26 2016 0xffff_0.7-2_arm64.deb
60+
#-rw-r--r-- 2 dak debadmin 56730 Dec 26 2016 0xffff_0.7-2_armel.deb
61+
#-rw-r--r-- 2 dak debadmin 57296 Dec 26 2016 0xffff_0.7-2_armhf.deb
62+
#-rw-r--r-- 2 dak debadmin 60254 Dec 26 2016 0xffff_0.7-2_i386.deb
63+
#-rw-r--r-- 2 dak debadmin 53130 Dec 26 2016 0xffff_0.7-2_mips.deb
64+
#-rw-r--r-- 2 dak debadmin 52542 Dec 26 2016 0xffff_0.7-2_mips64el.deb
65+
#-rw-r--r-- 2 dak debadmin 53712 Dec 26 2016 0xffff_0.7-2_mipsel.deb
66+
#-rw-r--r-- 2 dak debadmin 51908 Dec 26 2016 0xffff_0.7-2_ppc64el.deb
67+
#-rw-r--r-- 2 dak debadmin 53548 Dec 26 2016 0xffff_0.7-2_s390x.deb
68+
#-rw-r--r-- 2 dak debadmin 65248 Dec 25 2016 0xffff_0.7.orig.tar.gz
69+
#-rw-r--r-- 2 dak debadmin 6884 Jul 19 19:08 0xffff_0.8-1.debian.tar.xz
70+
#-rw-r--r-- 2 dak debadmin 1807 Jul 19 19:08 0xffff_0.8-1.dsc
71+
#-rw-r--r-- 2 dak debadmin 58908 Jul 19 19:08 0xffff_0.8-1_amd64.deb
72+
#-rw-r--r-- 2 dak debadmin 51340 Jul 19 19:58 0xffff_0.8-1_arm64.deb
73+
#-rw-r--r-- 2 dak debadmin 57612 Jul 19 20:13 0xffff_0.8-1_armel.deb
74+
#-rw-r--r-- 2 dak debadmin 58584 Jul 19 19:58 0xffff_0.8-1_armhf.deb
75+
#-rw-r--r-- 2 dak debadmin 57544 Jul 19 20:23 0xffff_0.8-1_hurd-i386.deb
76+
#-rw-r--r-- 2 dak debadmin 62048 Jul 19 23:54 0xffff_0.8-1_i386.deb
77+
#-rw-r--r-- 2 dak debadmin 55080 Jul 23 19:07 0xffff_0.8-1_kfreebsd-amd64.deb
78+
#-rw-r--r-- 2 dak debadmin 58392 Jul 23 19:07 0xffff_0.8-1_kfreebsd-i386.deb
79+
#-rw-r--r-- 2 dak debadmin 54144 Jul 19 22:28 0xffff_0.8-1_mips.deb
80+
#-rw-r--r-- 2 dak debadmin 53648 Jul 20 00:56 0xffff_0.8-1_mips64el.deb
81+
#-rw-r--r-- 2 dak debadmin 54740 Jul 19 22:58 0xffff_0.8-1_mipsel.deb
82+
#-rw-r--r-- 2 dak debadmin 57424 Jul 19 19:58 0xffff_0.8-1_ppc64el.deb
83+
#-rw-r--r-- 2 dak debadmin 53764 Jul 19 22:28 0xffff_0.8-1_s390x.deb
84+
#-rw-r--r-- 2 dak debadmin 64504 Jul 19 19:08 0xffff_0.8.orig.tar.gz
85+
#
86+
87+
path = None
88+
previous_path = ''
89+
archives = []
90+
filename = None
91+
filenames = []
92+
for line in lines:
93+
line = line.strip()
94+
if len(line) < 4:
95+
if filename:
96+
res1 = re.match(r'(.*)-[0-9.]+$', path)
97+
if res1 is None:
98+
res1 = re.match(r'(.*)[-.][0-9.]+$', path)
99+
res2 = re.match(r'(.*)-[0-9.]+$', previous_path)
100+
if res2 is None:
101+
res2 = re.match(r'(.*)[-.][0-9.]+$', previous_path)
102+
if res1 is None or res2 is None or res1.group(1) != res2.group(1):
103+
archives.append(path + '/' + latestvername(filenames))
104+
else:
105+
archives[-1] = path + '/' + latestvername(filenames)
106+
if path:
107+
previous_path = path
108+
path = None
109+
filename = None
110+
filenames = []
111+
elif line.startswith('./pool/main/'):
112+
path = debian + line[2:-1]
113+
elif path and line.endswith(('.orig.tar.gz', '.orig.tar.bz2', '.orig.tar.xz')):
114+
filename = line[1 + line.rfind(' '):]
115+
filenames.append(filename)
116+
117+
return archives
118+
119+
120+
121+
23122
if __name__ == "__main__":
24123
__my_script_name = os.path.splitext(os.path.basename(sys.argv[0]))[0]
25124
__work_path = os.path.expanduser(os.path.join('~', 'cppcheck-' + __my_script_name + '-workfolder'))
@@ -40,6 +139,19 @@ def format_float(a, b=1):
40139

41140
print(args)
42141

142+
if args.packages_path:
143+
# You can download packages using daca2-download.py
144+
args.packages = glob.glob(os.path.join(args.packages_path, '*.tar.xz'))
145+
random.shuffle(args.packages)
146+
elif args.packages is None:
147+
args.packages = getpackages()
148+
random.shuffle(args.packages)
149+
150+
if args.p is None and args.packages:
151+
args.p = len(args.packages)
152+
153+
print('\n'.join(args.packages[:20]))
154+
43155
if not lib.check_requirements():
44156
print("Error: Check requirements")
45157
sys.exit(1)
@@ -100,35 +212,14 @@ def format_float(a, b=1):
100212
print('Failed to compile your version of Cppcheck')
101213
sys.exit(1)
102214

103-
if args.packages_path:
104-
# You can download packages using daca2-download.py
105-
args.packages = glob.glob(os.path.join(args.packages_path, '*.tar.xz'))
106-
args.p = len(args.packages)
107-
packages_idxs = list(range(args.p))
108-
random.shuffle(packages_idxs)
109-
elif args.packages:
110-
args.p = len(args.packages)
111-
packages_idxs = []
112-
else:
113-
packages_count = lib.get_packages_count()
114-
if not packages_count:
115-
print("network or server might be temporarily down..")
116-
sys.exit(1)
117-
118-
packages_idxs = list(range(packages_count))
119-
random.shuffle(packages_idxs)
120-
121215
packages_processed = 0
122216
crashes = []
123217
timeouts = []
124218

125-
while (packages_processed < args.p and len(packages_idxs) > 0) or args.packages:
126-
if args.packages:
127-
package = args.packages.pop()
128-
else:
129-
package = lib.get_package(packages_idxs.pop())
219+
while packages_processed < args.p and args.packages:
220+
package = args.packages.pop()
130221

131-
if package.startswith('ftp://') or package.startswith('http://'):
222+
if package.startswith('ftp://') or package.startswith('https://'):
132223
tgz = lib.download_package(work_path, package, None)
133224
if tgz is None:
134225
print("No package downloaded")

0 commit comments

Comments
 (0)