Removed obsolete methods from parser and fields from Session model
This commit is contained in:
parent
b3c42a81fb
commit
c14a337695
|
@ -154,9 +154,6 @@ class BaseParserTests(object, metaclass=ABCMeta):
|
||||||
def test_create_knob_configuration(self):
|
def test_create_knob_configuration(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def test_get_nondefault_knob_settings(self):
|
|
||||||
self.assertEqual(self.test_dbms.get_nondefault_knob_settings({}), {})
|
|
||||||
|
|
||||||
def test_format_bool(self):
|
def test_format_bool(self):
|
||||||
mock_other_knob = mock.Mock(spec=KnobCatalog)
|
mock_other_knob = mock.Mock(spec=KnobCatalog)
|
||||||
mock_other_knob.unit = KnobUnitType.OTHER
|
mock_other_knob.unit = KnobUnitType.OTHER
|
||||||
|
@ -279,27 +276,7 @@ class PostgresParserTests(BaseParserTests, TestCase):
|
||||||
self.assertEqual(test_convert_metrics.get('pg_FAKE_METRIC'), None)
|
self.assertEqual(test_convert_metrics.get('pg_FAKE_METRIC'), None)
|
||||||
|
|
||||||
def test_properties(self):
|
def test_properties(self):
|
||||||
base_config = self.test_dbms.base_configuration_settings
|
self.assertEqual(self.test_dbms.transactions_counter, 'pg_stat_database.xact_commit')
|
||||||
base_config_set = set(base_config)
|
|
||||||
|
|
||||||
self.assertTrue('global.data_directory' in base_config_set)
|
|
||||||
self.assertTrue('global.hba_file' in base_config_set)
|
|
||||||
self.assertTrue('global.ident_file' in base_config_set)
|
|
||||||
self.assertTrue('global.external_pid_file' in base_config_set)
|
|
||||||
self.assertTrue('global.listen_addresses' in base_config_set)
|
|
||||||
self.assertTrue('global.port' in base_config_set)
|
|
||||||
self.assertTrue('global.max_connections' in base_config_set)
|
|
||||||
self.assertTrue('global.unix_socket_directories' in base_config_set)
|
|
||||||
self.assertTrue('global.log_line_prefix' in base_config_set)
|
|
||||||
self.assertTrue('global.track_counts' in base_config_set)
|
|
||||||
self.assertTrue('global.track_io_timing' in base_config_set)
|
|
||||||
self.assertTrue('global.autovacuum' in base_config_set)
|
|
||||||
self.assertTrue('global.default_text_search_config' in base_config_set)
|
|
||||||
|
|
||||||
self.assertEqual(self.test_dbms
|
|
||||||
.knob_configuration_filename, 'postgresql.conf')
|
|
||||||
self.assertEqual(self.test_dbms
|
|
||||||
.transactions_counter, 'pg_stat_database.xact_commit')
|
|
||||||
|
|
||||||
def test_parse_version_string(self):
|
def test_parse_version_string(self):
|
||||||
self.assertTrue(self.test_dbms.parse_version_string("9.6.1"), "9.6")
|
self.assertTrue(self.test_dbms.parse_version_string("9.6.1"), "9.6")
|
||||||
|
|
|
@ -34,7 +34,6 @@
|
||||||
"upload_code": "1234567890",
|
"upload_code": "1234567890",
|
||||||
"tuning_session": "no_tuning_session",
|
"tuning_session": "no_tuning_session",
|
||||||
"target_objective": null,
|
"target_objective": null,
|
||||||
"nondefault_settings": null,
|
|
||||||
"creation_time": "2017-11-30T02:00:49.611Z",
|
"creation_time": "2017-11-30T02:00:49.611Z",
|
||||||
"last_update": "2017-11-30T02:00:49.611Z"
|
"last_update": "2017-11-30T02:00:49.611Z"
|
||||||
},
|
},
|
||||||
|
@ -52,7 +51,6 @@
|
||||||
"upload_code": "0987654321",
|
"upload_code": "0987654321",
|
||||||
"tuning_session": "tuning_session",
|
"tuning_session": "tuning_session",
|
||||||
"target_objective": "throughput_txn_per_sec",
|
"target_objective": "throughput_txn_per_sec",
|
||||||
"nondefault_settings": null,
|
|
||||||
"creation_time": "2017-11-30T02:00:49.611Z",
|
"creation_time": "2017-11-30T02:00:49.611Z",
|
||||||
"last_update": "2017-11-30T02:00:49.611Z"
|
"last_update": "2017-11-30T02:00:49.611Z"
|
||||||
},
|
},
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -194,7 +194,6 @@ class Migration(migrations.Migration):
|
||||||
('upload_code', models.CharField(max_length=30, unique=True)),
|
('upload_code', models.CharField(max_length=30, unique=True)),
|
||||||
('tuning_session', models.CharField(choices=[('tuning_session', 'Tuning Session'), ('no_tuning_session', 'No Tuning'), ('randomly_generate', 'Randomly Generate')], max_length=64)),
|
('tuning_session', models.CharField(choices=[('tuning_session', 'Tuning Session'), ('no_tuning_session', 'No Tuning'), ('randomly_generate', 'Randomly Generate')], max_length=64)),
|
||||||
('target_objective', models.CharField(choices=[(b'throughput_txn_per_sec', b'Throughput'), (b'99th_lat_ms', b'99 Percentile Latency')], max_length=64, null=True)),
|
('target_objective', models.CharField(choices=[(b'throughput_txn_per_sec', b'Throughput'), (b'99th_lat_ms', b'99 Percentile Latency')], max_length=64, null=True)),
|
||||||
('nondefault_settings', models.TextField(null=True)),
|
|
||||||
('dbms', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.DBMSCatalog')),
|
('dbms', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.DBMSCatalog')),
|
||||||
('hardware', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.Hardware')),
|
('hardware', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.Hardware')),
|
||||||
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.Project')),
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.Project')),
|
||||||
|
|
|
@ -211,7 +211,6 @@ class Session(BaseModel):
|
||||||
('99th_lat_ms', '99 Percentile Latency')
|
('99th_lat_ms', '99 Percentile Latency')
|
||||||
]
|
]
|
||||||
target_objective = models.CharField(choices=TARGET_OBJECTIVES, max_length=64, null=True)
|
target_objective = models.CharField(choices=TARGET_OBJECTIVES, max_length=64, null=True)
|
||||||
nondefault_settings = models.TextField(null=True)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
if self.target_objective is None:
|
if self.target_objective is None:
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2017-18, Carnegie Mellon University Database Group
|
# Copyright (c) 2017-18, Carnegie Mellon University Database Group
|
||||||
#
|
#
|
||||||
|
|
||||||
from abc import ABCMeta, abstractmethod, abstractproperty
|
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from website.models import KnobCatalog, MetricCatalog
|
from website.models import KnobCatalog, MetricCatalog
|
||||||
|
@ -12,7 +10,7 @@ from website.types import BooleanType, MetricType, VarType
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=no-self-use
|
# pylint: disable=no-self-use
|
||||||
class BaseParser(object, metaclass=ABCMeta):
|
class BaseParser:
|
||||||
|
|
||||||
def __init__(self, dbms_obj):
|
def __init__(self, dbms_obj):
|
||||||
knobs = KnobCatalog.objects.filter(dbms=dbms_obj)
|
knobs = KnobCatalog.objects.filter(dbms=dbms_obj)
|
||||||
|
@ -33,21 +31,13 @@ class BaseParser(object, metaclass=ABCMeta):
|
||||||
self.true_value = 'on'
|
self.true_value = 'on'
|
||||||
self.false_value = 'off'
|
self.false_value = 'off'
|
||||||
|
|
||||||
@abstractproperty
|
@property
|
||||||
def base_configuration_settings(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@abstractproperty
|
|
||||||
def knob_configuration_filename(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@abstractproperty
|
|
||||||
def transactions_counter(self):
|
def transactions_counter(self):
|
||||||
pass
|
raise NotImplementedError()
|
||||||
|
|
||||||
@abstractproperty
|
@property
|
||||||
def latency_timer(self):
|
def latency_timer(self):
|
||||||
pass
|
raise NotImplementedError()
|
||||||
|
|
||||||
def target_metric(self, target_objective=None):
|
def target_metric(self, target_objective=None):
|
||||||
if target_objective == 'throughput_txn_per_sec' or target_objective is None:
|
if target_objective == 'throughput_txn_per_sec' or target_objective is None:
|
||||||
|
@ -61,9 +51,8 @@ class BaseParser(object, metaclass=ABCMeta):
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def parse_version_string(self, version_string):
|
def parse_version_string(self, version_string):
|
||||||
pass
|
return version_string
|
||||||
|
|
||||||
def convert_bool(self, bool_value, metadata):
|
def convert_bool(self, bool_value, metadata):
|
||||||
if isinstance(bool_value, str):
|
if isinstance(bool_value, str):
|
||||||
|
@ -337,18 +326,6 @@ class BaseParser(object, metaclass=ABCMeta):
|
||||||
configuration = OrderedDict(sorted(configuration.items()))
|
configuration = OrderedDict(sorted(configuration.items()))
|
||||||
return configuration
|
return configuration
|
||||||
|
|
||||||
def get_nondefault_knob_settings(self, knobs):
|
|
||||||
nondefault_settings = OrderedDict()
|
|
||||||
for knob_name, metadata in list(self.knob_catalog_.items()):
|
|
||||||
if metadata.tunable is True:
|
|
||||||
continue
|
|
||||||
if knob_name not in knobs:
|
|
||||||
continue
|
|
||||||
knob_value = knobs[knob_name]
|
|
||||||
if knob_value != metadata.default:
|
|
||||||
nondefault_settings[knob_name] = knob_value
|
|
||||||
return nondefault_settings
|
|
||||||
|
|
||||||
def format_bool(self, bool_value, metadata):
|
def format_bool(self, bool_value, metadata):
|
||||||
return self.true_value if bool_value == BooleanType.TRUE else self.false_value
|
return self.true_value if bool_value == BooleanType.TRUE else self.false_value
|
||||||
|
|
||||||
|
|
|
@ -14,25 +14,10 @@ from website.utils import ConversionUtil
|
||||||
|
|
||||||
class MyRocksParser(BaseParser):
|
class MyRocksParser(BaseParser):
|
||||||
|
|
||||||
MYROCKS_BASE_KNOBS = {
|
|
||||||
'session_variables.rocksdb_max_open_files': '-1'
|
|
||||||
}
|
|
||||||
|
|
||||||
@property
|
|
||||||
def base_configuration_settings(self):
|
|
||||||
return dict(self.MYROCKS_BASE_KNOBS)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def knob_configuration_filename(self):
|
|
||||||
return 'myrocks.conf'
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def transactions_counter(self):
|
def transactions_counter(self):
|
||||||
return 'session_status.questions'
|
return 'session_status.questions'
|
||||||
|
|
||||||
def latency_timer(self):
|
|
||||||
return 'session_status.questions'
|
|
||||||
|
|
||||||
def convert_integer(self, int_value, metadata):
|
def convert_integer(self, int_value, metadata):
|
||||||
converted = None
|
converted = None
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -14,24 +14,6 @@ class OracleParser(BaseParser):
|
||||||
self.true_value = 'TRUE'
|
self.true_value = 'TRUE'
|
||||||
self.false_value = 'FALSE'
|
self.false_value = 'FALSE'
|
||||||
|
|
||||||
ORACLE_BASE_KNOBS = {
|
|
||||||
}
|
|
||||||
|
|
||||||
@property
|
|
||||||
def base_configuration_settings(self):
|
|
||||||
return dict(self.ORACLE_BASE_KNOBS)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def knob_configuration_filename(self):
|
|
||||||
return 'initorcldb.ora'
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def transactions_counter(self):
|
def transactions_counter(self):
|
||||||
return 'global.user commits'
|
return 'global.user commits'
|
||||||
|
|
||||||
@property
|
|
||||||
def latency_timer(self):
|
|
||||||
return 'global.user commits'
|
|
||||||
|
|
||||||
def parse_version_string(self, version_string):
|
|
||||||
return version_string
|
|
||||||
|
|
|
@ -83,10 +83,6 @@ class Parser():
|
||||||
def format_dbms_knobs(dbms_id, knobs):
|
def format_dbms_knobs(dbms_id, knobs):
|
||||||
return Parser.__utils(dbms_id).format_dbms_knobs(knobs)
|
return Parser.__utils(dbms_id).format_dbms_knobs(knobs)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_knob_configuration_filename(dbms_id):
|
|
||||||
return Parser.__utils(dbms_id).knob_configuration_filename
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def filter_numeric_metrics(dbms_id, metrics):
|
def filter_numeric_metrics(dbms_id, metrics):
|
||||||
return Parser.__utils(dbms_id).filter_numeric_metrics(metrics)
|
return Parser.__utils(dbms_id).filter_numeric_metrics(metrics)
|
||||||
|
|
|
@ -18,38 +18,10 @@ class PostgresParser(BaseParser):
|
||||||
self.valid_true_val = ("on", "true", "yes", 1)
|
self.valid_true_val = ("on", "true", "yes", 1)
|
||||||
self.valid_false_val = ("off", "false", "no", 0)
|
self.valid_false_val = ("off", "false", "no", 0)
|
||||||
|
|
||||||
POSTGRES_BASE_KNOBS = {
|
|
||||||
'global.data_directory': None,
|
|
||||||
'global.hba_file': None,
|
|
||||||
'global.ident_file': None,
|
|
||||||
'global.external_pid_file': None,
|
|
||||||
'global.listen_addresses': None,
|
|
||||||
'global.port': None,
|
|
||||||
'global.max_connections': None,
|
|
||||||
'global.unix_socket_directories': None,
|
|
||||||
'global.log_line_prefix': '%t [%p-%l] %q%u@%d ',
|
|
||||||
'global.track_counts': 'on',
|
|
||||||
'global.track_io_timing': 'on',
|
|
||||||
'global.autovacuum': 'on',
|
|
||||||
'global.default_text_search_config': 'pg_catalog.english',
|
|
||||||
}
|
|
||||||
|
|
||||||
@property
|
|
||||||
def base_configuration_settings(self):
|
|
||||||
return dict(self.POSTGRES_BASE_KNOBS)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def knob_configuration_filename(self):
|
|
||||||
return 'postgresql.conf'
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def transactions_counter(self):
|
def transactions_counter(self):
|
||||||
return 'pg_stat_database.xact_commit'
|
return 'pg_stat_database.xact_commit'
|
||||||
|
|
||||||
@property
|
|
||||||
def latency_timer(self):
|
|
||||||
return 'pg_stat_database.xact_commit'
|
|
||||||
|
|
||||||
def convert_integer(self, int_value, metadata):
|
def convert_integer(self, int_value, metadata):
|
||||||
converted = None
|
converted = None
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -516,12 +516,8 @@ def handle_result_files(session, files):
|
||||||
metric_log=initial_metric_diffs)
|
metric_log=initial_metric_diffs)
|
||||||
backup_data.save()
|
backup_data.save()
|
||||||
|
|
||||||
nondefault_settings = Parser.get_nondefault_knob_settings(
|
|
||||||
dbms.pk, knob_dict)
|
|
||||||
session.project.last_update = now()
|
session.project.last_update = now()
|
||||||
session.last_update = now()
|
session.last_update = now()
|
||||||
if session.nondefault_settings is None:
|
|
||||||
session.nondefault_settings = JSONUtil.dumps(nondefault_settings)
|
|
||||||
session.project.save()
|
session.project.save()
|
||||||
session.save()
|
session.save()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue