Added additional Oracle views to metric collection (v, v).

This commit is contained in:
Dana Van Aken
2019-10-07 19:34:03 -04:00
parent 162dc48c53
commit 40c75de3ce
13 changed files with 46337 additions and 13484 deletions

View File

@@ -13,6 +13,7 @@ numpy==1.13.1
requests==2.18.4
pycodestyle==2.3.1
astroid==1.5.1
psycopg2>=2.5.4
pylint==1.5.2
pyDOE==0.3.8
mysqlclient==1.3.12

View File

@@ -4,39 +4,138 @@
# Copyright (c) 2017-18, Carnegie Mellon University Database Group
#
import json
import shutil
import os
import sys
from collections import OrderedDict
ROOT = os.path.abspath(os.path.dirname(os.path.abspath(__file__)))
while os.path.basename(ROOT) != 'website':
ROOT = os.path.dirname(ROOT)
print('WEBSITE ROOT: {}'.format(ROOT))
sys.path.insert(0, ROOT)
from website.types import MetricType, VarType
# Metric catalog fields:
# dbms
# name
# vartype
# summary
# scope
# metric_type
# Constants
MODEL = 'website.MetricCatalog'
SCOPE = 'global'
VERSIONS = (12, 19)
# def main():
# final_metrics = []
# with open('oracle12.txt', 'r') as f:
# odd = 0
# entry = {}
# fields = {}
# lines = f.readlines()
# for line in lines:
# line = line.strip().replace("\n", "")
# if not line:
# continue
# if line == 'NAME' or line.startswith('-'):
# continue
# if odd == 0:
# entry = {}
# entry['model'] = 'website.MetricCatalog'
# fields = {}
# fields['name'] = "global." + line
# fields['summary'] = line
# fields['vartype'] = 2 # int
# fields['scope'] = 'global'
# fields['metric_type'] = 3 # stat
# if fields['name'] == "global.user commits":
# fields['metric_type'] = 1 # counter
# fields['dbms'] = 12 # oracle
# entry['fields'] = fields
# final_metrics.append(entry)
# with open('oracle-12_metrics.json', 'w') as f:
# json.dump(final_metrics, f, indent=4)
# shutil.copy('oracle-12_metrics.json', '../../../../website/fixtures/oracle-12_metrics.json')
def check_type(value):
# if value is not None:
try:
value = int(value)
except ValueError:
try:
value = float(value)
except ValueError:
pass
if isinstance(value, int):
vtype = VarType.INTEGER
elif isinstance(value, float):
vtype = VarType.REAL
else:
vtype = VarType.STRING
return vtype
def create_settings(metric_data, dbms):
metrics = []
for name, value in metric_data.items():
vartype = check_type(value)
if vartype in (VarType.INTEGER, VarType.REAL):
if 'average' in name or name.endswith('current') or \
name.startswith('session pga memory'):
mettype = MetricType.STATISTICS
else:
mettype = MetricType.COUNTER # Most int/float metrics are counters
else:
mettype = MetricType.INFO
summary = '{}: {}'.format(name, value)
if name == 'user commits':
assert vartype == VarType.INTEGER and mettype == MetricType.COUNTER
entry = OrderedDict([
('dbms', dbms),
('name', 'global.{}'.format(name)),
('vartype', vartype),
('summary', summary),
('scope', 'global'),
('metric_type', mettype),
])
metrics.append(OrderedDict([('fields', entry), ('model', MODEL)]))
return metrics
def usage():
print('python3 create_metric_settings.py [version] (valid versions: 12, 19)')
sys.exit(1)
def main():
final_metrics = []
with open('oracle12.txt', 'r') as f:
odd = 0
entry = {}
fields = {}
lines = f.readlines()
for line in lines:
line = line.strip().replace("\n", "")
if not line:
continue
if line == 'NAME' or line.startswith('-'):
continue
if odd == 0:
entry = {}
entry['model'] = 'website.MetricCatalog'
fields = {}
fields['name'] = "global." + line
fields['summary'] = line
fields['vartype'] = 2 # int
fields['scope'] = 'global'
fields['metric_type'] = 3 # stat
if fields['name'] == "global.user commits":
fields['metric_type'] = 1 # counter
fields['dbms'] = 12 # oracle
entry['fields'] = fields
final_metrics.append(entry)
with open('oracle-12_metrics.json', 'w') as f:
json.dump(final_metrics, f, indent=4)
shutil.copy('oracle-12_metrics.json', '../../../../website/fixtures/oracle-12_metrics.json')
if len(sys.argv) == 1:
versions = VERSIONS
else:
version = int(sys.argv[1])
if version not in VERSIONS:
usage()
versions = (version,)
for version in versions:
with open('oracle{}.json'.format(version), 'r') as f:
metrics = json.load(f, object_pairs_hook=OrderedDict)
metrics = metrics['global']['global']
meta = create_settings(metrics, version)
savepath = os.path.join(
ROOT, 'website', 'fixtures', 'oracle-{}_metrics.json'.format(version))
with open(savepath, 'w') as f:
json.dump(meta, f, indent=4)
if __name__ == '__main__':

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff