aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard/app/main.html
blob: 5007ec5338436c864622192d37e0cb99cf91b5d9 (plain)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
{{/*
Copyright 2017 syzkaller project authors. All rights reserved.
Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

Main page.
*/}}

<!doctype html>
<html>
<head>
	<title>Syzkaller Dashboard</title>
	<link rel="stylesheet" href="/static/style.css"/>
</head>
<body>
	{{template "header" .Header}}

	<b>Error log:</b><br>
	<textarea id="log_textarea" readonly rows="20" wrap=off>{{printf "%s" .Log}}</textarea>
	<script>
        	var textarea = document.getElementById("log_textarea");
	        textarea.scrollTop = textarea.scrollHeight;
	</script>
	<br><br>

	<table class="list_table" id="managers">
		<caption>Managers:</caption>
		<tr>
			<th>Name</th>
			<th>Last Active</th>
			<th>Current Build</th>
			<th>Current Uptime</th>
			<th>Today: Fuzzing Time</th>
			<th>Corpus</th>
			<th>Coverage</th>
			<th>Crashes</th>
			<th>Execs</th>
			<th>Failed Build</th>
		</tr>
		{{range $mgr := $.Managers}}
			<tr>
				<td><a href="{{$mgr.Link}}">{{$mgr.Namespace}}/{{$mgr.Name}}</a></td>
				<td class="stat {{if $mgr.LastActiveBad}}bad{{end}}">{{formatLateness $.Now $mgr.LastActive}}</td>
				{{if $mgr.CurrentBuild}}
					<td class="stat" title="{{$mgr.CurrentBuild.KernelRepo}}/{{$mgr.CurrentBuild.KernelBranch}}/{{$mgr.CurrentBuild.KernelCommit}} (syzkaller {{$mgr.CurrentBuild.SyzkallerCommit}})">{{formatLateness $.Now $mgr.CurrentBuild.Time}}</td>
				{{else}}
					<td></td>
				{{end}}
				<td class="stat">{{formatDuration $mgr.CurrentUpTime}}</td>
				<td class="stat">{{formatDuration $mgr.TotalFuzzingTime}}</td>
				<td class="stat">{{formatStat $mgr.MaxCorpus}}</td>
				<td class="stat">{{formatStat $mgr.MaxCover}}</td>
				<td class="stat">{{formatStat $mgr.TotalCrashes}}</td>
				<td class="stat">{{formatStat $mgr.TotalExecs}}</td>
				<td class="stat">{{if $mgr.FailedBuildBugLink}}<a href="{{$mgr.FailedBuildBugLink}}" class="bad">bug</a>{{end}}</td>
			</tr>
		{{end}}
	</table>
	<br><br>

	<table class="list_table" id="jobs">
		<caption>Recent jobs:</caption>
		<tr>
			<th>Created</th>
			<th>Started</th>
			<th>Finished</th>
			<th>User</th>
			<th>Bug</th>
			<th>Patch</th>
			<th>Reporting</th>
			<th>Manager</th>
			<th>Repo</th>
			<th>Result</th>
		</tr>
		{{range $job := $.Jobs}}
			<tr>
				<td class="time">{{if $job.ExternalLink}}<a href="{{$job.ExternalLink}}">{{formatTime $job.Created}}</a>{{else}}{{formatTime $job.Created}}{{end}}</td>
				<td class="time">{{formatTime $job.Started}}{{if gt $job.Attempts 1}} ({{$job.Attempts}}){{end}}</td>
				<td class="time">{{formatTime $job.Finished}}</td>
				<td>{{$job.User}}</td>
				<td class="title"><a href="{{$job.BugLink}}">{{$job.BugTitle}}</a></td>
				<td><a href="{{$job.PatchLink}}">patch</a></td>
				<td>{{$job.Namespace}}/{{$job.Reporting}}</td>
				<td>{{$job.Manager}}</td>
				<td>{{$job.KernelRepo}}/{{$job.KernelBranch}}</td>
				<td>
					{{if $job.ErrorLink}}
						<a href="{{$job.ErrorLink}}">error</a>
					{{else if $job.CrashTitle}}
						{{if $job.CrashReportLink}}
							<a href="{{$job.CrashReportLink}}">{{$job.CrashTitle}}</a>
						{{else}}
							{{$job.CrashTitle}}
						{{end}}
						{{if $job.CrashLogLink}}
							 (<a href="{{$job.CrashLogLink}}">log</a>)
						{{end}}
					{{else if formatTime $job.Finished}}
						OK
					{{else if formatTime $job.Started}}
						running
					{{else}}
						pending
					{{end}}
				</td>
			</tr>
		{{end}}
	</table>
	<br><br>

	{{range $group := $.BugGroups}}
		{{template "bug_list" $group}}
	{{end}}
</body>
</html>