VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/testmanager/db/TestManagerDatabaseComments.pgsql@ 86647

Last change on this file since 86647 was 83423, checked in by vboxsync, 5 years ago

TestManagerDatabaseComments.pgsql: regenerated

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 44.5 KB
Line 
1-- $Id: TestManagerDatabaseComments.pgsql 83423 2020-03-25 17:17:11Z vboxsync $
2--- @file
3-- Autogenerated from TestManagerDatabaseInit.pgsql. Do not edit!
4--
5
6--
7-- Copyright (C) 2012-2020 Oracle Corporation
8--
9-- This file is part of VirtualBox Open Source Edition (OSE), as
10-- available from http://www.virtualbox.org. This file is free software;
11-- you can redistribute it and/or modify it under the terms of the GNU
12-- General Public License (GPL) as published by the Free Software
13-- Foundation, in version 2 as it comes in the "COPYING" file of the
14-- VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15-- hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16--
17-- The contents of this file may alternatively be used under the terms
18-- of the Common Development and Distribution License Version 1.0
19-- (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20-- VirtualBox OSE distribution, in which case the provisions of the
21-- CDDL are applicable instead of those of the GPL.
22--
23-- You may elect to license modified versions of this file under the
24-- terms and conditions of either the GPL or the CDDL or both.
25--
26
27
28COMMENT ON COLUMN SystemLog.tsCreated IS
29 'When this was logged.';
30
31COMMENT ON COLUMN SystemLog.sEvent IS
32 'The event type.
33This is a 8 character string identifier so that we don''t need to change
34some enum type everytime we introduce a new event type.';
35
36COMMENT ON COLUMN SystemLog.sLogText IS
37 'The log text.';
38
39COMMENT ON TABLE Users IS
40 'Test manager users.
41
42This is mainly for doing simple access checks before permitting access to
43the test manager. This needs to be coordinated with
44apache/ldap/Oracle-Single-Sign-On.
45
46The main purpose, though, is for tracing who changed the test config and
47analysis data.
48
49@remarks This table stores history. Never update or delete anything. The
50 equivalent of deleting is done by setting the ''tsExpire'' field to
51 current_timestamp.';
52
53COMMENT ON COLUMN Users.tsEffective IS
54 'When this row starts taking effect (inclusive).';
55
56COMMENT ON COLUMN Users.tsExpire IS
57 'When this row stops being tsEffective (exclusive).';
58
59COMMENT ON COLUMN Users.uidAuthor IS
60 'The user id of the one who created/modified this entry.
61Non-unique foreign key: Users(uid)';
62
63COMMENT ON COLUMN Users.sUsername IS
64 'User name.';
65
66COMMENT ON COLUMN Users.sEmail IS
67 'The email address of the user.';
68
69COMMENT ON COLUMN Users.sFullName IS
70 'The full name.';
71
72COMMENT ON COLUMN Users.sLoginName IS
73 'The login name used by apache.';
74
75COMMENT ON COLUMN Users.fReadOnly IS
76 'Read access only.';
77
78COMMENT ON TABLE GlobalResources IS
79 'Global resource configuration.
80
81For example an iSCSI target.
82
83@remarks This table stores history. Never update or delete anything. The
84 equivalent of deleting is done by setting the ''tsExpire'' field to
85 current_timestamp.';
86
87COMMENT ON COLUMN GlobalResources.tsEffective IS
88 'When this row starts taking effect (inclusive).';
89
90COMMENT ON COLUMN GlobalResources.tsExpire IS
91 'When this row stops being tsEffective (exclusive).';
92
93COMMENT ON COLUMN GlobalResources.uidAuthor IS
94 'The user id of the one who created/modified this entry.
95Non-unique foreign key: Users(uid)';
96
97COMMENT ON COLUMN GlobalResources.sName IS
98 'The name of the resource.';
99
100COMMENT ON COLUMN GlobalResources.sDescription IS
101 'Optional resource description.';
102
103COMMENT ON COLUMN GlobalResources.fEnabled IS
104 'Indicates whether this resource is currently enabled (online).';
105
106COMMENT ON TABLE BuildSources IS
107 'Build sources.
108
109This is used by a scheduling group to select builds and the default
110Validation Kit from the Builds table.
111
112@remarks This table stores history. Never update or delete anything. The
113 equivalent of deleting is done by setting the ''tsExpire'' field to
114 current_timestamp.
115
116@todo Any better way of representing this so we could more easily
117 join/whatever when searching for builds?';
118
119COMMENT ON COLUMN BuildSources.tsEffective IS
120 'When this row starts taking effect (inclusive).';
121
122COMMENT ON COLUMN BuildSources.tsExpire IS
123 'When this row stops being tsEffective (exclusive).';
124
125COMMENT ON COLUMN BuildSources.uidAuthor IS
126 'The user id of the one who created/modified this entry.
127Non-unique foreign key: Users(uid)';
128
129COMMENT ON COLUMN BuildSources.sName IS
130 'The name of the build source.';
131
132COMMENT ON COLUMN BuildSources.sDescription IS
133 'Description.';
134
135COMMENT ON COLUMN BuildSources.sProduct IS
136 'Which product.
137ASSUME that it is okay to limit a build source to a single product.';
138
139COMMENT ON COLUMN BuildSources.sBranch IS
140 'Which branch.
141ASSUME that it is okay to limit a build source to a branch.';
142
143COMMENT ON COLUMN BuildSources.asTypes IS
144 'Build types to include, all matches if NULL.
145@todo Weighting the types would be nice in a later version.';
146
147COMMENT ON COLUMN BuildSources.asOsArches IS
148 'Array of the ''sOs.sCpuArch'' to match, all matches if NULL.
149See KBUILD_OSES in kBuild for a list of standard target OSes, and
150KBUILD_ARCHES for a list of standard architectures.
151
152@remarks See marks on ''os-agnostic'' and ''noarch'' in BuildCategories.';
153
154COMMENT ON COLUMN BuildSources.iFirstRevision IS
155 'The first subversion tree revision to match, no lower limit if NULL.';
156
157COMMENT ON COLUMN BuildSources.iLastRevision IS
158 'The last subversion tree revision to match, no upper limit if NULL.';
159
160COMMENT ON COLUMN BuildSources.cSecMaxAge IS
161 'The maximum age of the builds in seconds, unlimited if NULL.';
162
163COMMENT ON TABLE TestCases IS
164 'Test case configuration.
165
166@remarks This table stores history. Never update or delete anything. The
167 equivalent of deleting is done by setting the ''tsExpire'' field to
168 current_timestamp.';
169
170COMMENT ON COLUMN TestCases.tsEffective IS
171 'When this row starts taking effect (inclusive).';
172
173COMMENT ON COLUMN TestCases.tsExpire IS
174 'When this row stops being tsEffective (exclusive).';
175
176COMMENT ON COLUMN TestCases.uidAuthor IS
177 'The user id of the one who created/modified this entry.
178Non-unique foreign key: Users(uid)';
179
180COMMENT ON COLUMN TestCases.sName IS
181 'The name of the test case.';
182
183COMMENT ON COLUMN TestCases.sDescription IS
184 'Optional test case description.';
185
186COMMENT ON COLUMN TestCases.fEnabled IS
187 'Indicates whether this test case is currently enabled.';
188
189COMMENT ON COLUMN TestCases.cSecTimeout IS
190 'Default test case timeout given in seconds.';
191
192COMMENT ON COLUMN TestCases.sTestBoxReqExpr IS
193 'Default TestBox requirement expression (python boolean expression).
194All the scheduler properties are available for use with the same names
195as in that table.
196If NULL everything matches.';
197
198COMMENT ON COLUMN TestCases.sBuildReqExpr IS
199 'Default build requirement expression (python boolean expression).
200The following build properties are available: sProduct, sBranch,
201sType, asOsArches, sVersion, iRevision, uidAuthor and idBuild.
202If NULL everything matches.';
203
204COMMENT ON COLUMN TestCases.sBaseCmd IS
205 'The base command.
206String suitable for executing in bourne shell with space as separator
207(IFS). References to @BUILD_BINARIES@ will be replaced WITH the content
208of the Builds(sBinaries) field.';
209
210COMMENT ON COLUMN TestCases.sTestSuiteZips IS
211 'Comma separated list of test suite zips (or tars) that the testbox will
212need to download and expand prior to testing.
213If NULL the current test suite of the scheduling group will be used (the
214scheduling group will have an optional test suite build queue associated
215with it). The current test suite can also be referenced by
216@VALIDATIONKIT_ZIP@ in case more downloads are required. Files may also be
217uploaded to the test manager download area, in which case the
218@DOWNLOAD_BASE_URL@ prefix can be used to refer to this area.';
219
220COMMENT ON TABLE TestCaseArgs IS
221 'Test case argument list variations.
222
223For example, we have a test case that does a set of tests on a virtual
224machine. To get better code/feature coverage of this testcase we wish to
225run it with different guest hardware configuration. The test case may do
226the same stuff, but the guest OS as well as the VMM may react differently to
227the hardware configurations and uncover issues in the VMM, device emulation
228or other places.
229
230Typical hardware variations are:
231 - guest memory size (RAM),
232 - guest video memory size (VRAM),
233 - virtual CPUs / cores / threads,
234 - virtual chipset
235 - virtual network interface card (NIC)
236 - USB 1.1, USB 2.0, no USB
237
238The TM web UI will help the user create a reasonable set of permutations
239of these parameters, the user specifies a maximum and the TM uses certain
240rules together with random selection to generate the desired number. The
241UI will also help suggest fitting testbox requirements according to the
242RAM/VRAM sizes and the virtual CPU counts. The user may then make
243adjustments to the suggestions before commit them.
244
245Alternatively, the user may also enter all the permutations without any
246help from the UI.
247
248Note! All test cases has at least one entry in this table, even if it is
249empty, because testbox requirements are specified thru this.
250
251Querying the valid parameter lists for a testase this way:
252 SELECT * ... WHERE idTestCase = TestCases.idTestCase
253 AND tsExpire > <when>
254 AND tsEffective <= <when>;
255
256Querying the valid parameter list for the latest generation can be
257simplified by just checking tsExpire date:
258 SELECT * ... WHERE idTestCase = TestCases.idTestCase
259 AND tsExpire == TIMESTAMP WITH TIME ZONE ''infinity'';
260
261@remarks This table stores history. Never update or delete anything. The
262 equivalent of deleting is done by setting the ''tsExpire'' field to
263 current_timestamp.';
264
265COMMENT ON COLUMN TestCaseArgs.tsEffective IS
266 'When this row starts taking effect (inclusive).';
267
268COMMENT ON COLUMN TestCaseArgs.tsExpire IS
269 'When this row stops being tsEffective (exclusive).';
270
271COMMENT ON COLUMN TestCaseArgs.uidAuthor IS
272 'The user id of the one who created/modified this entry.
273Non-unique foreign key: Users(uid)';
274
275COMMENT ON COLUMN TestCaseArgs.sArgs IS
276 'The additional arguments.
277String suitable for bourne shell style argument parsing with space as
278separator (IFS). References to @BUILD_BINARIES@ will be replaced with
279the content of the Builds(sBinaries) field.';
280
281COMMENT ON COLUMN TestCaseArgs.cSecTimeout IS
282 'Optional test case timeout given in seconds.
283If NULL, the TestCases.cSecTimeout field is used instead.';
284
285COMMENT ON COLUMN TestCaseArgs.sTestBoxReqExpr IS
286 'Additional TestBox requirement expression (python boolean expression).
287All the scheduler properties are available for use with the same names
288as in that table. This is checked after first checking the requirements
289in the TestCases.sTestBoxReqExpr field.';
290
291COMMENT ON COLUMN TestCaseArgs.sBuildReqExpr IS
292 'Additional build requirement expression (python boolean expression).
293The following build properties are available: sProduct, sBranch,
294sType, asOsArches, sVersion, iRevision, uidAuthor and idBuild. This is
295checked after first checking the requirements in the
296TestCases.sBuildReqExpr field.';
297
298COMMENT ON COLUMN TestCaseArgs.cGangMembers IS
299 'Number of testboxes required (gang scheduling).';
300
301COMMENT ON COLUMN TestCaseArgs.sSubName IS
302 'Optional variation sub-name.';
303
304COMMENT ON INDEX TestCaseArgsLookupIdx IS
305 'The arguments are part of the primary key for several reasons.
306No duplicate argument lists (makes no sense - if you want to prioritize
307argument lists, we add that explicitly). This may hopefully enable us
308to more easily check coverage later on, even when the test case is
309reconfigured with more/less permutations.';
310
311COMMENT ON TABLE TestCaseDeps IS
312 'Test case dependencies (N:M)
313
314This effect build selection. The build must have passed all runs of the
315given prerequisite testcase (idTestCasePreReq) and executed at a minimum one
316argument list variation.
317
318This should also affect scheduling order, if possible at least one
319prerequisite testcase variation should be place before the specific testcase
320in the scheduling queue.
321
322@remarks This table stores history. Never update or delete anything. The
323 equivalent of deleting is done by setting the ''tsExpire'' field to
324 current_timestamp. To select the currently valid entries use
325 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
326
327COMMENT ON COLUMN TestCaseDeps.tsEffective IS
328 'When this row starts taking effect (inclusive).';
329
330COMMENT ON COLUMN TestCaseDeps.tsExpire IS
331 'When this row stops being tsEffective (exclusive).';
332
333COMMENT ON COLUMN TestCaseDeps.uidAuthor IS
334 'The user id of the one who created/modified this entry.
335Non-unique foreign key: Users(uid)';
336
337COMMENT ON TABLE TestCaseGlobalRsrcDeps IS
338 'Test case dependencies on global resources (N:M)
339
340@remarks This table stores history. Never update or delete anything. The
341 equivalent of deleting is done by setting the ''tsExpire'' field to
342 current_timestamp. To select the currently valid entries use
343 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
344
345COMMENT ON COLUMN TestCaseGlobalRsrcDeps.tsEffective IS
346 'When this row starts taking effect (inclusive).';
347
348COMMENT ON COLUMN TestCaseGlobalRsrcDeps.tsExpire IS
349 'When this row stops being tsEffective (exclusive).';
350
351COMMENT ON COLUMN TestCaseGlobalRsrcDeps.uidAuthor IS
352 'The user id of the one who created/modified this entry.
353Non-unique foreign key: Users(uid)';
354
355COMMENT ON TABLE TestGroups IS
356 'Test Group - A collection of test cases.
357
358This is for simplifying test configuration by working with a few groups
359instead of a herd of individual testcases. It may also be used for creating
360test suites for certain areas (like guest additions) or tasks (like
361performance measurements).
362
363A test case can be member of any number of test groups.
364
365@remarks This table stores history. Never update or delete anything. The
366 equivalent of deleting is done by setting the ''tsExpire'' field to
367 current_timestamp. To select the currently valid entries use
368 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
369
370COMMENT ON COLUMN TestGroups.tsEffective IS
371 'When this row starts taking effect (inclusive).';
372
373COMMENT ON COLUMN TestGroups.tsExpire IS
374 'When this row stops being tsEffective (exclusive).';
375
376COMMENT ON COLUMN TestGroups.uidAuthor IS
377 'The user id of the one who created/modified this entry.
378Non-unique foreign key: Users(uid)';
379
380COMMENT ON COLUMN TestGroups.sName IS
381 'The name of the scheduling group.';
382
383COMMENT ON COLUMN TestGroups.sDescription IS
384 'Optional group description.';
385
386COMMENT ON TABLE TestGroupMembers IS
387 'The N:M relationship between test case configurations and test groups.
388
389@remarks This table stores history. Never update or delete anything. The
390 equivalent of deleting is done by setting the ''tsExpire'' field to
391 current_timestamp. To select the currently valid entries use
392 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
393
394COMMENT ON COLUMN TestGroupMembers.tsEffective IS
395 'When this row starts taking effect (inclusive).';
396
397COMMENT ON COLUMN TestGroupMembers.tsExpire IS
398 'When this row stops being tsEffective (exclusive).';
399
400COMMENT ON COLUMN TestGroupMembers.uidAuthor IS
401 'The user id of the one who created/modified this entry.
402Non-unique foreign key: Users(uid)';
403
404COMMENT ON COLUMN TestGroupMembers.iSchedPriority IS
405 'Test case scheduling priority.
406Higher number causes the test case to be run more frequently.
407@sa SchedGroupMembers.iSchedPriority, TestBoxesInSchedGroups.iSchedPriority
408@todo Not sure we want to keep this...';
409
410COMMENT ON TABLE SchedGroups IS
411 'Scheduling group (aka. testbox partitioning) configuration.
412
413A testbox is associated with exactly one scheduling group. This association
414can be changed, of course. If we (want to) retire a group which still has
415testboxes associated with it, these will be moved to the ''default'' group.
416
417The TM web UI will make sure that a testbox is always in a group and that
418the default group cannot be deleted.
419
420A scheduling group combines several things:
421 - A selection of builds to test (via idBuildSrc).
422 - A collection of test groups to test with (via SchedGroupMembers).
423 - A set of testboxes to test on (via TestBoxes.idSchedGroup).
424
425In additions there is an optional source of fresh test suite builds (think
426VBoxTestSuite) as well as scheduling options.
427
428@remarks This table stores history. Never update or delete anything. The
429 equivalent of deleting is done by setting the ''tsExpire'' field to
430 current_timestamp. To select the currently valid entries use
431 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
432
433COMMENT ON COLUMN SchedGroups.tsEffective IS
434 'When this row starts taking effect (inclusive).';
435
436COMMENT ON COLUMN SchedGroups.tsExpire IS
437 'When this row stops being tsEffective (exclusive).';
438
439COMMENT ON COLUMN SchedGroups.uidAuthor IS
440 'The user id of the one who created/modified this entry.
441Non-unique foreign key: Users(uid)
442@note This is NULL for the default group.';
443
444COMMENT ON COLUMN SchedGroups.sName IS
445 'The name of the scheduling group.';
446
447COMMENT ON COLUMN SchedGroups.sDescription IS
448 'Optional group description.';
449
450COMMENT ON COLUMN SchedGroups.fEnabled IS
451 'Indicates whether this group is currently enabled.';
452
453COMMENT ON COLUMN SchedGroups.enmScheduler IS
454 'The scheduler to use.
455This is for when we later desire different scheduling that the best
456effort stuff provided by the initial implementation.';
457
458COMMENT ON COLUMN SchedGroups.sComment IS
459 'The Validation Kit build source (@VALIDATIONKIT_ZIP@).
460Non-unique foreign key: BuildSources(idBuildSrc)';
461
462COMMENT ON TABLE SchedGroupMembers IS
463 'N:M relationship between scheduling groups and test groups.
464
465Several scheduling parameters are associated with this relationship.
466
467The test group dependency (idTestGroupPreReq) can be used in the same way as
468TestCaseDeps.idTestCasePreReq, only here on test group level. This means it
469affects the build selection. The builds needs to have passed all test runs
470the prerequisite test group and done at least one argument variation of each
471test case in it.
472
473@remarks This table stores history. Never update or delete anything. The
474 equivalent of deleting is done by setting the ''tsExpire'' field to
475 current_timestamp. To select the currently valid entries use
476 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
477
478COMMENT ON COLUMN SchedGroupMembers.tsEffective IS
479 'When this row starts taking effect (inclusive).';
480
481COMMENT ON COLUMN SchedGroupMembers.tsExpire IS
482 'When this row stops being tsEffective (exclusive).';
483
484COMMENT ON COLUMN SchedGroupMembers.uidAuthor IS
485 'The user id of the one who created/modified this entry.
486Non-unique foreign key: Users(uid)';
487
488COMMENT ON COLUMN SchedGroupMembers.iSchedPriority IS
489 'The scheduling priority of the test group.
490Higher number causes the test case to be run more frequently.
491@sa TestGroupMembers.iSchedPriority, TestBoxesInSchedGroups.iSchedPriority';
492
493COMMENT ON COLUMN SchedGroupMembers.bmHourlySchedule IS
494 'When during the week this group is allowed to start running, NULL means
495there are no constraints.
496Each bit in the bitstring represents one hour, with bit 0 indicating the
497midnight hour on a monday.';
498
499COMMENT ON TABLE TestBoxStrTab IS
500 'String table for the test boxes.
501
502This is a string cache for all string members in TestBoxes except the name.
503The rational is to avoid duplicating large strings like sReport when the
504testbox reports a new cMbScratch value or the box when the test sheriff
505sends a reboot command or similar.
506
507At the time this table was introduced, we had 400558 TestBoxes rows, where
508the SUM(LENGTH(sReport)) was 993MB. There were really just 1066 distinct
509sReport values, with a total length of 0x3 MB.
510
511Nothing is ever deleted from this table.
512
513@note Should use a stored procedure to query/insert a string.
514
515
516TestBox stats prior to conversion:
517 SELECT COUNT(*) FROM TestBoxes: 400558 rows
518 SELECT pg_total_relation_size(''TestBoxes''): 740794368 bytes (706 MB)
519 Average row cost: 740794368 / 400558 = 1849 bytes/row
520
521After conversion:
522 SELECT COUNT(*) FROM TestBoxes: 400558 rows
523 SELECT pg_total_relation_size(''TestBoxes''): 144375808 bytes (138 MB)
524 SELECT COUNT(idStr) FROM TestBoxStrTab: 1292 rows
525 SELECT pg_total_relation_size(''TestBoxStrTab''): 5709824 bytes (5.5 MB)
526 (144375808 + 5709824) / 740794368 = 20 %
527 Average row cost boxes: 144375808 / 400558 = 360 bytes/row
528 Average row cost strings: 5709824 / 1292 = 4420 bytes/row';
529
530COMMENT ON COLUMN TestBoxStrTab.sValue IS
531 'The string value.';
532
533COMMENT ON COLUMN TestBoxStrTab.tsCreated IS
534 'Creation time stamp.';
535
536COMMENT ON TYPE TestBoxCmd_T IS
537 'Testbox commands.';
538
539COMMENT ON TYPE LomKind_T IS
540 'The kind of lights out management on a testbox.';
541
542COMMENT ON TABLE TestBoxes IS
543 'Testbox configurations.
544
545The testboxes are identified by IP and the system UUID if available. Should
546the IP change, the testbox will be refused at sign on and the testbox
547sheriff will have to update it''s IP.
548
549@todo Implement the UUID stuff. Get it from DMI, UEFI or whereever.
550 Mismatching needs to be logged somewhere...
551
552To query the currently valid configuration:
553 SELECT ... WHERE id = idTestBox AND tsExpire = TIMESTAMP WITH TIME ZONE ''infinity'';
554
555@remarks This table stores history. Never update or delete anything. The
556 equivalent of deleting is done by setting the ''tsExpire'' field to
557 current_timestamp. To select the currently valid entries use
558 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
559
560COMMENT ON COLUMN TestBoxes.tsEffective IS
561 'When this row starts taking effect (inclusive).';
562
563COMMENT ON COLUMN TestBoxes.tsExpire IS
564 'When this row stops being tsEffective (exclusive).';
565
566COMMENT ON COLUMN TestBoxes.uidAuthor IS
567 'The user id of the one who created/modified this entry.
568When modified automatically by the testbox, NULL is used.
569Non-unique foreign key: Users(uid)';
570
571COMMENT ON COLUMN TestBoxes.uuidSystem IS
572 'The system or firmware UUID.
573This uniquely identifies the testbox when talking to the server. After
574SIGNON though, the testbox will also provide idTestBox and ip to
575establish its identity beyond doubt.';
576
577COMMENT ON COLUMN TestBoxes.sName IS
578 'The testbox name.
579Usually similar to the DNS name.';
580
581COMMENT ON COLUMN TestBoxes.fEnabled IS
582 'Indicates whether this testbox is enabled.
583A testbox gets disabled when we''re doing maintenance, debugging a issue
584that happens only on that testbox, or some similar stuff. This is an
585alternative to deleting the testbox.';
586
587COMMENT ON COLUMN TestBoxes.enmLomKind IS
588 'The kind of lights-out-management.';
589
590COMMENT ON COLUMN TestBoxes.lCpuRevision IS
591 'Number identifying the CPU family/model/stepping/whatever.
592For x86 and AMD64 type CPUs, this will on the following format:
593 (EffFamily << 24) | (EffModel << 8) | Stepping.';
594
595COMMENT ON COLUMN TestBoxes.cCpus IS
596 'Number of CPUs, CPU cores and CPU threads.';
597
598COMMENT ON COLUMN TestBoxes.fCpuHwVirt IS
599 'Set if capable of hardware virtualization.';
600
601COMMENT ON COLUMN TestBoxes.fCpuNestedPaging IS
602 'Set if capable of nested paging.';
603
604COMMENT ON COLUMN TestBoxes.fCpu64BitGuest IS
605 'Set if CPU capable of 64-bit (VBox) guests.';
606
607COMMENT ON COLUMN TestBoxes.fChipsetIoMmu IS
608 'Set if chipset with usable IOMMU (VT-d / AMD-Vi).';
609
610COMMENT ON COLUMN TestBoxes.fRawMode IS
611 'Set if the test box does raw-mode tests.';
612
613COMMENT ON COLUMN TestBoxes.cMbMemory IS
614 'The (approximate) memory size in megabytes (rounded down to nearest 4 MB).';
615
616COMMENT ON COLUMN TestBoxes.cMbScratch IS
617 'The amount of scratch space in megabytes (rounded down to nearest 64 MB).';
618
619COMMENT ON COLUMN TestBoxes.iTestBoxScriptRev IS
620 'The testbox script revision number, serves the purpose of a version number.
621Probably good to have when scheduling upgrades as well for status purposes.';
622
623COMMENT ON COLUMN TestBoxes.iPythonHexVersion IS
624 'The python sys.hexversion (layed out as of 2.7).
625Good to know which python versions we need to support.';
626
627COMMENT ON COLUMN TestBoxes.enmPendingCmd IS
628 'Pending command.
629@note We put it here instead of in TestBoxStatuses to get history.';
630
631COMMENT ON INDEX TestBoxesUuidIdx IS
632 'Nested paging requires hardware virtualization.';
633
634COMMENT ON TABLE TestBoxesInSchedGroups IS
635 'N:M relationship between test boxes and scheduling groups.
636
637We associate a priority with this relationship.
638
639@remarks This table stores history. Never update or delete anything. The
640 equivalent of deleting is done by setting the ''tsExpire'' field to
641 current_timestamp. To select the currently valid entries use
642 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
643
644COMMENT ON COLUMN TestBoxesInSchedGroups.tsEffective IS
645 'When this row starts taking effect (inclusive).';
646
647COMMENT ON COLUMN TestBoxesInSchedGroups.tsExpire IS
648 'When this row stops being tsEffective (exclusive).';
649
650COMMENT ON COLUMN TestBoxesInSchedGroups.uidAuthor IS
651 'The user id of the one who created/modified this entry.
652Non-unique foreign key: Users(uid)';
653
654COMMENT ON COLUMN TestBoxesInSchedGroups.iSchedPriority IS
655 'The scheduling priority of the scheduling group for the test box.
656Higher number causes the scheduling group to be serviced more frequently.
657@sa TestGroupMembers.iSchedPriority, SchedGroups.iSchedPriority';
658
659COMMENT ON TABLE FailureCategories IS
660 'Failure categories.
661
662This is for organizing the failure reasons.
663
664@remarks This table stores history. Never update or delete anything. The
665 equivalent of deleting is done by setting the ''tsExpire'' field to
666 current_timestamp. To select the currently valid entries use
667 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
668
669COMMENT ON COLUMN FailureCategories.tsEffective IS
670 'When this row starts taking effect (inclusive).';
671
672COMMENT ON COLUMN FailureCategories.tsExpire IS
673 'When this row stops being tsEffective (exclusive).';
674
675COMMENT ON COLUMN FailureCategories.uidAuthor IS
676 'The user id of the one who created/modified this entry.
677Non-unique foreign key: Users(uid)';
678
679COMMENT ON COLUMN FailureCategories.sShort IS
680 'The short category description.
681For combo boxes and other selection lists.';
682
683COMMENT ON COLUMN FailureCategories.sFull IS
684 'Full description
685For cursor-over-poppups for instance.';
686
687COMMENT ON TABLE FailureReasons IS
688 'Failure reasons.
689
690When analysing a test failure, the testbox sheriff will try assign a fitting
691reason for the failure. This table is here to help the sheriff in his/hers
692job as well as developers looking checking if their changes affected the
693test results in any way.
694
695@remarks This table stores history. Never update or delete anything. The
696 equivalent of deleting is done by setting the ''tsExpire'' field to
697 current_timestamp. To select the currently valid entries use
698 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
699
700COMMENT ON COLUMN FailureReasons.tsEffective IS
701 'When this row starts taking effect (inclusive).';
702
703COMMENT ON COLUMN FailureReasons.tsExpire IS
704 'When this row stops being tsEffective (exclusive).';
705
706COMMENT ON COLUMN FailureReasons.uidAuthor IS
707 'The user id of the one who created/modified this entry.
708Non-unique foreign key: Users(uid)';
709
710COMMENT ON COLUMN FailureReasons.sShort IS
711 'The short failure description.
712For combo boxes and other selection lists.';
713
714COMMENT ON COLUMN FailureReasons.sFull IS
715 'Full failure description.';
716
717COMMENT ON COLUMN FailureReasons.iTicket IS
718 'Ticket number in the primary bugtracker.';
719
720COMMENT ON COLUMN FailureReasons.asUrls IS
721 'Other URLs to reports or discussions of the observed symptoms.';
722
723COMMENT ON TABLE TestResultFailures IS
724 'This is for tracking/discussing test result failures.
725
726The rational for putting this is a separate table is that we need history on
727this while TestResults does not.
728
729@remarks This table stores history. Never update or delete anything. The
730 equivalent of deleting is done by setting the ''tsExpire'' field to
731 current_timestamp. To select the currently valid entries use
732 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
733
734COMMENT ON COLUMN TestResultFailures.tsEffective IS
735 'When this row starts taking effect (inclusive).';
736
737COMMENT ON COLUMN TestResultFailures.tsExpire IS
738 'When this row stops being tsEffective (exclusive).';
739
740COMMENT ON COLUMN TestResultFailures.uidAuthor IS
741 'The user id of the one who created/modified this entry.
742Non-unique foreign key: Users(uid)';
743
744COMMENT ON COLUMN TestResultFailures.sComment IS
745 'Optional comment.';
746
747COMMENT ON TABLE BuildBlacklist IS
748 'Table used to blacklist sets of builds.
749
750The best usage example is a VMM developer realizing that a change causes the
751host to panic, hang, or otherwise misbehave. To prevent the testbox sheriff
752from repeatedly having to reboot testboxes, the builds gets blacklisted
753until there is a working build again. This may mean adding an open ended
754blacklist spec and then updating it with the final revision number once the
755fix has been committed.
756
757@remarks This table stores history. Never update or delete anything. The
758 equivalent of deleting is done by setting the ''tsExpire'' field to
759 current_timestamp. To select the currently valid entries use
760 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.
761
762@todo Would be nice if we could replace the text strings below with a set of
763 BuildCategories, or sore it in any other way which would enable us to
764 do a negative join with build category... The way it is specified
765 now, it looks like we have to open a cursor of prospecitve builds and
766 filter then thru this table one by one.
767
768 Any better representation is welcome, but this is low prioirty for
769 now, as it''s relatively easy to change this later one.';
770
771COMMENT ON COLUMN BuildBlacklist.tsEffective IS
772 'When this row starts taking effect (inclusive).';
773
774COMMENT ON COLUMN BuildBlacklist.tsExpire IS
775 'When this row stops being tsEffective (exclusive).';
776
777COMMENT ON COLUMN BuildBlacklist.uidAuthor IS
778 'The user id of the one who created/modified this entry.
779Non-unique foreign key: Users(uid)';
780
781COMMENT ON COLUMN BuildBlacklist.sProduct IS
782 'Which product.
783ASSUME that it is okay to limit a blacklisting to a single product.';
784
785COMMENT ON COLUMN BuildBlacklist.sBranch IS
786 'Which branch.
787ASSUME that it is okay to limit a blacklisting to a branch.';
788
789COMMENT ON COLUMN BuildBlacklist.asTypes IS
790 'Build types to include, all matches if NULL.';
791
792COMMENT ON COLUMN BuildBlacklist.asOsArches IS
793 'Array of the ''sOs.sCpuArch'' to match, all matches if NULL.
794See KBUILD_OSES in kBuild for a list of standard target OSes, and
795KBUILD_ARCHES for a list of standard architectures.
796
797@remarks See marks on ''os-agnostic'' and ''noarch'' in BuildCategories.';
798
799COMMENT ON COLUMN BuildBlacklist.iFirstRevision IS
800 'The first subversion tree revision to blacklist.';
801
802COMMENT ON COLUMN BuildBlacklist.iLastRevision IS
803 'The last subversion tree revision to blacklist, no upper limit if NULL.';
804
805COMMENT ON TABLE BuildCategories IS
806 'Build categories.
807
808The purpose of this table is saving space in the Builds table and hopefully
809speed things up when selecting builds as well (compared to selecting on 4
810text fields in the much larger Builds table).
811
812Insert only table, no update, no delete. History is not needed.';
813
814COMMENT ON COLUMN BuildCategories.sProduct IS
815 'Product.
816The product name. For instance ''VBox'' or ''VBoxTestSuite''.';
817
818COMMENT ON COLUMN BuildCategories.sRepository IS
819 'The version control repository name.';
820
821COMMENT ON COLUMN BuildCategories.sBranch IS
822 'The branch name (in the version control system).';
823
824COMMENT ON COLUMN BuildCategories.sType IS
825 'The build type.
826See KBUILD_BLD_TYPES in kBuild for a list of standard build types.';
827
828COMMENT ON COLUMN BuildCategories.asOsArches IS
829 'Array of the ''sOs.sCpuArch'' supported by the build.
830See KBUILD_OSES in kBuild for a list of standard target OSes, and
831KBUILD_ARCHES for a list of standard architectures.
832
833@remarks ''os-agnostic'' is used if the build doesn''t really target any
834 specific OS or if it targets all applicable OSes.
835 ''noarch'' is used if the build is architecture independent or if
836 all applicable architectures are handled.
837 Thus, ''os-agnostic.noarch'' will run on all build boxes.
838
839@note The array shall be sorted ascendingly to prevent unnecessary duplicates!';
840
841COMMENT ON TABLE Builds IS
842 'The builds table contains builds from the tinderboxes and oaccasionally from
843developers.
844
845The tinderbox side could be fed by a batch job enumerating the build output
846directories every so often, looking for new builds. Or we could query them
847from the tinderbox database. Yet another alternative is making the
848tinderbox server or client side software inform us about all new builds.
849
850The developer builds are entered manually thru the TM web UI. They are used
851for subjecting new code to some larger scale testing before commiting,
852enabling, or merging a private branch.
853
854The builds are being selected from this table by the via the build source
855specification that SchedGroups.idBuildSrc and
856SchedGroups.idBuildSrcTestSuite links to.
857
858@remarks This table stores history. Never update or delete anything. The
859 equivalent of deleting is done by setting the ''tsExpire'' field to
860 current_timestamp. To select the currently valid entries use
861 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
862
863COMMENT ON COLUMN Builds.tsCreated IS
864 'When this build was created or entered into the database.
865This remains unchanged';
866
867COMMENT ON COLUMN Builds.tsEffective IS
868 'When this row starts taking effect (inclusive).';
869
870COMMENT ON COLUMN Builds.tsExpire IS
871 'When this row stops being tsEffective (exclusive).';
872
873COMMENT ON COLUMN Builds.uidAuthor IS
874 'The user id of the one who created/modified this entry.
875Non-unique foreign key: Users(uid)
876@note This is NULL if added by a batch job / tinderbox.';
877
878COMMENT ON COLUMN Builds.iRevision IS
879 'The subversion tree revision of the build.';
880
881COMMENT ON COLUMN Builds.sVersion IS
882 'The product version number (suitable for RTStrVersionCompare).';
883
884COMMENT ON COLUMN Builds.sLogUrl IS
885 'The link to the tinderbox log of this build.';
886
887COMMENT ON COLUMN Builds.sBinaries IS
888 'Comma separated list of binaries.
889The binaries have paths relative to the TESTBOX_PATH_BUILDS or full URLs.';
890
891COMMENT ON COLUMN Builds.fBinariesDeleted IS
892 'Set when the binaries gets deleted by the build quota script.';
893
894COMMENT ON TABLE VcsRevisions IS
895 'This table is for translating build revisions into commit details.
896
897For graphs and test results, it would be useful to translate revisions into
898dates and maybe provide commit message and the committer.
899
900Data is entered exclusively thru one or more batch jobs, so no internal
901authorship needed. Also, since we''re mirroring data from external sources
902here, the batch job is allowed to update/replace existing records.
903
904@todo We we could collect more info from the version control systems, if we
905 believe it''s useful and can be presented in a reasonable manner.
906 Getting a list of affected files would be simple (requires
907 a separate table with a M:1 relationship to this table), or try
908 associate a commit to a branch.';
909
910COMMENT ON COLUMN VcsRevisions.sRepository IS
911 'The version control tree name.';
912
913COMMENT ON COLUMN VcsRevisions.iRevision IS
914 'The version control tree revision number.';
915
916COMMENT ON COLUMN VcsRevisions.tsCreated IS
917 'When the revision was created (committed).';
918
919COMMENT ON COLUMN VcsRevisions.sAuthor IS
920 'The name of the committer.
921@note Not to be confused with uidAuthor and test manager users.';
922
923COMMENT ON COLUMN VcsRevisions.sMessage IS
924 'The commit message.';
925
926COMMENT ON TABLE TestResultStrTab IS
927 'String table for the test results.
928
929This is a string cache for value names, test names and possible more, that
930is frequently repated in the test results record for each test run. The
931purpose is not only to save space, but to make datamining queries faster by
932giving them integer fields to work on instead of text fields. There may
933possibly be some benefits on INSERT as well as there are only integer
934indexes.
935
936Nothing is ever deleted from this table.
937
938@note Should use a stored procedure to query/insert a string.';
939
940COMMENT ON COLUMN TestResultStrTab.sValue IS
941 'The string value.';
942
943COMMENT ON COLUMN TestResultStrTab.tsCreated IS
944 'Creation time stamp.';
945
946COMMENT ON TYPE TestStatus_T IS
947 'The status of a test (set / result).';
948
949COMMENT ON TABLE TestResults IS
950 'Test results - a recursive bundle of joy!
951
952A test case will be created when the testdriver calls reporter.testStart and
953concluded with reporter.testDone. The testdriver (or it subordinates) can
954use these methods to create nested test results. For IPRT based test cases,
955RTTestCreate, RTTestInitAndCreate and RTTestSub will both create new test
956result records, where as RTTestSubDone, RTTestSummaryAndDestroy and
957RTTestDestroy will conclude records.
958
959By concluding is meant updating the status. When the test driver reports
960success, we check it against reported results. (paranoia strikes again!)
961
962Nothing is ever deleted from this table.
963
964@note As seen below, several other tables associate data with a
965 test result, and the top most test result is referenced by the
966 test set.';
967
968COMMENT ON COLUMN TestResults.tsCreated IS
969 'Creation time stamp. This may also be the timestamp of when the test started.';
970
971COMMENT ON COLUMN TestResults.tsElapsed IS
972 'The elapsed time for this test.
973This is either reported by the directly (with some sanity checking) or
974calculated (current_timestamp - created_ts).
975@todo maybe use a nanosecond field here, check with what';
976
977COMMENT ON COLUMN TestResults.cErrors IS
978 'The error count.';
979
980COMMENT ON COLUMN TestResults.enmStatus IS
981 'The test status.';
982
983COMMENT ON COLUMN TestResults.iNestingDepth IS
984 'Nesting depth.';
985
986COMMENT ON TABLE TestResultValues IS
987 'Test result values.
988
989A testdriver or subordinate may report a test value via
990reporter.testValue(), while IPRT based test will use RTTestValue and
991associates.
992
993This is an insert only table, no deletes, no updates.';
994
995COMMENT ON COLUMN TestResultValues.tsCreated IS
996 'Creation time stamp.';
997
998COMMENT ON COLUMN TestResultValues.lValue IS
999 'The value.';
1000
1001COMMENT ON COLUMN TestResultValues.iUnit IS
1002 'The unit.
1003@todo This is currently not defined properly. Will fix/correlate this
1004 with the other places we use unit (IPRT/testdriver/VMMDev).';
1005
1006COMMENT ON TABLE TestResultFiles IS
1007 'Test result files.
1008
1009A testdriver or subordinate may report a file by using
1010reporter.addFile() or reporter.addLogFile().
1011
1012The files stored here as well as the primary log file will be processed by a
1013batch job and compressed if considered compressable. Thus, TM will look for
1014files with a .gz/.bz2 suffix first and then without a suffix.
1015
1016This is an insert only table, no deletes, no updates.';
1017
1018COMMENT ON COLUMN TestResultFiles.tsCreated IS
1019 'Creation time stamp.';
1020
1021COMMENT ON INDEX TestResultFilesIdx IS
1022 'The mime type for the file.
1023For instance: ''text/plain'',
1024 ''image/png'',
1025 ''video/webm'',
1026 ''text/xml''';
1027
1028COMMENT ON TABLE TestResultMsgs IS
1029 'Test result message.
1030
1031A testdriver or subordinate may report a message via the sDetails parameter
1032of the reporter.testFailure() method, while IPRT test cases will use
1033RTTestFailed, RTTestPrintf and their friends. For RTTestPrintf, we will
1034ignore the more verbose message levels since these can also be found in one
1035of the logs.
1036
1037This is an insert only table, no deletes, no updates.';
1038
1039COMMENT ON COLUMN TestResultMsgs.tsCreated IS
1040 'Creation time stamp.';
1041
1042COMMENT ON COLUMN TestResultMsgs.enmLevel IS
1043 'The message level.';
1044
1045COMMENT ON TABLE TestSets IS
1046 'Test sets / Test case runs.
1047
1048This is where we collect data about test runs.
1049
1050@todo Not entirely sure where the ''test set'' term came from. Consider
1051 finding something more appropriate.';
1052
1053COMMENT ON COLUMN TestSets.tsConfig IS
1054 'The test config timestamp, used when reading test config.';
1055
1056COMMENT ON COLUMN TestSets.tsCreated IS
1057 'When this test set was scheduled.
1058idGenTestBox is valid at this point.';
1059
1060COMMENT ON COLUMN TestSets.tsDone IS
1061 'When this test completed, i.e. testing stopped. This should only be set once.';
1062
1063COMMENT ON COLUMN TestSets.enmStatus IS
1064 'The current status.';
1065
1066COMMENT ON COLUMN TestSets.sBaseFilename IS
1067 'The base filename used for storing files related to this test set.
1068This is a path relative to wherever TM is dumping log files. In order
1069to not become a file system test case, we will try not to put too many
1070hundred thousand files in a directory. A simple first approach would
1071be to just use the current date (tsCreated) like this:
1072 TM_FILE_DIR/year/month/day/TestSets.idTestSet
1073
1074The primary log file for the test is this name suffixed by ''.log''.
1075
1076The files in the testresultfile table gets their full names like this:
1077 TM_FILE_DIR/sBaseFilename-testresultfile.id-TestResultStrTab(testresultfile.idStrFilename)
1078
1079@remarks We store this explicitly in case we change the directly layout
1080 at some later point.';
1081
1082COMMENT ON COLUMN TestSets.iGangMemberNo IS
1083 'The gang member number number, 0 is the leader.';
1084
1085COMMENT ON INDEX TestSetsGangIdx IS
1086 'The test set of the gang leader, NULL if no gang involved.
1087@note This is set by the gang leader as well, so that we can find all
1088 gang members by WHERE idTestSetGangLeader = :id.';
1089
1090COMMENT ON INDEX TestSetsDoneCreatedBuildCatIdx IS
1091 'The TestSetsDoneCreatedBuildCatIdx is for testbox results, graph options and such.';
1092
1093COMMENT ON INDEX TestSetsGraphBoxIdx IS
1094 'For graphs.';
1095
1096COMMENT ON TYPE TestBoxState_T IS
1097 'TestBox state.
1098
1099@todo Consider drawing a state diagram for this.';
1100
1101COMMENT ON TABLE TestBoxStatuses IS
1102 'Testbox status table.
1103
1104History is not planned on this table.';
1105
1106COMMENT ON COLUMN TestBoxStatuses.tsUpdated IS
1107 'When this status was last updated.
1108This is updated everytime the testbox talks to the test manager, thus it
1109can easily be used to find testboxes which has stopped responding.
1110
1111This is used for timeout calculation during gang-gathering, so in that
1112scenario it won''t be updated until the gang is gathered or we time out.';
1113
1114COMMENT ON COLUMN TestBoxStatuses.enmState IS
1115 'The current state.';
1116
1117COMMENT ON COLUMN TestBoxStatuses.iWorkItem IS
1118 'Interal work item number.
1119This is used to pick and prioritize between multiple scheduling groups.';
1120
1121COMMENT ON TABLE GlobalResourceStatuses IS
1122 'Global resource status, tracks which test set resources are allocated by.
1123
1124History is not planned on this table.';
1125
1126COMMENT ON COLUMN GlobalResourceStatuses.tsAllocated IS
1127 'When the allocation took place.';
1128
1129COMMENT ON TABLE SchedQueues IS
1130 'Scheduler queue.
1131
1132The queues are currently associated with a scheduling group, it could
1133alternative be changed to hook on to a testbox instead. It depends on what
1134kind of scheduling method we prefer. The former method aims at test case
1135thruput, making sacrifices in the hardware distribution area. The latter is
1136more like the old buildbox style testing, making sure that each test case is
1137executed on each testbox.
1138
1139When there are configuration changes, TM will regenerate the scheduling
1140queue for the affected scheduling groups. We do not concern ourselves with
1141trying to continue at the approximately same queue position, we simply take
1142it from the top.
1143
1144When a testbox ask for work, we will open a cursor on the queue and take the
1145first test in the queue that can be executed on that testbox. The test will
1146be moved to the end of the queue (getting a new item_id).
1147
1148If a test is manually changed to the head of the queue, the item will get a
1149item_id which is 1 lower than the head of the queue. Unless someone does
1150this a couple of billion times, we shouldn''t have any trouble running out of
1151number space. :-)
1152
1153Manually moving a test to the end of the queue is easy, just get a new
1154''item_id''.
1155
1156History is not planned on this table.';
1157
1158COMMENT ON COLUMN SchedQueues.bmHourlySchedule IS
1159 'The scheduling time constraints (see SchedGroupMembers.bmHourlySchedule).';
1160
1161COMMENT ON COLUMN SchedQueues.tsConfig IS
1162 'When the queue entry was created and for which config is valid.
1163This is the timestamp that should be used when reading config info.';
1164
1165COMMENT ON COLUMN SchedQueues.tsLastScheduled IS
1166 'When this status was last scheduled.
1167This is set to current_timestamp when moving the entry to the end of the
1168queue. It''s initial value is unix-epoch. Not entirely sure if it''s
1169useful beyond introspection and non-unique foreign key hacking.';
1170
1171COMMENT ON COLUMN SchedQueues.cMissingGangMembers IS
1172 'The number of gang members still missing.
1173
1174This saves calculating the number of missing members via selects like:
1175 SELECT COUNT(*) FROM TestSets WHERE idTestSetGangLeader = :idGang;
1176and
1177 SELECT cGangMembers FROM TestCaseArgs WHERE idGenTestCaseArgs = :idTest;
1178to figure out whether to remain in ''gather-gang''::TestBoxState_T.';
1179
1180COMMENT ON INDEX SchedQueuesItemIdx IS
1181 'The number of times this has been considered for scheduling.
1182cConsidered SMALLINT DEFAULT 0 NOT NULL,';
1183
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette