JIRA: BOTTLENECKS-29
[bottlenecks.git] / vstf / vstf / controller / database / tables.py
1 ##############################################################################
2 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
3 #
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 ##############################################################################
9
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
13
14 Base = declarative_base()
15
16
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))
23
24     def __init__(self, ScenarioName, FigurePath, Description, **kwargs):
25         """
26         :param ScenarioName: name of the scenario, like Tn
27         :param FigurePath: ??
28         :param Description: desc of scenario table
29         """
30         self.ScenarioName = ScenarioName
31         self.FigurePath = FigurePath
32         self.Description = Description
33
34     def __repr__(self):
35         return "<User(ScenarioName='%s', FigurePath='%s', Description='%s')>" % (
36             self.ScenarioName, self.FigurePath, self.Description)
37
38
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))
50
51     def __init__(self, CaseTag, CaseName,
52                  ScenarioName, FigurePath, Direction, Directiontag,
53                  Configure, Description, **kwargs):
54         """
55         :param CaseID: 
56         :param CaseTag: ??
57         :param CaseName: name of case, like tester-vm
58         :param ScenarioName: name of scenario, like Tn
59         :param FigurePath:
60         :param Direction: the test direction, Tx or Rx
61         :param Configure:
62         :param Description: desc of table case info
63         """
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
73
74     def __repr__(self):
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,
79                                                                       self.Description)
80
81
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))
92
93     def __init__(self, TaskID, HostName, Server, CPU, MEM, NIC, OS, **kwargs):
94         """table of host info
95         """
96         self.TaskID = TaskID
97         self.HostName = HostName
98         self.Server = Server
99         self.CPU = CPU
100         self.MEM = MEM
101         self.NIC = NIC
102         self.OS = OS
103
104     def __repr__(self):
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)
107
108
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))
115
116     def __init__(self, TaskName, Date, EXTInfo="", **kwargs):
117         """Table of task"""
118         self.TaskName = TaskName
119         self.Date = Date
120         self.EXTInfo = EXTInfo
121
122     def __repr__(self):
123         return "<User(TaskID='%s', TaskName='%s', Date='%s', EXTInfo='%s')>" % (
124             self.TaskID, self.TaskName, self.Date, self.EXTInfo)
125
126
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))
137
138     def __init__(self, taskid, casetag, protocol, typ, switch, provider, tools, **kwargs):
139         """Table of test"""
140         self.TaskID = taskid
141         self.CaseTag = casetag
142         self.Protocol = protocol
143         self.Type = typ
144         self.Switch = switch
145         self.Provider = provider
146         self.Tools = tools
147
148     def __repr__(self):
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)
151
152
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)
167     CPU = Column(Float)
168     MppspGhz = Column(Float)
169
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"""
176         self.TestID = TestID
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
187         self.CPU = CPU
188         self.MppspGhz = MppspGhz
189
190     def __repr__(self):
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,
197                                            self.TxFrameCount,
198                                            self.RxFrameCount, self.Duration, self.CPU, self.MppspGhz, self.Bandwidth)
199
200
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)
215     CPU = Column(Float)
216     MppspGhz = Column(Float)
217
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"""
224         self.TestID = TestID
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
235         self.CPU = CPU
236         self.MppspGhz = MppspGhz
237
238     def __repr__(self):
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,
245                                            self.TxFrameCount,
246                                            self.RxFrameCount, self.Duration, self.CPU, self.MppspGhz, self.Bandwidth)
247
248
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)
258
259     def __init__(self, TestID, AvgFrameSize, OfferedLoad,
260                  MinimumLatency, MaximumLatency, AverageLatency, **kwargs):
261         """table of latency"""
262         self.TestID = TestID
263         self.AvgFrameSize = AvgFrameSize
264         self.OfferedLoad = OfferedLoad
265         self.MinimumLatency = MinimumLatency
266         self.MaximumLatency = MaximumLatency
267         self.AverageLatency = AverageLatency
268
269     def __repr__(self):
270         return "<User(TestID='%d', AvgFrameSize='%d', OfferedLoad='%f', \
271                       MinimumLatency='%f', AverageLatency='%f', MaximumLatency='%f')>" % (self.TestID,
272                                                                                           self.AvgFrameSize,
273                                                                                           self.OfferedLoad,
274                                                                                           self.MinimumLatency,
275                                                                                           self.AverageLatency,
276                                                                                           self.MaximumLatency)
277
278
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))
286
287     def __init__(self, TaskID, EXTName, EXTContent, Description, **kwargs):
288         """table extern info"""
289         self.TaskID = TaskID
290         self.EXTName = EXTName
291         self.EXTContent = EXTContent
292         self.Description = Description
293
294     def __repr__(self):
295         return "<User(TaskID='%d', CodeType='%s', EXTContent='%s',Version='%s')>" % (
296             self.TaskID, self.EXTName, self.EXTContent, self.Version)