[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <tip-b2556c46a69b4c0e6bbf690ac4ca2913cbe90e1e@git.kernel.org>
Date: Fri, 26 Oct 2018 00:38:53 -0700
From: tip-bot for Adrian Hunter <tipbot@...or.com>
To: linux-tip-commits@...r.kernel.org
Cc: mingo@...nel.org, acme@...hat.com, linux-kernel@...r.kernel.org,
adrian.hunter@...el.com, tglx@...utronix.de, hpa@...or.com,
jolsa@...hat.com, ak@...ux.intel.com
Subject: [tip:perf/urgent] perf scripts python: call-graph-from-sql.py:
Separate the database details into a class
Commit-ID: b2556c46a69b4c0e6bbf690ac4ca2913cbe90e1e
Gitweb: https://git.kernel.org/tip/b2556c46a69b4c0e6bbf690ac4ca2913cbe90e1e
Author: Adrian Hunter <adrian.hunter@...el.com>
AuthorDate: Mon, 1 Oct 2018 09:28:40 +0300
Committer: Arnaldo Carvalho de Melo <acme@...hat.com>
CommitDate: Tue, 23 Oct 2018 14:23:13 -0300
perf scripts python: call-graph-from-sql.py: Separate the database details into a class
Separate the database details into a class that can provide different
connections using the same connection information. That paves the way
for sub-processes that require their own connection.
Signed-off-by: Adrian Hunter <adrian.hunter@...el.com>
Cc: Andi Kleen <ak@...ux.intel.com>
Cc: Jiri Olsa <jolsa@...hat.com>
Link: http://lkml.kernel.org/r/20181001062853.28285-7-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com>
---
tools/perf/scripts/python/call-graph-from-sql.py | 63 ++++++++++++++----------
1 file changed, 38 insertions(+), 25 deletions(-)
diff --git a/tools/perf/scripts/python/call-graph-from-sql.py b/tools/perf/scripts/python/call-graph-from-sql.py
index 2b74b94eeccc..9d056deab2b1 100644
--- a/tools/perf/scripts/python/call-graph-from-sql.py
+++ b/tools/perf/scripts/python/call-graph-from-sql.py
@@ -284,6 +284,42 @@ class MainWindow(QMainWindow):
self.setCentralWidget(self.view)
+# Database reference
+
+class DBRef():
+
+ def __init__(self, is_sqlite3, dbname):
+ self.is_sqlite3 = is_sqlite3
+ self.dbname = dbname
+
+ def Open(self, connection_name):
+ dbname = self.dbname
+ if self.is_sqlite3:
+ db = QSqlDatabase.addDatabase("QSQLITE", connection_name)
+ else:
+ db = QSqlDatabase.addDatabase("QPSQL", connection_name)
+ opts = dbname.split()
+ for opt in opts:
+ if "=" in opt:
+ opt = opt.split("=")
+ if opt[0] == "hostname":
+ db.setHostName(opt[1])
+ elif opt[0] == "port":
+ db.setPort(int(opt[1]))
+ elif opt[0] == "username":
+ db.setUserName(opt[1])
+ elif opt[0] == "password":
+ db.setPassword(opt[1])
+ elif opt[0] == "dbname":
+ dbname = opt[1]
+ else:
+ dbname = opt
+
+ db.setDatabaseName(dbname)
+ if not db.open():
+ raise Exception("Failed to open database " + dbname + " error: " + db.lastError().text())
+ return db, dbname
+
# Main
def Main():
@@ -302,31 +338,8 @@ def Main():
except:
pass
- if is_sqlite3:
- db = QSqlDatabase.addDatabase('QSQLITE')
- else:
- db = QSqlDatabase.addDatabase('QPSQL')
- opts = dbname.split()
- for opt in opts:
- if '=' in opt:
- opt = opt.split('=')
- if opt[0] == 'hostname':
- db.setHostName(opt[1])
- elif opt[0] == 'port':
- db.setPort(int(opt[1]))
- elif opt[0] == 'username':
- db.setUserName(opt[1])
- elif opt[0] == 'password':
- db.setPassword(opt[1])
- elif opt[0] == 'dbname':
- dbname = opt[1]
- else:
- dbname = opt
-
- db.setDatabaseName(dbname)
- if not db.open():
- raise Exception("Failed to open database " + dbname + " error: " + db.lastError().text())
-
+ dbref = DBRef(is_sqlite3, dbname)
+ db, dbname = dbref.Open("main")
app = QApplication(sys.argv)
window = MainWindow(db, dbname)
window.show()
Powered by blists - more mailing lists