diff options
author | Jun Li <matthew.lijun@huawei.com> | 2016-01-19 06:49:41 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@172.30.200.206> | 2016-01-19 06:49:41 +0000 |
commit | 830b8c8c9f158fad8f9b1fc0977ae6deee3e9bed (patch) | |
tree | 6b6403f87c494ce2592228560f4078c8d3763ba5 /vstf/vstf/controller/database | |
parent | 61b37f3955ba7abb168fc5bab53a336a20579286 (diff) | |
parent | 5b4f794932cb9b28ec679e6dd88e6febb2a5db7b (diff) |
Merge " JIRA: BOTTLENECKS-29 add the performance test framework"
Diffstat (limited to 'vstf/vstf/controller/database')
-rwxr-xr-x | vstf/vstf/controller/database/__init__.py | 21 | ||||
-rwxr-xr-x | vstf/vstf/controller/database/constants.py | 10 | ||||
-rwxr-xr-x | vstf/vstf/controller/database/dbinterface.py | 398 | ||||
-rwxr-xr-x | vstf/vstf/controller/database/tables.py | 14 |
4 files changed, 239 insertions, 204 deletions
diff --git a/vstf/vstf/controller/database/__init__.py b/vstf/vstf/controller/database/__init__.py index 89dcd4e2..df7d24d0 100755 --- a/vstf/vstf/controller/database/__init__.py +++ b/vstf/vstf/controller/database/__init__.py @@ -1,14 +1,9 @@ -# Copyright Huawei Technologies Co., Ltd. 1998-2015. -# All Rights Reserved. +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. # -# Licensed under the Apache License, Version 2.0 (the License); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an AS IS BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + diff --git a/vstf/vstf/controller/database/constants.py b/vstf/vstf/controller/database/constants.py index d1aef398..e5070122 100755 --- a/vstf/vstf/controller/database/constants.py +++ b/vstf/vstf/controller/database/constants.py @@ -1,3 +1,12 @@ +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + SCENARIO_NAME_LEN = 16 DESC_LEN = 256 FIGURE_PATH_LEN = 128 @@ -14,6 +23,7 @@ CPU_INFO_LEN = 1024 NORMAL_VAR_LEN = 32 NORMAL_VAR_LEN1 = 64 +SWITCH_LEN = 16 PROTOCOL_LEN = 16 PROVIDER_LEN = 16 diff --git a/vstf/vstf/controller/database/dbinterface.py b/vstf/vstf/controller/database/dbinterface.py index ae34c861..d0996c30 100755 --- a/vstf/vstf/controller/database/dbinterface.py +++ b/vstf/vstf/controller/database/dbinterface.py @@ -1,8 +1,12 @@ -#!/usr/bin/python -# -*- coding: utf8 -*- -# author: wly -# date: 2015-07-29 -# see license for license details +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + __version__ = ''' ''' import os import logging @@ -10,7 +14,8 @@ import logging from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy import and_ -from vstf.controller.database.tables import * +import vstf.controller.database.tables as table +from vstf.controller.database import constants as const LOG = logging.getLogger(__name__) @@ -38,7 +43,7 @@ class DbManage(object): except Exception as e: raise e - # if the db is new , cleate all tables and init static tables + # if the db is new , create all tables and init static tables if not db_exists: self.create_tables() self.init_tables() @@ -47,11 +52,11 @@ class DbManage(object): self._engine.close_all() def create_tables(self): - Base.metadata.create_all(self._engine) + table.Base.metadata.create_all(self._engine) self._session.commit() def drop_tables(self): - Base.metadata.drop_all(self._engine) + table.Base.metadata.drop_all(self._engine) self._session.commit() def init_tables(self): @@ -62,9 +67,9 @@ class DbManage(object): def init_scenario_table(self): items = [] for values in const.SCENARIO_INFO_LIST: - item = TblScenarioInfo(ScenarioName=values[0], - FigurePath=values[1], - Description=values[2]) + item = table.TblScenarioInfo(ScenarioName=values[0], + FigurePath=values[1], + Description=values[2]) items.append(item) self._session.add_all(items) @@ -72,53 +77,53 @@ class DbManage(object): def init_casetable(self): items = [] for values in const.CASE_INFO_LIST: - item = TblCaseInfo(CaseTag=values[0], - ScenarioName=values[1], - CaseName=values[2], - FigurePath=values[3], - Description=values[4], - Direction=values[5], - Directiontag=values[6], - Configure=values[7]) + item = table.TblCaseInfo(CaseTag=values[0], + ScenarioName=values[1], + CaseName=values[2], + FigurePath=values[3], + Description=values[4], + Direction=values[5], + Directiontag=values[6], + Configure=values[7]) items.append(item) self._session.add_all(items) def query_caseinfo(self): - query = self._session.query(TblCaseInfo.ScenarioName, - TblCaseInfo.CaseTag, - TblCaseInfo.CaseName, - TblCaseInfo.Direction, - TblCaseInfo.Configure) + query = self._session.query(table.TblCaseInfo.ScenarioName, + table.TblCaseInfo.CaseTag, + table.TblCaseInfo.CaseName, + table.TblCaseInfo.Direction, + table.TblCaseInfo.Configure) return query.all() def query_case(self, casetag): - query = self._session.query(TblCaseInfo.ScenarioName, - TblCaseInfo.Directiontag) + query = self._session.query(table.TblCaseInfo.ScenarioName, + table.TblCaseInfo.Directiontag) return query.first() # Single TblTaskList API def get_last_taskid(self): - query = self._session.query(TblTaskList.TaskID) + query = self._session.query(table.TblTaskList.TaskID) if query: return query.all()[-1][0] else: return 0 def query_tasklist(self): - query = self._session.query(TblTaskList) + query = self._session.query(table.TblTaskList) return query.all() def query_taskdate(self, taskid): - query = self._session.query(TblTaskList.Date).filter(and_( - TblTaskList.TaskID == taskid)) + query = self._session.query(table.TblTaskList.Date).filter(and_( + table.TblTaskList.TaskID == taskid)) result = "" if query: result += query.first()[0] return result def query_taskname(self, taskid): - query = self._session.query(TblTaskList.TaskName).filter(and_( - TblTaskList.TaskID == taskid)) + query = self._session.query(table.TblTaskList.TaskName).filter(and_( + table.TblTaskList.TaskID == taskid)) result = "" if query: result += query.first()[0] @@ -126,7 +131,7 @@ class DbManage(object): def create_task(self, name, date, desc): try: - item = TblTaskList(name, date, desc) + item = table.TblTaskList(name, date, desc) self._session.add(item) self._session.commit() except Exception: @@ -137,32 +142,33 @@ class DbManage(object): # Single TblHostInfo API def add_host_2task(self, taskid, name, machine, cpu, men, nic, os): """All var except task must be string""" - item = TblHostInfo(taskid, name, machine, cpu, men, nic, os) + item = table.TblHostInfo(taskid, name, machine, cpu, men, nic, os) self._session.add(item) self._session.commit() def query_task_host_list(self, taskid): - query = self._session.query(TblHostInfo.HostName, - TblHostInfo.Server, - TblHostInfo.CPU, - TblHostInfo.MEM, - TblHostInfo.NIC, - TblHostInfo.OS).filter( - TblHostInfo.TaskID == taskid) + query = self._session.query(table.TblHostInfo.HostName, + table.TblHostInfo.Server, + table.TblHostInfo.CPU, + table.TblHostInfo.MEM, + table.TblHostInfo.NIC, + table.TblHostInfo.OS).filter( + table.TblHostInfo.TaskID == taskid) return query.all() # Single TblTestList API def get_last_testid(self): - query = self._session.query(TblTestList.TestID) + query = self._session.query(table.TblTestList.TestID) + print query.all() if query: return query.all()[-1][0] else: return 0 - def add_test_2task(self, task, case, protocol, provider, typ, tool): + def add_test_2task(self, task, case, protocol, typ, switch, provider, tool): try: - item = TblTestList(task, case, protocol, provider, typ, tool) + item = table.TblTestList(task, case, protocol, typ, switch, provider, tool) self._session.add(item) self._session.commit() except Exception: @@ -171,12 +177,12 @@ class DbManage(object): return self.get_last_testid() def get_test_type(self, testid): - query = self._session.query(TblTestList.Type).filter( - TblTestList.TestID == testid) + query = self._session.query(table.TblTestList.Type).filter( + table.TblTestList.TestID == testid) return query.first() def add_extent_2task(self, task, name, content, description): - item = TblEXTInfo(task, name, content, description) + item = table.TblEXTInfo(task, name, content, description) self._session.add(item) self._session.commit() @@ -199,9 +205,9 @@ class DbManage(object): """ ptype = self.get_test_type(testid) instance_map = { - 'throughput': TblThroughput, - 'frameloss': TblFrameloss, - 'latency': TblLatency + 'throughput': table.TblThroughput, + 'frameloss': table.TblFrameloss, + 'latency': table.TblLatency } if ptype and ptype[0] not in instance_map: @@ -228,37 +234,37 @@ class DbManage(object): def query_tasks(self): result = [] - ret = self._session.query(TblTaskList) + ret = self._session.query(table.TblTaskList) if ret: for tmp in ret.all(): result.append([tmp.TaskID, tmp.TaskName, tmp.Date, tmp.EXTInfo]) return result def query_all_task_id(self): - query = self._session.query(TblTaskList.TaskID) + query = self._session.query(table.TblTaskList.TaskID) if query: return query.all() else: return [] def get_caseinfo(self): - query = self._session.query(TblCaseInfo.ScenarioName, - TblCaseInfo.CaseTag, - TblCaseInfo.CaseName, - TblCaseInfo.Direction, - TblCaseInfo.Configure) + query = self._session.query(table.TblCaseInfo.ScenarioName, + table.TblCaseInfo.CaseTag, + table.TblCaseInfo.CaseName, + table.TblCaseInfo.Direction, + table.TblCaseInfo.Configure) return query.all() def query_scenario(self, casetag): - query = self._session.query(TblCaseInfo.ScenarioName).filter(TblCaseInfo.CaseTag == casetag) + query = self._session.query(table.TblCaseInfo.ScenarioName).filter(table.TblCaseInfo.CaseTag == casetag) ret = "" if query and query.first(): ret = query.first()[0] return ret def query_casefigure(self, casetag, tools): - query = self._session.query(TblCaseInfo.FigurePath).filter(and_( - TblCaseInfo.CaseTag == casetag)) + query = self._session.query(table.TblCaseInfo.FigurePath).filter(and_( + table.TblCaseInfo.CaseTag == casetag)) result = "" if query: result += query.first()[0] @@ -267,167 +273,183 @@ class DbManage(object): return result def query_casename(self, casetag): - query = self._session.query(TblCaseInfo.CaseName).filter(and_( - TblCaseInfo.CaseTag == casetag)) + query = self._session.query(table.TblCaseInfo.CaseName).filter(and_( + table.TblCaseInfo.CaseTag == casetag)) result = "" if query: result += query.first()[0] return result - # Single TblScenarioInfo API + # Single TblTestList API def query_caselist(self, taskid, scenario): - query = self._session.query(TblTestList.CaseTag).filter(and_( - TblTestList.CaseTag == TblCaseInfo.CaseTag, - TblCaseInfo.ScenarioName == scenario, - TblTestList.TaskID == taskid)).group_by(TblCaseInfo.CaseTag) + query = self._session.query(table.TblTestList.CaseTag).filter(and_( + table.TblTestList.CaseTag == table.TblCaseInfo.CaseTag, + table.TblCaseInfo.ScenarioName == scenario, + table.TblTestList.TaskID == taskid)).group_by(table.TblCaseInfo.CaseTag) + return query.all() + + def query_testlist(self, taskid, scenario): + """ + + :rtype : object + """ + query = self._session.query(table.TblTestList).filter(and_( + table.TblTestList.CaseTag == table.TblCaseInfo.CaseTag, + table.TblCaseInfo.ScenarioName == scenario, + table.TblTestList.TaskID == taskid)) return query.all() def query_casetool(self, taskid, casetag, provider, ptype): - query = self._session.query(TblTestList.Tools).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, - TblTestList.Type == ptype)) + query = self._session.query(table.TblTestList.Tools).filter(and_( + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, + table.TblTestList.Type == ptype)) return query.all() def query_casetools(self, taskid, casetag): - query = self._session.query(TblTestList.Tools).filter(and_( - TblTestList.CaseTag == casetag, - TblTestList.TaskID == taskid)).group_by(TblTestList.Tools) + query = self._session.query(table.TblTestList.Tools).filter(and_( + table.TblTestList.CaseTag == casetag, + table.TblTestList.TaskID == taskid)).group_by(table.TblTestList.Tools) return query.all() def query_scenariolist(self, taskid): - query = self._session.query(TblCaseInfo.ScenarioName).filter(and_( - TblTestList.CaseTag == TblCaseInfo.CaseTag, - TblTestList.TaskID == taskid)).group_by(TblCaseInfo.ScenarioName) + query = self._session.query(table.TblCaseInfo.ScenarioName).filter(and_( + table.TblTestList.CaseTag == table.TblCaseInfo.CaseTag, + table.TblTestList.TaskID == taskid)).group_by(table.TblCaseInfo.ScenarioName) return query.all() def query_throughput_load(self, taskid, casetag, provider): ptype = 'throughput' - query = self._session.query(TblThroughput.AvgFrameSize, TblThroughput.OfferedLoad).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblThroughput.TestID)) + query = self._session.query(table.TblThroughput.AvgFrameSize, table.TblThroughput.OfferedLoad).filter(and_( + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblThroughput.TestID)) return query.all() def query_throughput_bandwidth(self, taskid, casetag, provider): ptype = 'throughput' - query = self._session.query(TblThroughput.AvgFrameSize, TblThroughput.Bandwidth).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblThroughput.TestID)) + query = self._session.query(table.TblThroughput.AvgFrameSize, table.TblThroughput.Bandwidth).filter(and_( + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblThroughput.TestID)) return query.all() def query_throughput_table(self, taskid, casetag, provider): ptype = 'throughput' - query = self._session.query(TblThroughput.AvgFrameSize, - TblThroughput.Bandwidth, - TblThroughput.OfferedLoad, - TblThroughput.CPU, - TblThroughput.MppspGhz, - TblThroughput.MinimumLatency, - TblThroughput.MaximumLatency, - TblThroughput.AverageLatency, + query = self._session.query(table.TblThroughput.AvgFrameSize, + table.TblThroughput.Bandwidth, + table.TblThroughput.OfferedLoad, + table.TblThroughput.CPU, + table.TblThroughput.MppspGhz, + table.TblThroughput.MinimumLatency, + table.TblThroughput.MaximumLatency, + table.TblThroughput.AverageLatency, ).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblThroughput.TestID)) + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblThroughput.TestID)) return query.all() def query_throughput_simpletable(self, taskid, casetag, provider): ptype = 'throughput' - query = self._session.query(TblThroughput.AvgFrameSize, - TblThroughput.Bandwidth, - TblThroughput.OfferedLoad, - TblThroughput.CPU, - TblThroughput.MppspGhz, - TblThroughput.AverageLatency, + query = self._session.query(table.TblThroughput.AvgFrameSize, + table.TblThroughput.Bandwidth, + table.TblThroughput.OfferedLoad, + table.TblThroughput.CPU, + table.TblThroughput.MppspGhz, + table.TblThroughput.AverageLatency, ).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblThroughput.TestID)) + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblThroughput.TestID)) + return query.all() + + def query_testdata(self, testid, ptype): + obj = getattr(table, "Tbl%s" % (ptype.title())) + query = self._session.query(obj).filter(obj.TestID == testid) return query.all() def query_throughput_avg(self, taskid, casetag, provider): ptype = 'throughput' - query = self._session.query(TblThroughput.AvgFrameSize, TblThroughput.AverageLatency).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblThroughput.TestID)) + query = self._session.query(table.TblThroughput.AvgFrameSize, table.TblThroughput.AverageLatency).filter(and_( + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblThroughput.TestID)) return query.all() def query_frameloss_bandwidth(self, taskid, casetag, provider): ptype = 'frameloss' - query = self._session.query(TblFrameloss.AvgFrameSize, TblFrameloss.Bandwidth).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblFrameloss.TestID)) + query = self._session.query(table.TblFrameloss.AvgFrameSize, table.TblFrameloss.Bandwidth).filter(and_( + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblFrameloss.TestID)) return query.all() def query_frameloss_load(self, taskid, casetag, provider): ptype = 'frameloss' - query = self._session.query(TblFrameloss.AvgFrameSize, TblFrameloss.OfferedLoad).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblFrameloss.TestID)) + query = self._session.query(table.TblFrameloss.AvgFrameSize, table.TblFrameloss.OfferedLoad).filter(and_( + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblFrameloss.TestID)) return query.all() def query_frameloss_table(self, taskid, casetag, provider): ptype = 'frameloss' - query = self._session.query(TblFrameloss.AvgFrameSize, - TblFrameloss.Bandwidth, - TblFrameloss.OfferedLoad, - TblFrameloss.CPU, - TblFrameloss.MppspGhz, - TblFrameloss.MinimumLatency, - TblFrameloss.MaximumLatency, - TblFrameloss.AverageLatency, + query = self._session.query(table.TblFrameloss.AvgFrameSize, + table.TblFrameloss.Bandwidth, + table.TblFrameloss.OfferedLoad, + table.TblFrameloss.CPU, + table.TblFrameloss.MppspGhz, + table.TblFrameloss.MinimumLatency, + table.TblFrameloss.MaximumLatency, + table.TblFrameloss.AverageLatency ).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblFrameloss.TestID)) + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblFrameloss.TestID)) return query.all() def query_frameloss_simpletable(self, taskid, casetag, provider): ptype = 'frameloss' - query = self._session.query(TblFrameloss.AvgFrameSize, - TblFrameloss.Bandwidth, - TblFrameloss.OfferedLoad, - TblFrameloss.CPU, - TblFrameloss.MppspGhz, - TblFrameloss.AverageLatency, + query = self._session.query(table.TblFrameloss.AvgFrameSize, + table.TblFrameloss.Bandwidth, + table.TblFrameloss.OfferedLoad, + table.TblFrameloss.CPU, + table.TblFrameloss.MppspGhz, + table.TblFrameloss.AverageLatency ).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblFrameloss.TestID)) + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblFrameloss.TestID)) return query.all() def query_frameloss_avg(self, taskid, casetag, provider): ptype = 'frameloss' - query = self._session.query(TblFrameloss.AvgFrameSize, TblFrameloss.AverageLatency).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblFrameloss.TestID)) + query = self._session.query(table.TblFrameloss.AvgFrameSize, table.TblFrameloss.AverageLatency).filter(and_( + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblFrameloss.TestID)) return query.all() def query_latency_avg(self, taskid, casetag, provider): ptype = 'latency' - query = self._session.query(TblLatency.AvgFrameSize, TblLatency.AverageLatency).filter(and_( - TblTestList.TaskID == taskid, - TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, TblTestList.Type == ptype, - TblTestList.TestID == TblLatency.TestID)) + query = self._session.query(table.TblLatency.AvgFrameSize, table.TblLatency.AverageLatency).filter(and_( + table.TblTestList.TaskID == taskid, + table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, table.TblTestList.Type == ptype, + table.TblTestList.TestID == table.TblLatency.TestID)) return query.all() def query_summary_table(self, taskid, casetag, provider, ptype): @@ -461,50 +483,51 @@ class DbManage(object): return [] def query_throughput_provider(self, taskid, casetag, provider): - query = self._session.query(TblThroughput).filter(and_(TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, - TblTestList.TaskID == taskid, - TblTestList.TestID == TblThroughput.TestID)) + query = self._session.query(table.TblThroughput).filter(and_(table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, + table.TblTestList.TaskID == taskid, + table.TblTestList.TestID == table.TblThroughput.TestID)) return query.all() def query_frameloss_provider(self, taskid, casetag, provider): - query = self._session.query(TblFrameloss).filter(and_(TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, - TblTestList.TaskID == taskid, - TblTestList.TestID == TblFrameloss.TestID)) + query = self._session.query(table.TblFrameloss).filter(and_(table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, + table.TblTestList.TaskID == taskid, + table.TblTestList.TestID == table.TblFrameloss.TestID)) return query.all() def query_latency_provider(self, taskid, casetag, provider): - query = self._session.query(TblLatency).filter(and_(TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, - TblTestList.TaskID == taskid, - TblTestList.TestID == TblLatency.TestID)) + query = self._session.query(table.TblLatency).filter(and_(table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, + table.TblTestList.TaskID == taskid, + table.TblTestList.TestID == table.TblLatency.TestID)) return query.all() def query_case_type_count(self, taskid, casetag, ptype): - query = self._session.query(TblTestList).filter(and_(TblTestList.CaseTag == casetag, - TblTestList.Type == ptype, TblTestList.TaskID == taskid)) + query = self._session.query(table.TblTestList).filter(and_(table.TblTestList.CaseTag == casetag, + table.TblTestList.Type == ptype, + table.TblTestList.TaskID == taskid)) return query.count() def query_case_provider_count(self, taskid, casetag, provider): - query = self._session.query(TblTestList).filter(and_(TblTestList.CaseTag == casetag, - TblTestList.Provider == provider, - TblTestList.TaskID == taskid)) + query = self._session.query(table.TblTestList).filter(and_(table.TblTestList.CaseTag == casetag, + table.TblTestList.Provider == provider, + table.TblTestList.TaskID == taskid)) return query.count() def query_case_type_provider_count(self, taskid, casetag, provider, ptype): - query = self._session.query(TblTestList).filter(and_(TblTestList.CaseTag == casetag, - TblTestList.Type == ptype, - TblTestList.Provider == provider, - TblTestList.TaskID == taskid)) + query = self._session.query(table.TblTestList).filter(and_(table.TblTestList.CaseTag == casetag, + table.TblTestList.Type == ptype, + table.TblTestList.Provider == provider, + table.TblTestList.TaskID == taskid)) return query.count() def query_exten_info(self, taskid): - query = self._session.query(TblEXTInfo.EXTName, - TblEXTInfo.EXTContent, - TblEXTInfo.Description).filter(TblEXTInfo.TaskID == taskid) + query = self._session.query(table.TblEXTInfo.EXTName, + table.TblEXTInfo.EXTContent, + table.TblEXTInfo.Description).filter(table.TblEXTInfo.TaskID == taskid) return query.all() @@ -517,7 +540,7 @@ def unit_test(): dbase.add_extent_2task(taskid, "CETH", "driver", "version 2.0") dbase.add_extent_2task(taskid, "EVS", "switch", "version 3.0") - testid = dbase.add_test_2task(taskid, "Tn-1", 'udp', "rdp", "throughput", "netperf") + testid = dbase.add_test_2task(taskid, "Tn-1", 'udp', "throughput", "ovs", None, "netperf") data = { '64': { 'OfferedLoad': 2, @@ -535,7 +558,7 @@ def unit_test(): } dbase.add_data_2test(testid, data) - testid = dbase.add_test_2task(taskid, "Tn-1", 'udp', "rdp", "frameloss", "netperf") + testid = dbase.add_test_2task(taskid, "Tn-1", 'udp', "frameloss", "ovs", None, "netperf") data = { '64': { 'OfferedLoad': 2, @@ -553,7 +576,7 @@ def unit_test(): } dbase.add_data_2test(testid, data) - testid = dbase.add_test_2task(taskid, "Tn-1", 'udp', "rdp", "latency", "netperf") + testid = dbase.add_test_2task(taskid, "Tn-1", 'udp', "latency", "ovs", None, "netperf") data = { 64: {'MaximumLatency': 0.0, 'AverageLatency': 0.0, 'MinimumLatency': 0.0, 'OfferedLoad': 0.0}, 128: {'MaximumLatency': 0.0, 'AverageLatency': 0.0, 'MinimumLatency': 0.0, 'OfferedLoad': 0.0}, @@ -561,7 +584,12 @@ def unit_test(): 1024: {'MaximumLatency': 0.0, 'AverageLatency': 0.0, 'MinimumLatency': 0.0, 'OfferedLoad': 0.0} } dbase.add_data_2test(testid, data) + query = dbase.query_testlist(1, "Tn") + for item in query: + print item.Protocol + query = dbase.query_testdata(1, "throughput") + print query if __name__ == '__main__': unit_test() diff --git a/vstf/vstf/controller/database/tables.py b/vstf/vstf/controller/database/tables.py index a7658f49..0438d0e9 100755 --- a/vstf/vstf/controller/database/tables.py +++ b/vstf/vstf/controller/database/tables.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: utf8 -*- # author: wly -# date: 2015-07-29 +# date: 2015-12-25 # see license for license details __version__ = ''' ''' from sqlalchemy import Column, Integer, String, Float, ForeignKey @@ -127,22 +127,24 @@ class TblTestList(Base): TaskID = Column(Integer, ForeignKey('TblTaskList.TaskID')) CaseTag = Column(String(const.CASE_TAG_LEN)) Protocol = Column(String(const.PROTOCOL_LEN)) - Provider = Column(String(const.PROVIDER_LEN)) Type = Column(String(const.TYPE_LEN)) + Switch = Column(String(const.SWITCH_LEN)) + Provider = Column(String(const.PROVIDER_LEN)) Tools = Column(String(const.TOOLS_LEN)) - def __init__(self, taskid, casetag, protocol, provider, typ, tools, **kwargs): + def __init__(self, taskid, casetag, protocol, typ, switch, provider, tools, **kwargs): """Table of test""" self.TaskID = taskid self.CaseTag = casetag self.Protocol = protocol - self.Provider = provider self.Type = typ + self.Switch = switch + self.Provider = provider self.Tools = tools def __repr__(self): - return "<User(TaskID='%d', CaseTag='%s', Protocol='%s', Provider=%s, Type='%s', Tools='%s')>" % ( - self.TaskID, self.CaseTag, self.Protocol, self.Provider, self.Type, self.Tools) + return "<User(TaskID='%d', CaseTag='%s', Protocol='%s', Type='%s', Switch=%s, Provider=%s, Tools='%s')>" % ( + self.TaskID, self.CaseTag, self.Protocol, self.Type, self.Switch, self.Provider, self.Tools) class TblThroughput(Base): |