VirtualBox

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

最後變更 在這個檔案從64948是 64948,由 vboxsync 提交於 8 年 前

partial-db-dump.py: fix

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

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