annotate talosnames/api.py @ 5:2d883dd59a1a

stub tbpl_mapping
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 10 Jul 2012 10:48:09 -0700
parents 90e477181404
children 82aad57c7d1d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
1 import sqlite3
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
2 import urllib2
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
3
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
4 class TalosNames(object):
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
5 graphserver_sql = 'http://hg.mozilla.org/graphs/raw-file/tip/sql/data.sql'
1
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
6 schema = 'http://hg.mozilla.org/graphs/raw-file/tip/sql/schema.sql'
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
7
5
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
8 # mapping file from builbot-configs name to tbpl codes:
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
9 # http://hg.mozilla.org/users/mstange_themasta.com/tinderboxpushlog/file/tip/js/Config.js
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
10 tbpl_mapping = 'http://hg.mozilla.org/users/mstange_themasta.com/tinderboxpushlog/raw-file/tip/js/Data.js'
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
11
2
c98f2a383595 make some tables
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
12 tables = {'os_list': '(id, name text)',
3
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
13 'branches': '(id, name text)',
2
c98f2a383595 make some tables
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
14 'machines': '(id, os_id int, is_throttling int, cpu_speed text, name text, is_active int, date_added int)',
c98f2a383595 make some tables
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
15 'pagesets': '(id, name text)',
c98f2a383595 make some tables
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
16 'tests': '(id, name text, pretty_name text, is_chrome int, is_active int, pageset_id int)'
c98f2a383595 make some tables
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
17 }
1
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
18
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
19 def __init__(self):
5
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
20 self.setup_database()
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
21 self.tbpl_mapping()
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
22
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
23 def setup_database():
1
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
24 self.db = sqlite3.connect(':memory:')
3
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
25 sql_lines = urllib2.urlopen(self.graphserver_sql).readlines()
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
26
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
27 # XXX remove the machines since they require a function, unix_timestamp(), sqlite does not have
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
28 sql_lines = [line for line in sql_lines
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
29 if 'unix_timestamp' not in line]
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
30 sql = '\n'.join(sql_lines)
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
31
1
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
32 cursor = self.db.cursor()
2
c98f2a383595 make some tables
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
33 for table, schema in self.tables.items():
c98f2a383595 make some tables
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
34 cursor.execute("""CREATE TABLE %s %s""" % (table, schema))
3
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
35 cursor.executescript(sql)
2
c98f2a383595 make some tables
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
36 self.db.commit()
c98f2a383595 make some tables
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
37 cursor.close()
1
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
38
3
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
39 # create data structures
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
40 self.names = {}
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
41 self.chrome = set()
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
42 cursor = self.db.cursor()
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
43 cursor.execute("SELECT * FROM tests")
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
44 for _, short_name, graphserver_name, is_chrome, _, _ in cursor.fetchall():
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
45 self.names[short_name] = graphserver_name
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
46 if is_chrome:
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
47 self.chrome.add(short_name)
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
48 cursor.close()
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
49
5
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
50 def tbpl_mapping(self):
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
51 pass
2d883dd59a1a stub tbpl_mapping
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
52
3
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
53 def __call__(self, name=None):
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
54 retval = []
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
55 for short_name, graphserver_name in self.names.items():
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
56 if (name is None) or (name == short_name or short_name.startswith(name + '_')):
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
57 retval.append((short_name, graphserver_name))
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
58 retval.sort(key=lambda x: x[0])
90e477181404 now basically works
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
59 return retval