Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
i915-infra
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
41
Issues
41
List
Boards
Labels
Service Desk
Milestones
Merge Requests
5
Merge Requests
5
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
gfx-ci
i915-infra
Commits
7796da94
Commit
7796da94
authored
Oct 22, 2020
by
Tomi Sarvela
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://gitlab.freedesktop.org/gfx-ci/i915-infra
parents
1e997206
c98f7f87
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
102 additions
and
22 deletions
+102
-22
igt-vis/.gitignore
igt-vis/.gitignore
+1
-0
igt-vis/hostaliases.rx.example
igt-vis/hostaliases.rx.example
+2
-0
igt-vis/templates/test-result.mako
igt-vis/templates/test-result.mako
+3
-2
igt-vis/templates/view-byhost.mako
igt-vis/templates/view-byhost.mako
+2
-2
igt-vis/vis-history.py
igt-vis/vis-history.py
+14
-1
igt-vis/vis-test-results.py
igt-vis/vis-test-results.py
+1
-1
igt-vis/vis.py
igt-vis/vis.py
+14
-2
igt-vis/visutils.py
igt-vis/visutils.py
+35
-7
site-publishing/assets/test_result.css
site-publishing/assets/test_result.css
+3
-3
site-publishing/lib/custom.rb
site-publishing/lib/custom.rb
+1
-2
site-publishing/lib/hw_parse.rb
site-publishing/lib/hw_parse.rb
+2
-2
site/index.md
site/index.md
+6
-0
site/pre-merge-results.md
site/pre-merge-results.md
+14
-0
site/test-with.md
site/test-with.md
+4
-0
No files found.
igt-vis/.gitignore
View file @
7796da94
...
...
@@ -2,4 +2,5 @@ __pycache__/
*.pyc
*.pyo
*~
hostaliases.rx
igt-vis/hostaliases.rx.example
0 → 100644
View file @
7796da94
^shard-(.*?)-?\d+$ shard-\1
^test1$ test2
igt-vis/templates/test-result.mako
View file @
7796da94
...
...
@@ -15,6 +15,7 @@ if 'run' in test:
filelist.append
(("
dmesg
%
d.txt
"
%
test
['
run
'],))
filelist.append
(("
hostdmesg
%
d.txt
"
%
test
['
run
'],))
filelist.append
(("
runtimes
%
d.txt
"
%
test
['
run
'],))
filelist.append
(("
results
%
d.json.bz2
"
%
test
['
run
'],))
%
>
<?xml version="1.0" encoding="UTF-8"?>
...
...
@@ -82,7 +83,7 @@ if 'run' in test:
<td>
% if var == 'dmesg':
% for idx, dmesg in enumerate(test[var]):
<div><span
id=
"${dmesg.style}${idx}"
class=
"${dmesg.style}"
>
${dmesg.message | h}
</span></div>
<div><span
id=
"${dmesg.style}${idx}"
class=
"
dmesg
${dmesg.style}"
>
${dmesg.message | h}
</span></div>
% endfor
% else:
<pre>
${test[var] | h}
</pre>
...
...
@@ -95,7 +96,7 @@ if 'run' in test:
## Highlighting logs with [IGT] in them
<script>
document
.
querySelectorAll
(
"
[id*='dmesg-normal']
"
).
forEach
(
x
=>
document
.
querySelectorAll
(
"
span.dmesg
"
).
forEach
(
x
=>
x
.
textContent
.
includes
(
"
[IGT]
"
)
&&
(
x
.
classList
.
add
(
"
dmesg-igt
"
))
);
</script>
...
...
igt-vis/templates/view-byhost.mako
View file @
7796da94
...
...
@@ -24,9 +24,9 @@
% endif
% if build == new:
<th class="x"><span class="v"><a href="${path}${build}/">${build}</a></th>
<th class="x"><span class="v"><a href="${path}${build}/
filelist.html
">${build}</a></th>
% else:
<th><span class="v"><a href="${path}${build}/">${build}</a></th>
<th><span class="v"><a href="${path}${build}/
filelist.html
">${build}</a></th>
% endif
% endfor
</tr>
...
...
igt-vis/vis-history.py
View file @
7796da94
...
...
@@ -18,7 +18,7 @@ if __name__ == "__main__":
ap
.
add_argument
(
'-o'
,
'--output'
,
help
=
"Output html prefix"
,
type
=
str
,
default
=
''
)
ap
.
add_argument
(
'--heatmap'
,
help
=
"Create heatmap"
,
default
=
False
,
action
=
'store_true'
)
ap
.
add_argument
(
'--combine'
,
type
=
str
,
default
=
None
,
help
=
"Combine results for similar hosts"
)
help
=
"
Deprecated|
Combine results for similar hosts"
)
ap
.
add_argument
(
'--testsort'
,
default
=
False
,
action
=
'store_true'
,
help
=
"Sort tests in alphabetical order"
)
ap
.
add_argument
(
'-d'
,
'--depth'
,
type
=
int
,
default
=
0
,
...
...
@@ -26,6 +26,8 @@ if __name__ == "__main__":
ap
.
add_argument
(
'--buildorder'
,
type
=
str
,
default
=
None
,
help
=
"Filename for build order information"
)
ap
.
add_argument
(
'files'
,
help
=
"Files to be visualized"
,
metavar
=
'files'
,
nargs
=
'+'
,
type
=
str
)
ap
.
add_argument
(
'-a'
,
'--hostalias-file'
,
type
=
str
,
default
=
None
,
help
=
"Combine results for similiar hosts based on RegEx file"
)
args
=
ap
.
parse_args
()
...
...
@@ -33,6 +35,17 @@ if __name__ == "__main__":
if
args
.
buildorder
:
readbuildorder
(
args
.
buildorder
)
if
args
.
hostalias_file
:
try
:
read_hostalias_file
(
args
.
hostalias_file
)
except
Exception
as
e
:
print
(
"Err:"
,
e
)
exit
(
1
)
else
:
try
:
read_hostalias_file
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
"hostaliases.rx"
))
except
:
pass
try
:
jsons
=
readfiles
(
args
.
files
,
combine
=
args
.
combine
)
# arranged by [(build,host)]
except
(
KeyboardInterrupt
)
as
e
:
print
(
"ERROR: Keyboard interrupt while reading files"
)
...
...
igt-vis/vis-test-results.py
View file @
7796da94
...
...
@@ -50,7 +50,7 @@ def writehtml(q):
realhost
=
host
path
=
os
.
path
.
join
(
args
.
output
,
build
,
realhost
)
try
:
os
.
m
kdir
(
path
)
try
:
os
.
m
akedirs
(
path
)
except
FileExistsError
:
pass
filepath
=
os
.
path
.
join
(
path
,
htmlname
(
testname
))
title
=
testname
+
" on "
+
host
+
"@"
+
build
...
...
igt-vis/vis.py
View file @
7796da94
...
...
@@ -30,7 +30,7 @@ def parse_args():
ap
.
add_argument
(
'-c'
,
'--collate'
,
type
=
str
,
default
=
None
,
help
=
"Collate these results, example: -c notrun,pass"
)
ap
.
add_argument
(
'--combine'
,
type
=
str
,
default
=
None
,
help
=
"Combine results for similar hosts"
)
help
=
"
Deprecated|
Combine results for similar hosts"
)
ap
.
add_argument
(
'--buildorder'
,
type
=
str
,
default
=
None
,
help
=
"Filename for build order information"
)
ap
.
add_argument
(
'--builddesc'
,
type
=
str
,
default
=
None
,
...
...
@@ -39,7 +39,8 @@ def parse_args():
help
=
"Create html page with only changed results within test/host"
)
ap
.
add_argument
(
'files'
,
metavar
=
'files'
,
nargs
=
'+'
,
type
=
str
,
help
=
"Piglit json files to be visualized"
)
ap
.
add_argument
(
'-a'
,
'--hostalias-file'
,
type
=
str
,
default
=
None
,
help
=
"Combine results for similiar hosts based on RegEx file"
)
return
ap
.
parse_args
()
# Truncate and remove single test result as much as we can for size
...
...
@@ -70,6 +71,17 @@ def main():
if
args
.
buildorder
:
readbuildorder
(
args
.
buildorder
)
if
args
.
hostalias_file
:
try
:
read_hostalias_file
(
args
.
hostalias_file
)
except
Exception
as
e
:
print
(
"Err:"
,
e
)
exit
(
1
)
else
:
try
:
read_hostalias_file
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
"hostaliases.rx"
))
except
:
pass
# Build a dict for extra information in html
# builddesc file format:
# build<space>description
...
...
igt-vis/visutils.py
View file @
7796da94
...
...
@@ -53,7 +53,34 @@ intel_gpu_gens = [
(
"cl-"
,
4.2
)
# Crestline Gen4 GMAX3100
]
def
readfiles_parallel
(
q
,
files
=
[],
combine
=
'shard'
):
hostaliases
=
{}
def
read_hostalias_file
(
filename
):
'''Read in regex-replace pairs for hostname aliasing'''
global
hostaliases
try
:
with
open
(
filename
,
'r'
)
as
fp
:
for
line
in
fp
.
readlines
():
r
,
s
=
line
.
strip
().
split
(
' '
,
1
)
hostaliases
[
re
.
compile
(
r
)]
=
s
print
(
f
'Host alias file loaded from:
{
filename
}
'
)
except
(
OSError
,
IOError
,
UnicodeDecodeError
,
EOFError
)
as
e
:
raise
e
return
hostaliases
def
hostalias
(
hostname
):
'''Go through ordered dict of regex matches.
Use first matching or return None (no matches)'''
global
hostaliases
for
r
in
hostaliases
.
keys
():
if
r
.
match
(
hostname
):
return
re
.
sub
(
r
,
hostaliases
[
r
],
hostname
,
count
=
1
)
return
None
def
readfiles_parallel
(
q
,
files
=
[],
combine
=
'shard'
):
for
filename
in
files
:
j
=
None
try
:
...
...
@@ -122,14 +149,15 @@ def readfiles_parallel(q, files=[], combine='shard'):
if
j
[
'tests'
][
test
][
'result'
]
==
'incomplete'
:
incompleted
=
True
# Workaround: combine shards
# This is needed for sensible comparison and more concise html
if
combine
and
combine
in
host
:
alias
=
hostalias
(
host
)
# combine will be deprecated
if
not
alias
and
combine
and
combine
in
host
:
alias
=
re
.
match
(
"(.*?)-?[0-9]{1,3}$"
,
host
).
group
(
1
)
if
alias
:
for
test
in
j
[
'tests'
]:
j
[
'tests'
][
test
][
'hostname'
]
=
host
# need number in the end of hostname
host
=
re
.
match
(
"(.*?)?[0-9]{1,3}$"
,
host
).
group
(
1
)
host
=
alias
q
.
put
((
build
,
host
,
j
))
...
...
site-publishing/assets/test_result.css
View file @
7796da94
...
...
@@ -38,16 +38,16 @@ tr:nth-child(odd) > td:first-child {
visibility
:
hidden
;
}
.dmesg-warnings
{
span
.dmesg-warnings
{
color
:
orangered
;
font-weight
:
bold
;
}
.dmesg-igt
{
span
.dmesg-igt
{
background-color
:
#ffffba
;
}
.dmesg-warnings
,
.dmesg-normal
{
span
.dmesg
{
white-space
:
pre
;
font-family
:
monospace
;
word-wrap
:
normal
;
...
...
site-publishing/lib/custom.rb
View file @
7796da94
...
...
@@ -124,8 +124,7 @@ module HardwareList
content
+=
" "
end
raw_name
=
host
.
start_with?
(
'shard-'
)
?
"
#{
host
}
1"
:
host
content
+=
"<span style=
\"
float: right;
\"
>[raw data](/hardware/
#{
raw_name
}
/filelist.html)</span>
\n
"
content
+=
"<span style=
\"
float: right;
\"
>[raw data](/hardware/
#{
host
}
/filelist.html)</span>
\n
"
content
+=
"<pre>
#{
hw_description_to_pretty_yaml
(
data
)
}
</pre>
\n\n
"
end
end
...
...
site-publishing/lib/hw_parse.rb
View file @
7796da94
...
...
@@ -79,7 +79,7 @@ end
module
I915DisplayInfo
def
self
.
is_connector_line?
(
line
)
line
=~
/^
connector \d+:/
line
=~
/^
\[?connector:? ?\d+/i
end
...
...
@@ -102,7 +102,7 @@ module I915DisplayInfo
def
self
.
get_status_and_name
(
line
)
connector
=
line
.
scan
(
/
connector \d+: type (\S+), status: (connected|disconnected)/
)
connector
=
line
.
scan
(
/
\[?connector(?: |:)\d+:(?: type )?(\S+)?(?:]:|,) status: (connected|disconnected)/i
)
connector
.
flatten!
end
...
...
site/index.md
View file @
7796da94
...
...
@@ -240,6 +240,12 @@ pre-merge/post-merge).
[
kasan
]:
https://www.kernel.org/doc/html/latest/dev-tools/kasan.html
### Other Runs
**Resume runs**
are using the same test list as Full IGT but are done on a
single machine. In case of hangs/incompletes the run is resumed. They are not
a part of regular CI and are tiggered on demand.
## Contacts
*
**IRC:**
#intel-gfx-ci @ freenode
...
...
site/pre-merge-results.md
View file @
7796da94
...
...
@@ -91,6 +91,20 @@ Each test state change (e.g. pass→fail) has few things listed:
*
**numer of occurences of same transition across multiple machines:**
`+3 similar issues`
## How Serious Are Incompletes And Aborts?
**Incomplete**
means that the machine haven't been able to complete execution
of a test (most often because of a kernel panic or a hard hang). Incompletes
signal very serious issues with stability. Any tests that were supposed to
follow, that are on the same testlist (shard, fast-feedback), are not going to
be executed.
**Aborts**
are as serious as incompletes but the abnormal state was detected
either by IGT Runner or the test itself. They signal that no further testing
is going to be done because the results would not be trustworthy do to the
machine's / kernel condition.
## I've Got Some False Positives, What Now?
Reply to the e-mail with the results and explain why do those results are
...
...
site/test-with.md
View file @
7796da94
...
...
@@ -21,6 +21,10 @@ cover letter and all the patches (e.g. `[PATCH 0/1]`). Older versions of git
do not add those for series with just a single patch. Patchwork uses "patch
number 0" to tell that the mail is a cover letter.
**Warning:**
Don't test-with old series. The historical builds artifact are
being removed aggressively. As of now if you test-with anything older than a
day the behavior is undefined.
## Results
If the
`Test-with:`
has been picked up correctly you should see, near the
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment