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))
138 def __init__(self, taskid, casetag, protocol, typ, switch, provider, tools, **kwargs):
141 self.CaseTag = casetag
142 self.Protocol = protocol
145 self.Provider = provider
149 return "<User(TaskID='%d', CaseTag='%s', Protocol='%s', Type='%s', Switch=%s, Provider=%s, Tools='%s')>" % (
150 self.TaskID, self.CaseTag, self.Protocol, self.Type, self.Switch, self.Provider, self.Tools)
153 class TblThroughput(Base):
154 __tablename__ = "TblThroughput"
155 Index = Column(Integer, primary_key=True)
156 TestID = Column(Integer, ForeignKey('TblTestList.TestID'))
157 AvgFrameSize = Column(Integer)
158 OfferedLoad = Column(Float)
159 PercentLoss = Column(Float)
160 Bandwidth = Column(Float)
161 MinimumLatency = Column(Float)
162 MaximumLatency = Column(Float)
163 AverageLatency = Column(Float)
164 TxFrameCount = Column(Float)
165 RxFrameCount = Column(Float)
166 Duration = Column(Float)
168 MppspGhz = Column(Float)
170 def __init__(self, TestID, AvgFrameSize,
171 OfferedLoad, PercentLoss, Bandwidth,
172 MinimumLatency, MaximumLatency, AverageLatency,
173 TxFrameCount, RxFrameCount, Duration,
174 CPU, MppspGhz, **kwargs):
175 """table of throughput"""
177 self.AvgFrameSize = AvgFrameSize
178 self.OfferedLoad = OfferedLoad
179 self.PercentLoss = PercentLoss
180 self.Bandwidth = Bandwidth
181 self.MinimumLatency = MinimumLatency
182 self.MaximumLatency = MaximumLatency
183 self.AverageLatency = AverageLatency
184 self.TxFrameCount = TxFrameCount
185 self.RxFrameCount = RxFrameCount
186 self.Duration = Duration
188 self.MppspGhz = MppspGhz
191 return "<User(TestID='%d', AvgFrameSize='%d', OfferedLoad='%f', \
192 PercentLoss='%f', MinimumLatency='%f', AverageLatency='%f', MaximumLatency='%f',\
193 TxFrameCount='%f', RxFrameCount='%f', Duration='%f', CPU='%f', MppspGhz='%f', \
194 Bandwidth='%f')>" % (self.TestID,
195 self.AvgFrameSize, self.OfferedLoad, self.PercentLoss,
196 self.MinimumLatency, self.AverageLatency, self.MaximumLatency,
198 self.RxFrameCount, self.Duration, self.CPU, self.MppspGhz, self.Bandwidth)
201 class TblFrameloss(Base):
202 __tablename__ = "TblFrameloss"
203 Index = Column(Integer, primary_key=True)
204 TestID = Column(Integer, ForeignKey('TblTestList.TestID'))
205 AvgFrameSize = Column(Integer)
206 OfferedLoad = Column(Float)
207 PercentLoss = Column(Float)
208 Bandwidth = Column(Float)
209 MinimumLatency = Column(Float)
210 MaximumLatency = Column(Float)
211 AverageLatency = Column(Float)
212 TxFrameCount = Column(Float)
213 RxFrameCount = Column(Float)
214 Duration = Column(Float)
216 MppspGhz = Column(Float)
218 def __init__(self, TestID, AvgFrameSize,
219 OfferedLoad, PercentLoss, Bandwidth,
220 MinimumLatency, MaximumLatency, AverageLatency,
221 TxFrameCount, RxFrameCount, Duration,
222 CPU, MppspGhz, **kwargs):
223 """table of frameloss"""
225 self.AvgFrameSize = AvgFrameSize
226 self.OfferedLoad = OfferedLoad
227 self.PercentLoss = PercentLoss
228 self.Bandwidth = Bandwidth
229 self.MinimumLatency = MinimumLatency
230 self.MaximumLatency = MaximumLatency
231 self.AverageLatency = AverageLatency
232 self.TxFrameCount = TxFrameCount
233 self.RxFrameCount = RxFrameCount
234 self.Duration = Duration
236 self.MppspGhz = MppspGhz
239 return "<User(TestID='%d', AvgFrameSize='%d', OfferedLoad='%f', \
240 PercentLoss='%f', MinimumLatency='%f', AverageLatency='%f', MaximumLatency='%f',\
241 TxFrameCount='%f', RxFrameCount='%f', Duration='%f', CPU='%f', MppspGhz='%f', \
242 Bandwidth='%f')>" % (self.TestID,
243 self.AvgFrameSize, self.OfferedLoad, self.PercentLoss,
244 self.MinimumLatency, self.AverageLatency, self.MaximumLatency,
246 self.RxFrameCount, self.Duration, self.CPU, self.MppspGhz, self.Bandwidth)
249 class TblLatency(Base):
250 __tablename__ = "TblLatency"
251 Index = Column(Integer, primary_key=True)
252 TestID = Column(Integer, ForeignKey('TblTestList.TestID'))
253 AvgFrameSize = Column(Integer)
254 OfferedLoad = Column(Float)
255 MinimumLatency = Column(Float)
256 MaximumLatency = Column(Float)
257 AverageLatency = Column(Float)
259 def __init__(self, TestID, AvgFrameSize, OfferedLoad,
260 MinimumLatency, MaximumLatency, AverageLatency, **kwargs):
261 """table of latency"""
263 self.AvgFrameSize = AvgFrameSize
264 self.OfferedLoad = OfferedLoad
265 self.MinimumLatency = MinimumLatency
266 self.MaximumLatency = MaximumLatency
267 self.AverageLatency = AverageLatency
270 return "<User(TestID='%d', AvgFrameSize='%d', OfferedLoad='%f', \
271 MinimumLatency='%f', AverageLatency='%f', MaximumLatency='%f')>" % (self.TestID,
279 class TblEXTInfo(Base):
280 __tablename__ = "TblEXTInfo"
281 Index = Column(Integer, primary_key=True)
282 TaskID = Column(Integer)
283 EXTName = Column(String(const.NORMAL_VAR_LEN))
284 EXTContent = Column(String(const.DESC_LEN))
285 Description = Column(String(const.NORMAL_VAR_LEN1))
287 def __init__(self, TaskID, EXTName, EXTContent, Description, **kwargs):
288 """table extern info"""
290 self.EXTName = EXTName
291 self.EXTContent = EXTContent
292 self.Description = Description
295 return "<User(TaskID='%d', CodeType='%s', EXTContent='%s',Version='%s')>" % (
296 self.TaskID, self.EXTName, self.EXTContent, self.Version)