[LNT] r328614 - This patch is response to issue with LNT WebUI "Error accessing URL
Leandro Nunes via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 27 02:33:17 PDT 2018
Author: leandron
Date: Tue Mar 27 02:33:17 2018
New Revision: 328614
URL: http://llvm.org/viewvc/llvm-project?rev=328614&view=rev
Log:
This patch is response to issue with LNT WebUI "Error accessing URL
/db_default/v4/nts/profile/ajax/getFunctions; NOT FOUND". This issue
appears in certain circumstances when user access Web UI under LNT /
nts / profile.
Modified by this patch session query may fetch row(s) with profile_id
values set to NULL. In order to fetch only not NULL values this patch
modifies way we query DB. Query rows with profile_id set to NULL are
not desired when query for LNT/nts/profile data.
Originally written by Przemek Wirkus.
Added:
lnt/trunk/tests/SharedInputs/profile-report.json
Removed:
lnt/trunk/tests/server/db/Inputs/profile-report.json
Modified:
lnt/trunk/lnt/server/ui/profile_views.py
lnt/trunk/tests/server/db/ImportProfile.py
lnt/trunk/tests/server/ui/V4Pages.py
Modified: lnt/trunk/lnt/server/ui/profile_views.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/profile_views.py?rev=328614&r1=328613&r2=328614&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/profile_views.py (original)
+++ lnt/trunk/lnt/server/ui/profile_views.py Tue Mar 27 02:33:17 2018
@@ -21,6 +21,13 @@ from lnt.server.ui.globals import v4_url
from lnt.server.ui.views import ts_data
+def _get_sample(session, ts, run_id, test_id):
+ return session.query(ts.Sample) \
+ .filter(ts.Sample.run_id == run_id) \
+ .filter(ts.Sample.test_id == test_id) \
+ .filter(ts.Sample.profile_id.isnot(None)).first()
+
+
@frontend.route('/profile/admin')
def profile_admin():
profileDir = current_app.old_config.profileDir
@@ -73,9 +80,8 @@ def v4_profile_ajax_getFunctions():
idx = 0
tlc = {}
- sample = session.query(ts.Sample) \
- .filter(ts.Sample.run_id == runid) \
- .filter(ts.Sample.test_id == testid).first()
+ sample = _get_sample(session, ts, runid, testid)
+
if sample and sample.profile:
p = sample.profile.load(profileDir)
return json.dumps([[n, f] for n, f in p.getFunctions().items()])
@@ -95,9 +101,7 @@ def v4_profile_ajax_getTopLevelCounters(
idx = 0
tlc = {}
for rid in runids:
- sample = session.query(ts.Sample) \
- .filter(ts.Sample.run_id == rid) \
- .filter(ts.Sample.test_id == testid).first()
+ sample = _get_sample(session, ts, rid, testid)
if sample and sample.profile:
p = sample.profile.load(profileDir)
for k, v in p.getTopLevelCounters().items():
@@ -121,9 +125,7 @@ def v4_profile_ajax_getCodeForFunction()
profileDir = current_app.old_config.profileDir
- sample = session.query(ts.Sample) \
- .filter(ts.Sample.run_id == runid) \
- .filter(ts.Sample.test_id == testid).first()
+ sample = _get_sample(session, ts, runid, testid)
if not sample or not sample.profile:
abort(404)
@@ -149,14 +151,10 @@ def v4_profile(testid, run1_id, run2_id=
try:
test = session.query(ts.Test).filter(ts.Test.id == testid).one()
run1 = session.query(ts.Run).filter(ts.Run.id == run1_id).one()
- sample1 = session.query(ts.Sample) \
- .filter(ts.Sample.run_id == run1_id) \
- .filter(ts.Sample.test_id == testid).first()
+ sample1 = _get_sample(session, ts, run1_id, testid)
if run2_id is not None:
run2 = session.query(ts.Run).filter(ts.Run.id == run2_id).one()
- sample2 = session.query(ts.Sample) \
- .filter(ts.Sample.run_id == run2_id) \
- .filter(ts.Sample.test_id == testid).first()
+ sample2 = _get_sample(session, ts, run2_id, testid)
else:
run2 = None
sample2 = None
Added: lnt/trunk/tests/SharedInputs/profile-report.json
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/SharedInputs/profile-report.json?rev=328614&view=auto
==============================================================================
--- lnt/trunk/tests/SharedInputs/profile-report.json (added)
+++ lnt/trunk/tests/SharedInputs/profile-report.json Tue Mar 27 02:33:17 2018
@@ -0,0 +1,68 @@
+{
+ "Machine": {
+ "Info": {},
+ "Name": "e105293.local__clang_DEV__x86_64"
+ },
+ "Run": {
+ "End Time": "2016-03-14 14:20:29",
+ "Info": {
+ "__report_version__": "1",
+ "cc1_exec_hash": "c431213c8e77728ee825579745d700e79c3521f2",
+ "cc_alt_src_branch": "llvm/trunk",
+ "cc_alt_src_revision": "154329",
+ "cc_as_version": "unrecognized argument vector: ('-c', '-Wa,-v', '-o', '/dev/null', '-x', 'assembler', '/dev/null')",
+ "cc_build": "DEV",
+ "cc_dumpmachine": "x86_64-apple-darwin11.0.0",
+ "cc_exec_hash": "c431213c8e77728ee825579745d700e79c3521f2",
+ "cc_ld_version": "unrecognized argument vector: ('-Wl,-v', '-o', '/dev/null', '/tmp/tmpzWa737.c')",
+ "cc_name": "clang",
+ "cc_src_branch": "trunk",
+ "cc_src_revision": "154331",
+ "cc_target": "x86_64-apple-darwin11.0.0",
+ "cc_target_assembly": "; ModuleID = '/dev/null'\ntarget datalayout = \"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64\"\ntarget triple = \"x86_64-apple-darwin11.0.0\"",
+ "cc_version": "clang version 3.1 (trunk 154331) (llvm/trunk 154329)\nTarget: x86_64-apple-darwin11.3.0\nThread model: posix\nInstalledDir: /home/foo/bin\n\n \"/Users/jammol01/Code/lnt/tests/SharedInputs/FakeCompilers/clang-r154331\" \"-cc1\" \"-E\" ... more boring stuff here ...",
+ "cc_version_number": "3.1",
+ "inferred_run_order": "154331",
+ "run_order": "154331",
+ "tag": "nts"
+ },
+ "Start Time": "2016-03-14 14:20:28"
+ },
+ "Tests": [
+ {
+ "Data": [
+ 1.4
+ ],
+ "Info": {},
+ "Name": "nts.foo.exec"
+ },
+ {
+ "Data": [
+ 1.3
+ ],
+ "Info": {},
+ "Name": "nts.foo.compile"
+ },
+ {
+ "Data": [
+ 1.5
+ ],
+ "Info": {},
+ "Name": "nts.foo.score"
+ },
+ {
+ "Data": [
+ "xyz"
+ ],
+ "Info": {},
+ "Name": "nts.foo.hash"
+ },
+ {
+ "Data": [
+ "eJxNj8EOgjAMhu99Cm9wULMOEHgBE888QdkASWCQFWJ8e1v04JIt+9f//7qmfkVoEj8yMXdzO70v/RJn2hJYrRQiveSWATdJvwe3jUtgecgh9Wsh9T6gyJvKUjm0kegK0mmt9UCjJUSgB5q8KsobUJOQ96dozr8tAbRApPbssOeCcm83ddoLC7ijMcA/RGUUwXt7iviPEDLJN92yh62LR7I8aBUMysgLnaKNFNzzMo8y7uGplQ4sa/j6rfn60WYaGdRhtT9fP5+JUW4="
+ ],
+ "Info": {},
+ "Name": "nts.foo.profile"
+ }
+ ]
+}
Modified: lnt/trunk/tests/server/db/ImportProfile.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/server/db/ImportProfile.py?rev=328614&r1=328613&r2=328614&view=diff
==============================================================================
--- lnt/trunk/tests/server/db/ImportProfile.py (original)
+++ lnt/trunk/tests/server/db/ImportProfile.py Tue Mar 27 02:33:17 2018
@@ -5,7 +5,7 @@
# RUN: lnt create %t.install
# Import the test set
-# RUN: lnt import %t.install %S/Inputs/profile-report.json \
+# RUN: lnt import %t.install %{shared_inputs}/profile-report.json \
# RUN: --show-sample-count > %t2.log
# RUN: ls %t.install/data/profiles
# RUN: python %s %t.install
Removed: lnt/trunk/tests/server/db/Inputs/profile-report.json
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/server/db/Inputs/profile-report.json?rev=328613&view=auto
==============================================================================
--- lnt/trunk/tests/server/db/Inputs/profile-report.json (original)
+++ lnt/trunk/tests/server/db/Inputs/profile-report.json (removed)
@@ -1,68 +0,0 @@
-{
- "Machine": {
- "Info": {},
- "Name": "e105293.local__clang_DEV__x86_64"
- },
- "Run": {
- "End Time": "2016-03-14 14:20:29",
- "Info": {
- "__report_version__": "1",
- "cc1_exec_hash": "c431213c8e77728ee825579745d700e79c3521f2",
- "cc_alt_src_branch": "llvm/trunk",
- "cc_alt_src_revision": "154329",
- "cc_as_version": "unrecognized argument vector: ('-c', '-Wa,-v', '-o', '/dev/null', '-x', 'assembler', '/dev/null')",
- "cc_build": "DEV",
- "cc_dumpmachine": "x86_64-apple-darwin11.0.0",
- "cc_exec_hash": "c431213c8e77728ee825579745d700e79c3521f2",
- "cc_ld_version": "unrecognized argument vector: ('-Wl,-v', '-o', '/dev/null', '/tmp/tmpzWa737.c')",
- "cc_name": "clang",
- "cc_src_branch": "trunk",
- "cc_src_revision": "154331",
- "cc_target": "x86_64-apple-darwin11.0.0",
- "cc_target_assembly": "; ModuleID = '/dev/null'\ntarget datalayout = \"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64\"\ntarget triple = \"x86_64-apple-darwin11.0.0\"",
- "cc_version": "clang version 3.1 (trunk 154331) (llvm/trunk 154329)\nTarget: x86_64-apple-darwin11.3.0\nThread model: posix\nInstalledDir: /home/foo/bin\n\n \"/Users/jammol01/Code/lnt/tests/SharedInputs/FakeCompilers/clang-r154331\" \"-cc1\" \"-E\" ... more boring stuff here ...",
- "cc_version_number": "3.1",
- "inferred_run_order": "154331",
- "run_order": "154331",
- "tag": "nts"
- },
- "Start Time": "2016-03-14 14:20:28"
- },
- "Tests": [
- {
- "Data": [
- 1.4
- ],
- "Info": {},
- "Name": "nts.foo.exec"
- },
- {
- "Data": [
- 1.3
- ],
- "Info": {},
- "Name": "nts.foo.compile"
- },
- {
- "Data": [
- 1.5
- ],
- "Info": {},
- "Name": "nts.foo.score"
- },
- {
- "Data": [
- "xyz"
- ],
- "Info": {},
- "Name": "nts.foo.hash"
- },
- {
- "Data": [
- "eJxNj8EOgjAMhu99Cm9wULMOEHgBE888QdkASWCQFWJ8e1v04JIt+9f//7qmfkVoEj8yMXdzO70v/RJn2hJYrRQiveSWATdJvwe3jUtgecgh9Wsh9T6gyJvKUjm0kegK0mmt9UCjJUSgB5q8KsobUJOQ96dozr8tAbRApPbssOeCcm83ddoLC7ijMcA/RGUUwXt7iviPEDLJN92yh62LR7I8aBUMysgLnaKNFNzzMo8y7uGplQ4sa/j6rfn60WYaGdRhtT9fP5+JUW4="
- ],
- "Info": {},
- "Name": "nts.foo.profile"
- }
- ]
-}
Modified: lnt/trunk/tests/server/ui/V4Pages.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/server/ui/V4Pages.py?rev=328614&r1=328613&r2=328614&view=diff
==============================================================================
--- lnt/trunk/tests/server/ui/V4Pages.py (original)
+++ lnt/trunk/tests/server/ui/V4Pages.py Tue Mar 27 02:33:17 2018
@@ -7,6 +7,9 @@
# RUN: python %{shared_inputs}/create_temp_instance.py \
# RUN: %s %{shared_inputs}/SmallInstance %t.instance \
# RUN: %S/Inputs/V4Pages_extra_records.sql
+
+# Import a profile
+# RUN: lnt import %t.instance %{shared_inputs}/profile-report.json
#
# RUN: python %s %t.instance %{tidylib}
@@ -533,7 +536,7 @@ def main():
assert resp.headers['Location'] == "http://localhost/db_default/v4/nts/9?compare_to=4"
resp = check_code(client, '/v4/nts/machine/3/compare?compare_to_id=2', expected_code=HTTP_REDIRECT)
assert resp.headers['Location'] == "http://localhost/db_default/v4/nts/4?compare_to=9"
-
+
# Get the order summary page.
check_html(client, '/v4/compile/all_orders')
@@ -570,6 +573,27 @@ def main():
check_json(client, '/v4/nts/regressions/1?json=True')
+ # Check 404 is issues for inexistent Code
+ check_code(client, 'v4/nts/profile/9999/9999', expected_code=HTTP_NOT_FOUND)
+
+ # Profile Viewer Ajax functions
+ # Check profiles page is responsive with expected IDs
+ check_code(client, 'v4/nts/profile/10/10')
+ # Check ajax call
+ functions = check_json(client, 'v4/nts/profile/ajax/getFunctions?runid=10&testid=10')
+ number_of_functions = len(functions)
+ first_function_name = functions[0][0]
+ assert 1 == number_of_functions
+ assert "fn1" == first_function_name
+
+ top_level_counters = check_json(client, 'v4/nts/profile/ajax/getTopLevelCounters?runids=10&testid=10')
+ assert "cycles" in top_level_counters
+ assert "branch-misses" in top_level_counters
+
+ code_for_fn = check_json(client, 'v4/nts/profile/ajax/getCodeForFunction?runid=10&testid=10&f=fn1')
+ lines_in_function = len(code_for_fn)
+ assert 2 == lines_in_function
+
# Make sure the new option does not break anything
check_html(client, '/db_default/v4/nts/graph?switch_min_mean=yes&plot.0=1.3.2&submit=Update')
check_json(client, '/db_default/v4/nts/graph?switch_min_mean=yes&plot.0=1.3.2&json=true&submit=Update')
More information about the llvm-commits
mailing list