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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
<?php
require_once "../init.php";
include BASE . "/lib/mysql.php";
include BASE . "/lib/style.php";
include BASE . "/lib/converter.php";
$result = mysql_run_query(
"SELECT MAX(`package_sources`.`commit_time`) AS `last_commit`" .
" FROM `package_sources`"
);
if ($result -> num_rows > 0) {
$result = $result->fetch_assoc();
$last_commit = $result["last_commit"];
}
$result = mysql_run_query(
"SELECT MAX(`build_assignments`.`return_date`) AS `last_return`" .
" FROM `build_assignments`"
);
if ($result -> num_rows > 0) {
$result = $result->fetch_assoc();
$last_return = $result["last_return"];
}
$result = mysql_run_query(
"SELECT MAX(`binary_packages_in_repositories`.`last_moved`) AS `last_moved`" .
" FROM `binary_packages`" .
" JOIN `binary_packages_in_repositories` ON `binary_packages_in_repositories`.`package`=`binary_packages`.`id`" .
" JOIN `build_assignments` ON `binary_packages`.`build_assignment`=`build_assignments`.`id`" .
" WHERE `binary_packages_in_repositories`.`last_moved`>`build_assignments`.`return_date`"
);
if ($result -> num_rows > 0) {
$result = $result->fetch_assoc();
$last_moved = $result["last_moved"];
}
$age_queries = array(
array(
"label" => "age of build-list-packages",
"column" => "`package_sources`.`commit_time`",
"table" =>
"`package_sources`" .
" JOIN (" .
"SELECT " .
"`build_assignments`.`package_source`" .
" FROM `build_assignments`" .
" JOIN `binary_packages`" .
" ON `binary_packages`.`build_assignment`=`build_assignments`.`id`" .
" JOIN `binary_packages_in_repositories`" .
" ON `binary_packages_in_repositories`.`package`=`binary_packages`.`id`" .
" JOIN `repositories`" .
" ON `binary_packages_in_repositories`.`repository`=`repositories`.`id`" .
" WHERE `repositories`.`name`=\"build-list\"" .
" AND `build_assignments`.`is_blocked` IS NULL" .
" GROUP BY `build_assignments`.`package_source`" .
") AS `build_assignments_grouped`" .
" ON `build_assignments_grouped`.`package_source`=`package_sources`.`id`"
),
array(
"label" => "age of staging-packages",
"column" => "`binary_packages_in_repositories`.`first_last_moved`",
"table" =>
"`binary_packages`" .
" JOIN (" .
"SELECT " .
"`binary_packages_in_repositories`.`package`," .
"MIN(`binary_packages_in_repositories`.`last_moved`) AS `first_last_moved`" .
" FROM `binary_packages_in_repositories`" .
" JOIN `repositories`" .
" ON `binary_packages_in_repositories`.`repository`=`repositories`.`id`" .
" JOIN `repository_stabilities`" .
" ON `repositories`.`stability`=`repository_stabilities`.`id`" .
" WHERE `repository_stabilities`.`name`=\"staging\"" .
" GROUP BY `binary_packages_in_repositories`.`package`" .
") AS `binary_packages_in_repositories`" .
" ON `binary_packages_in_repositories`.`package`=`binary_packages`.`id`"
),
array(
"label" => "age of testing-packages",
"column" => "`binary_packages_in_repositories`.`first_last_moved`",
"table" =>
"`binary_packages`" .
" JOIN (" .
"SELECT " .
"`binary_packages_in_repositories`.`package`," .
"MIN(`binary_packages_in_repositories`.`last_moved`) AS `first_last_moved`" .
" FROM `binary_packages_in_repositories`" .
" JOIN `repositories`" .
" ON `binary_packages_in_repositories`.`repository`=`repositories`.`id`" .
" JOIN `repository_stabilities`" .
" ON `repositories`.`stability`=`repository_stabilities`.`id`" .
" WHERE `repository_stabilities`.`name`=\"testing\"" .
" GROUP BY `binary_packages_in_repositories`.`package`" .
") AS `binary_packages_in_repositories`" .
" ON `binary_packages_in_repositories`.`package`=`binary_packages`.`id`" .
" WHERE NOT `binary_packages`.`has_issues`" .
" AND NOT `binary_packages`.`is_tested`"
),
array(
"label" => "age of tested-packages",
"column" => "`binary_packages_in_repositories`.`first_last_moved`",
"table" =>
"`binary_packages`" .
" JOIN (" .
"SELECT " .
"`binary_packages_in_repositories`.`package`," .
"MIN(`binary_packages_in_repositories`.`last_moved`) AS `first_last_moved`" .
" FROM `binary_packages_in_repositories`" .
" JOIN `repositories`" .
" ON `binary_packages_in_repositories`.`repository`=`repositories`.`id`" .
" JOIN `repository_stabilities`" .
" ON `repositories`.`stability`=`repository_stabilities`.`id`" .
" WHERE `repository_stabilities`.`name`=\"testing\"" .
" GROUP BY `binary_packages_in_repositories`.`package`" .
") AS `binary_packages_in_repositories`" .
" ON `binary_packages_in_repositories`.`package`=`binary_packages`.`id`"
)
);
foreach ($age_queries as $age_query) {
$result = mysql_run_query(
"SELECT " .
"AVG(UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(" . $age_query["column"] . ")) AS `avg`," .
"STDDEV(UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(" . $age_query["column"] . ")) AS `stddev`" .
" FROM " . $age_query["table"]
);
if ($result -> num_rows > 0) {
$result = $result->fetch_assoc();
foreach ($result as $key => $val)
$ages[$age_query["label"]][$key] = format_time_duration($val);
};
};
print_header("Build Master Status");
if (isset($last_commit))
print " latest package source is from " . $last_commit . ".<br>\n";
if (isset($last_return))
print " latest built package is from " . $last_return . ".<br>\n";
if (isset($last_moved))
print " latest package move was on " . $last_moved . ".<br>\n";
foreach ($ages as $label => $value)
print " " . $label . ": " .
$value["avg"] . " ± " .
$value["stddev"] . ".<br>\n";
print_footer();
|