1 ##############################################################################
2 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
10 from sqlalchemy import Column, Integer, String, Float, ForeignKey
11 from sqlalchemy.ext.declarative import declarative_base
12 from vstf.controller.database import constants as const
14 Base = declarative_base()
17 class TblScenarioInfo(Base):
18 __tablename__ = "TblScenarioInfo"
19 ScenarioID = Column(Integer, primary_key=True)
20 ScenarioName = Column(String(const.SCENARIO_NAME_LEN), unique=True)
21 FigurePath = Column(String(const.FIGURE_PATH_LEN))
22 Description = Column(String(const.DESC_LEN))
24 def __init__(self, ScenarioName, FigurePath, Description, **kwargs):
26 :param ScenarioName: name of the scenario, like Tn
28 :param Description: desc of scenario table
30 self.ScenarioName = ScenarioName
31 self.FigurePath = FigurePath
32 self.Description = Description
35 return "<User(ScenarioName='%s', FigurePath='%s', Description='%s')>" % (
36 self.ScenarioName, self.FigurePath, self.Description)
39 class TblCaseInfo(Base):
40 __tablename__ = "TblCaseInfo"
41 CaseID = Column(Integer, primary_key=True)
42 CaseTag = Column(String(const.CASE_TAG_LEN), unique=True)
43 CaseName = Column(String(const.CASE_NAME_LEN), unique=True)
44 ScenarioName = Column(String(const.SCENARIO_NAME_LEN))
45 FigurePath = Column(String(const.FIGURE_PATH_LEN))
46 Direction = Column(String(const.DIRECTION_LEN))
47 Directiontag = Column(String(const.DIRECTION_LEN))
48 Configure = Column(String(const.CONF_LEN))
49 Description = Column(String(const.DESC_LEN))
51 def __init__(self, CaseTag, CaseName,
52 ScenarioName, FigurePath, Direction, Directiontag,
53 Configure, Description, **kwargs):
57 :param CaseName: name of case, like tester-vm
58 :param ScenarioName: name of scenario, like Tn
60 :param Direction: the test direction, Tx or Rx
62 :param Description: desc of table case info
64 # CaseID will auto builded by db
65 self.CaseTag = CaseTag
66 self.CaseName = CaseName
67 self.ScenarioName = ScenarioName
68 self.FigurePath = FigurePath
69 self.Direction = Direction
70 self.Directiontag = Directiontag
71 self.Configure = Configure
72 self.Description = Description
75 return "<User(CaseTag='%s', CaseName='%s',ScenarioName='%s',FigurePath='%s', Direction='%s', \
76 Directiontag='%s', Configure='%s', Description='%s')>" % (self.CaseTag, self.CaseName,
77 self.ScenarioName, self.FigurePath,
78 self.Direction, self.Directiontag, self.Configure,
82 class TblHostInfo(Base):
83 __tablename__ = "TblHostInfo"
84 Index = Column(Integer, primary_key=True)
85 TaskID = Column(Integer, ForeignKey('TblTaskList.TaskID'))
86 HostName = Column(String(const.HOST_NAME_LEN))
87 Server = Column(String(const.NORMAL_VAR_LEN1))
88 CPU = Column(String(const.CPU_INFO_LEN))
89 MEM = Column(String(const.NORMAL_VAR_LEN))
90 NIC = Column(String(const.NORMAL_VAR_LEN))
91 OS = Column(String(const.NORMAL_VAR_LEN))
93 def __init__(self, TaskID, HostName, Server, CPU, MEM, NIC, OS, **kwargs):
97 self.HostName = HostName
105 return "<User(HostName='%s', Server='%s', CPU='%s', MEM='%s', NIC='%s',\
106 OS='%s')>" % (self.HostName, self.Server, self.CPU, self.MEM, self.NIC, self.OS)
109 class TblTaskList(Base):
110 __tablename__ = "TblTaskList"
111 TaskID = Column(Integer, primary_key=True)
112 TaskName = Column(String(const.NORMAL_VAR_LEN1))
113 Date = Column(String(const.NORMAL_VAR_LEN1))
114 EXTInfo = Column(String(const.EXT_INFO_LEN))
116 def __init__(self, TaskName, Date, EXTInfo="", **kwargs):
118 self.TaskName = TaskName
120 self.EXTInfo = EXTInfo
123 return "<User(TaskID='%s', TaskName='%s', Date='%s', EXTInfo='%s')>" % (
124 self.TaskID, self.TaskName, self.Date, self.EXTInfo)
127 class TblTestList(Base):
128 __tablename__ = "TblTestList"
129 TestID = Column(Integer, primary_key=True)
130 TaskID = Column(Integer, ForeignKey('TblTaskList.TaskID'))
131 CaseTag = Column(String(const.CASE_TAG_LEN))
132 Protocol = Column(String(const.PROTOCOL_LEN))
133 Type = Column(String(const.TYPE_LEN))
134 Switch = Column(String(const.SWITCH_LEN))
135 Provider = Column(String(const.PROVIDER_LEN))
136 Tools = Column(String(const.TOOLS_LEN))
150 self.CaseTag = casetag
151 self.Protocol = protocol
154 self.Provider = provider
158 return "<User(TaskID='%d', CaseTag='%s', Protocol='%s', Type='%s', Switch=%s, Provider=%s, Tools='%s')>" % (
159 self.TaskID, self.CaseTag, self.Protocol, self.Type, self.Switch, self.Provider, self.Tools)
162 class TblThroughput(Base):
163 __tablename__ = "TblThroughput"
164 Index = Column(Integer, primary_key=True)
165 TestID = Column(Integer, ForeignKey('TblTestList.TestID'))
166 AvgFrameSize = Column(Integer)
167 OfferedLoad = Column(Float)
168 PercentLoss = Column(Float)
169 Bandwidth = Column(Float)
170 MinimumLatency = Column(Float)
171 MaximumLatency = Column(Float)
172 AverageLatency = Column(Float)
173 TxFrameCount = Column(Float)
174 RxFrameCount = Column(Float)
175 Duration = Column(Float)
177 MppspGhz = Column(Float)
179 def __init__(self, TestID, AvgFrameSize,
180 OfferedLoad, PercentLoss, Bandwidth,
181 MinimumLatency, MaximumLatency, AverageLatency,
182 TxFrameCount, RxFrameCount, Duration,
183 CPU, MppspGhz, **kwargs):
184 """table of throughput"""
186 self.AvgFrameSize = AvgFrameSize
187 self.OfferedLoad = OfferedLoad
188 self.PercentLoss = PercentLoss
189 self.Bandwidth = Bandwidth
190 self.MinimumLatency = MinimumLatency
191 self.MaximumLatency = MaximumLatency
192 self.AverageLatency = AverageLatency
193 self.TxFrameCount = TxFrameCount
194 self.RxFrameCount = RxFrameCount
195 self.Duration = Duration
197 self.MppspGhz = MppspGhz
200 return "<User(TestID='%d', AvgFrameSize='%d', OfferedLoad='%f', \
201 PercentLoss='%f', MinimumLatency='%f', AverageLatency='%f', MaximumLatency='%f',\
202 TxFrameCount='%f', RxFrameCount='%f', Duration='%f', CPU='%f', MppspGhz='%f', \
203 Bandwidth='%f')>" % (self.TestID,
204 self.AvgFrameSize, self.OfferedLoad, self.PercentLoss,
205 self.MinimumLatency, self.AverageLatency, self.MaximumLatency,
207 self.RxFrameCount, self.Duration, self.CPU, self.MppspGhz, self.Bandwidth)
210 class TblFrameloss(Base):
211 __tablename__ = "TblFrameloss"
212 Index = Column(Integer, primary_key=True)
213 TestID = Column(Integer, ForeignKey('TblTestList.TestID'))
214 AvgFrameSize = Column(Integer)
215 OfferedLoad = Column(Float)
216 PercentLoss = Column(Float)
217 Bandwidth = Column(Float)
218 MinimumLatency = Column(Float)
219 MaximumLatency = Column(Float)
220 AverageLatency = Column(Float)
221 TxFrameCount = Column(Float)
222 RxFrameCount = Column(Float)
223 Duration = Column(Float)
225 MppspGhz = Column(Float)
227 def __init__(self, TestID, AvgFrameSize,
228 OfferedLoad, PercentLoss, Bandwidth,
229 MinimumLatency, MaximumLatency, AverageLatency,
230 TxFrameCount, RxFrameCount, Duration,
231 CPU, MppspGhz, **kwargs):
232 """table of frameloss"""
234 self.AvgFrameSize = AvgFrameSize
235 self.OfferedLoad = OfferedLoad
236 self.PercentLoss = PercentLoss
237 self.Bandwidth = Bandwidth
238 self.MinimumLatency = MinimumLatency
239 self.MaximumLatency = MaximumLatency
240 self.AverageLatency = AverageLatency
241 self.TxFrameCount = TxFrameCount
242 self.RxFrameCount = RxFrameCount
243 self.Duration = Duration
245 self.MppspGhz = MppspGhz
248 return "<User(TestID='%d', AvgFrameSize='%d', OfferedLoad='%f', \
249 PercentLoss='%f', MinimumLatency='%f', AverageLatency='%f', MaximumLatency='%f',\
250 TxFrameCount='%f', RxFrameCount='%f', Duration='%f', CPU='%f', MppspGhz='%f', \
251 Bandwidth='%f')>" % (self.TestID,
252 self.AvgFrameSize, self.OfferedLoad, self.PercentLoss,
253 self.MinimumLatency, self.AverageLatency, self.MaximumLatency,
255 self.RxFrameCount, self.Duration, self.CPU, self.MppspGhz, self.Bandwidth)
258 class TblLatency(Base):
259 __tablename__ = "TblLatency"
260 Index = Column(Integer, primary_key=True)
261 TestID = Column(Integer, ForeignKey('TblTestList.TestID'))
262 AvgFrameSize = Column(Integer)
263 OfferedLoad = Column(Float)
264 MinimumLatency = Column(Float)
265 MaximumLatency = Column(Float)
266 AverageLatency = Column(Float)
268 def __init__(self, TestID, AvgFrameSize, OfferedLoad,
269 MinimumLatency, MaximumLatency, AverageLatency, **kwargs):
270 """table of latency"""
272 self.AvgFrameSize = AvgFrameSize
273 self.OfferedLoad = OfferedLoad
274 self.MinimumLatency = MinimumLatency
275 self.MaximumLatency = MaximumLatency
276 self.AverageLatency = AverageLatency
279 return "<User(TestID='%d', AvgFrameSize='%d', OfferedLoad='%f', \
280 MinimumLatency='%f', AverageLatency='%f', MaximumLatency='%f')>" % (self.TestID,
288 class TblEXTInfo(Base):
289 __tablename__ = "TblEXTInfo"
290 Index = Column(Integer, primary_key=True)
291 TaskID = Column(Integer)
292 EXTName = Column(String(const.NORMAL_VAR_LEN))
293 EXTContent = Column(String(const.DESC_LEN))
294 Description = Column(String(const.NORMAL_VAR_LEN1))
296 def __init__(self, TaskID, EXTName, EXTContent, Description, **kwargs):
297 """table extern info"""
299 self.EXTName = EXTName
300 self.EXTContent = EXTContent
301 self.Description = Description
304 return "<User(TaskID='%d', CodeType='%s', EXTContent='%s',Version='%s')>" % (
305 self.TaskID, self.EXTName, self.EXTContent, self.Version)