VirtualBox

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

最後變更 在這個檔案從63201是 61473,由 vboxsync 提交於 9 年 前

regen comment.

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 42.1 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
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 if the test group.
546Higher number causes the test case to be run more frequently.
547@sa TestGroupMembers.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 FailureCategories IS
719 'Failure categories.
720
721This is for organizing the failure reasons.
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 FailureCategories.tsEffective IS
730 'When this row starts taking effect (inclusive).';
731
732
733COMMENT ON COLUMN FailureCategories.tsExpire IS
734 'When this row stops being tsEffective (exclusive).';
735
736
737COMMENT ON COLUMN FailureCategories.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 FailureCategories.sShort IS
743 'The short category description.
744For combo boxes and other selection lists.';
745
746
747COMMENT ON COLUMN FailureCategories.sFull IS
748 'Full description
749For cursor-over-poppups for instance.';
750
751
752COMMENT ON TABLE FailureReasons IS
753 'Failure reasons.
754
755When analysing a test failure, the testbox sheriff will try assign a fitting
756reason for the failure. This table is here to help the sheriff in his/hers
757job as well as developers looking checking if their changes affected the
758test results in any way.
759
760@remarks This table stores history. Never update or delete anything. The
761 equivalent of deleting is done by setting the ''tsExpire'' field to
762 current_timestamp. To select the currently valid entries use
763 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
764
765
766COMMENT ON COLUMN FailureReasons.tsEffective IS
767 'When this row starts taking effect (inclusive).';
768
769
770COMMENT ON COLUMN FailureReasons.tsExpire IS
771 'When this row stops being tsEffective (exclusive).';
772
773
774COMMENT ON COLUMN FailureReasons.uidAuthor IS
775 'The user id of the one who created/modified this entry.
776Non-unique foreign key: Users(uid)';
777
778
779COMMENT ON COLUMN FailureReasons.sShort IS
780 'The short failure description.
781For combo boxes and other selection lists.';
782
783
784COMMENT ON COLUMN FailureReasons.sFull IS
785 'Full failure description.';
786
787
788COMMENT ON COLUMN FailureReasons.iTicket IS
789 'Ticket number in the primary bugtracker.';
790
791
792COMMENT ON COLUMN FailureReasons.asUrls IS
793 'Other URLs to reports or discussions of the observed symptoms.';
794
795
796COMMENT ON TABLE TestResultFailures IS
797 'This is for tracking/discussing test result failures.
798
799The rational for putting this is a separate table is that we need history on
800this while TestResults does not.
801
802@remarks This table stores history. Never update or delete anything. The
803 equivalent of deleting is done by setting the ''tsExpire'' field to
804 current_timestamp. To select the currently valid entries use
805 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
806
807
808COMMENT ON COLUMN TestResultFailures.tsEffective IS
809 'When this row starts taking effect (inclusive).';
810
811
812COMMENT ON COLUMN TestResultFailures.tsExpire IS
813 'When this row stops being tsEffective (exclusive).';
814
815
816COMMENT ON COLUMN TestResultFailures.uidAuthor IS
817 'The user id of the one who created/modified this entry.
818Non-unique foreign key: Users(uid)';
819
820
821COMMENT ON COLUMN TestResultFailures.sComment IS
822 'Optional comment.';
823
824
825COMMENT ON TABLE BuildBlacklist IS
826 'Table used to blacklist sets of builds.
827
828The best usage example is a VMM developer realizing that a change causes the
829host to panic, hang, or otherwise misbehave. To prevent the testbox sheriff
830from repeatedly having to reboot testboxes, the builds gets blacklisted
831until there is a working build again. This may mean adding an open ended
832blacklist spec and then updating it with the final revision number once the
833fix has been committed.
834
835@remarks This table stores history. Never update or delete anything. The
836 equivalent of deleting is done by setting the ''tsExpire'' field to
837 current_timestamp. To select the currently valid entries use
838 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.
839
840@todo Would be nice if we could replace the text strings below with a set of
841 BuildCategories, or sore it in any other way which would enable us to
842 do a negative join with build category... The way it is specified
843 now, it looks like we have to open a cursor of prospecitve builds and
844 filter then thru this table one by one.
845
846 Any better representation is welcome, but this is low prioirty for
847 now, as it''s relatively easy to change this later one.';
848
849
850COMMENT ON COLUMN BuildBlacklist.tsEffective IS
851 'When this row starts taking effect (inclusive).';
852
853
854COMMENT ON COLUMN BuildBlacklist.tsExpire IS
855 'When this row stops being tsEffective (exclusive).';
856
857
858COMMENT ON COLUMN BuildBlacklist.uidAuthor IS
859 'The user id of the one who created/modified this entry.
860Non-unique foreign key: Users(uid)';
861
862
863COMMENT ON COLUMN BuildBlacklist.sProduct IS
864 'Which product.
865ASSUME that it is okay to limit a blacklisting to a single product.';
866
867
868COMMENT ON COLUMN BuildBlacklist.sBranch IS
869 'Which branch.
870ASSUME that it is okay to limit a blacklisting to a branch.';
871
872
873COMMENT ON COLUMN BuildBlacklist.asTypes IS
874 'Build types to include, all matches if NULL.';
875
876
877COMMENT ON COLUMN BuildBlacklist.asOsArches IS
878 'Array of the ''sOs.sCpuArch'' to match, all matches if NULL.
879See KBUILD_OSES in kBuild for a list of standard target OSes, and
880KBUILD_ARCHES for a list of standard architectures.
881
882@remarks See marks on ''os-agnostic'' and ''noarch'' in BuildCategories.';
883
884
885COMMENT ON COLUMN BuildBlacklist.iFirstRevision IS
886 'The first subversion tree revision to blacklist.';
887
888
889COMMENT ON COLUMN BuildBlacklist.iLastRevision IS
890 'The last subversion tree revision to blacklist, no upper limit if NULL.';
891
892
893COMMENT ON TABLE BuildCategories IS
894 'Build categories.
895
896The purpose of this table is saving space in the Builds table and hopefully
897speed things up when selecting builds as well (compared to selecting on 4
898text fields in the much larger Builds table).
899
900Insert only table, no update, no delete. History is not needed.';
901
902
903COMMENT ON COLUMN BuildCategories.sProduct IS
904 'Product.
905The product name. For instance ''VBox'' or ''VBoxTestSuite''.';
906
907
908COMMENT ON COLUMN BuildCategories.sRepository IS
909 'The version control repository name.';
910
911
912COMMENT ON COLUMN BuildCategories.sBranch IS
913 'The branch name (in the version control system).';
914
915
916COMMENT ON COLUMN BuildCategories.sType IS
917 'The build type.
918See KBUILD_BLD_TYPES in kBuild for a list of standard build types.';
919
920
921COMMENT ON COLUMN BuildCategories.asOsArches IS
922 'Array of the ''sOs.sCpuArch'' supported by the build.
923See KBUILD_OSES in kBuild for a list of standard target OSes, and
924KBUILD_ARCHES for a list of standard architectures.
925
926@remarks ''os-agnostic'' is used if the build doesn''t really target any
927 specific OS or if it targets all applicable OSes.
928 ''noarch'' is used if the build is architecture independent or if
929 all applicable architectures are handled.
930 Thus, ''os-agnostic.noarch'' will run on all build boxes.
931
932@note The array shall be sorted ascendingly to prevent unnecessary duplicates!';
933
934
935COMMENT ON TABLE Builds IS
936 'The builds table contains builds from the tinderboxes and oaccasionally from
937developers.
938
939The tinderbox side could be fed by a batch job enumerating the build output
940directories every so often, looking for new builds. Or we could query them
941from the tinderbox database. Yet another alternative is making the
942tinderbox server or client side software inform us about all new builds.
943
944The developer builds are entered manually thru the TM web UI. They are used
945for subjecting new code to some larger scale testing before commiting,
946enabling, or merging a private branch.
947
948The builds are being selected from this table by the via the build source
949specification that SchedGroups.idBuildSrc and
950SchedGroups.idBuildSrcTestSuite links to.
951
952@remarks This table stores history. Never update or delete anything. The
953 equivalent of deleting is done by setting the ''tsExpire'' field to
954 current_timestamp. To select the currently valid entries use
955 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
956
957
958COMMENT ON COLUMN Builds.tsCreated IS
959 'When this build was created or entered into the database.
960This remains unchanged';
961
962
963COMMENT ON COLUMN Builds.tsEffective IS
964 'When this row starts taking effect (inclusive).';
965
966
967COMMENT ON COLUMN Builds.tsExpire IS
968 'When this row stops being tsEffective (exclusive).';
969
970
971COMMENT ON COLUMN Builds.uidAuthor IS
972 'The user id of the one who created/modified this entry.
973Non-unique foreign key: Users(uid)
974@note This is NULL if added by a batch job / tinderbox.';
975
976
977COMMENT ON COLUMN Builds.iRevision IS
978 'The subversion tree revision of the build.';
979
980
981COMMENT ON COLUMN Builds.sVersion IS
982 'The product version number (suitable for RTStrVersionCompare).';
983
984
985COMMENT ON COLUMN Builds.sLogUrl IS
986 'The link to the tinderbox log of this build.';
987
988
989COMMENT ON COLUMN Builds.sBinaries IS
990 'Comma separated list of binaries.
991The binaries have paths relative to the TESTBOX_PATH_BUILDS or full URLs.';
992
993
994COMMENT ON COLUMN Builds.fBinariesDeleted IS
995 'Set when the binaries gets deleted by the build quota script.';
996
997
998COMMENT ON TABLE VcsRevisions IS
999 'This table is for translating build revisions into commit details.
1000
1001For graphs and test results, it would be useful to translate revisions into
1002dates and maybe provide commit message and the committer.
1003
1004Data is entered exclusively thru one or more batch jobs, so no internal
1005authorship needed. Also, since we''re mirroring data from external sources
1006here, the batch job is allowed to update/replace existing records.
1007
1008@todo We we could collect more info from the version control systems, if we
1009 believe it''s useful and can be presented in a reasonable manner.
1010 Getting a list of affected files would be simple (requires
1011 a separate table with a M:1 relationship to this table), or try
1012 associate a commit to a branch.';
1013
1014
1015COMMENT ON COLUMN VcsRevisions.sRepository IS
1016 'The version control tree name.';
1017
1018
1019COMMENT ON COLUMN VcsRevisions.iRevision IS
1020 'The version control tree revision number.';
1021
1022
1023COMMENT ON COLUMN VcsRevisions.tsCreated IS
1024 'When the revision was created (committed).';
1025
1026
1027COMMENT ON COLUMN VcsRevisions.sAuthor IS
1028 'The name of the committer.
1029@note Not to be confused with uidAuthor and test manager users.';
1030
1031
1032COMMENT ON COLUMN VcsRevisions.sMessage IS
1033 'The commit message.';
1034
1035
1036COMMENT ON TABLE TestResultStrTab IS
1037 'String table for the test results.
1038
1039This is a string cache for value names, test names and possible more, that
1040is frequently repated in the test results record for each test run. The
1041purpose is not only to save space, but to make datamining queries faster by
1042giving them integer fields to work on instead of text fields. There may
1043possibly be some benefits on INSERT as well as there are only integer
1044indexes.
1045
1046Nothing is ever deleted from this table.
1047
1048@note Should use a stored procedure to query/insert a string.';
1049
1050
1051COMMENT ON COLUMN TestResultStrTab.sValue IS
1052 'The string value.';
1053
1054
1055COMMENT ON COLUMN TestResultStrTab.tsCreated IS
1056 'Creation time stamp.';
1057
1058
1059COMMENT ON TYPE TestStatus_T IS
1060 'The status of a test (set / result).';
1061
1062
1063COMMENT ON TABLE TestResults IS
1064 'Test results - a recursive bundle of joy!
1065
1066A test case will be created when the testdriver calls reporter.testStart and
1067concluded with reporter.testDone. The testdriver (or it subordinates) can
1068use these methods to create nested test results. For IPRT based test cases,
1069RTTestCreate, RTTestInitAndCreate and RTTestSub will both create new test
1070result records, where as RTTestSubDone, RTTestSummaryAndDestroy and
1071RTTestDestroy will conclude records.
1072
1073By concluding is meant updating the status. When the test driver reports
1074success, we check it against reported results. (paranoia strikes again!)
1075
1076Nothing is ever deleted from this table.
1077
1078@note As seen below, several other tables associate data with a
1079 test result, and the top most test result is referenced by the
1080 test set.';
1081
1082
1083COMMENT ON COLUMN TestResults.tsCreated IS
1084 'Creation time stamp. This may also be the timestamp of when the test started.';
1085
1086
1087COMMENT ON COLUMN TestResults.tsElapsed IS
1088 'The elapsed time for this test.
1089This is either reported by the directly (with some sanity checking) or
1090calculated (current_timestamp - created_ts).
1091@todo maybe use a nanosecond field here, check with what';
1092
1093
1094COMMENT ON COLUMN TestResults.cErrors IS
1095 'The error count.';
1096
1097
1098COMMENT ON COLUMN TestResults.enmStatus IS
1099 'The test status.';
1100
1101
1102COMMENT ON COLUMN TestResults.iNestingDepth IS
1103 'Nesting depth.';
1104
1105
1106COMMENT ON TABLE TestResultValues IS
1107 'Test result values.
1108
1109A testdriver or subordinate may report a test value via
1110reporter.testValue(), while IPRT based test will use RTTestValue and
1111associates.
1112
1113This is an insert only table, no deletes, no updates.';
1114
1115
1116COMMENT ON COLUMN TestResultValues.tsCreated IS
1117 'Creation time stamp.';
1118
1119
1120COMMENT ON COLUMN TestResultValues.lValue IS
1121 'The value.';
1122
1123
1124COMMENT ON COLUMN TestResultValues.iUnit IS
1125 'The unit.
1126@todo This is currently not defined properly. Will fix/correlate this
1127 with the other places we use unit (IPRT/testdriver/VMMDev).';
1128
1129
1130COMMENT ON TABLE TestResultFiles IS
1131 'Test result files.
1132
1133A testdriver or subordinate may report a file by using
1134reporter.addFile() or reporter.addLogFile().
1135
1136The files stored here as well as the primary log file will be processed by a
1137batch job and compressed if considered compressable. Thus, TM will look for
1138files with a .gz/.bz2 suffix first and then without a suffix.
1139
1140This is an insert only table, no deletes, no updates.';
1141
1142
1143COMMENT ON COLUMN TestResultFiles.tsCreated IS
1144 'Creation time stamp.';
1145
1146
1147COMMENT ON INDEX TestResultFilesIdx IS
1148 'The mime type for the file.
1149For instance: ''text/plain'',
1150 ''image/png'',
1151 ''video/webm'',
1152 ''text/xml''';
1153
1154
1155COMMENT ON TABLE TestResultMsgs IS
1156 'Test result message.
1157
1158A testdriver or subordinate may report a message via the sDetails parameter
1159of the reporter.testFailure() method, while IPRT test cases will use
1160RTTestFailed, RTTestPrintf and their friends. For RTTestPrintf, we will
1161ignore the more verbose message levels since these can also be found in one
1162of the logs.
1163
1164This is an insert only table, no deletes, no updates.';
1165
1166
1167COMMENT ON COLUMN TestResultMsgs.tsCreated IS
1168 'Creation time stamp.';
1169
1170
1171COMMENT ON COLUMN TestResultMsgs.enmLevel IS
1172 'The message level.';
1173
1174
1175COMMENT ON TABLE TestSets IS
1176 'Test sets / Test case runs.
1177
1178This is where we collect data about test runs.
1179
1180@todo Not entirely sure where the ''test set'' term came from. Consider
1181 finding something more appropriate.';
1182
1183
1184COMMENT ON COLUMN TestSets.tsConfig IS
1185 'The test config timestamp, used when reading test config.';
1186
1187
1188COMMENT ON COLUMN TestSets.tsCreated IS
1189 'When this test set was scheduled.
1190idGenTestBox is valid at this point.';
1191
1192
1193COMMENT ON COLUMN TestSets.tsDone IS
1194 'When this test completed, i.e. testing stopped. This should only be set once.';
1195
1196
1197COMMENT ON COLUMN TestSets.enmStatus IS
1198 'The current status.';
1199
1200
1201COMMENT ON COLUMN TestSets.sBaseFilename IS
1202 'The base filename used for storing files related to this test set.
1203This is a path relative to wherever TM is dumping log files. In order
1204to not become a file system test case, we will try not to put too many
1205hundred thousand files in a directory. A simple first approach would
1206be to just use the current date (tsCreated) like this:
1207 TM_FILE_DIR/year/month/day/TestSets.idTestSet
1208
1209The primary log file for the test is this name suffixed by ''.log''.
1210
1211The files in the testresultfile table gets their full names like this:
1212 TM_FILE_DIR/sBaseFilename-testresultfile.id-TestResultStrTab(testresultfile.idStrFilename)
1213
1214@remarks We store this explicitly in case we change the directly layout
1215 at some later point.';
1216
1217
1218COMMENT ON COLUMN TestSets.iGangMemberNo IS
1219 'The gang member number number, 0 is the leader.';
1220
1221
1222COMMENT ON INDEX TestSetsGangIdx IS
1223 'The test set of the gang leader, NULL if no gang involved.
1224@note This is set by the gang leader as well, so that we can find all
1225 gang members by WHERE idTestSetGangLeader = :id.';
1226
1227
1228COMMENT ON INDEX TestSetsDoneCreatedBuildCatIdx IS
1229 'The TestSetsDoneCreatedBuildCatIdx is for testbox results, graph options and such.';
1230
1231
1232COMMENT ON INDEX TestSetsGraphBoxIdx IS
1233 'For graphs.';
1234
1235
1236COMMENT ON TYPE TestBoxState_T IS
1237 'TestBox state.
1238
1239@todo Consider drawing a state diagram for this.';
1240
1241
1242COMMENT ON TABLE TestBoxStatuses IS
1243 'Testbox status table.
1244
1245History is not planned on this table.';
1246
1247
1248COMMENT ON COLUMN TestBoxStatuses.tsUpdated IS
1249 'When this status was last updated.
1250This is updated everytime the testbox talks to the test manager, thus it
1251can easily be used to find testboxes which has stopped responding.
1252
1253This is used for timeout calculation during gang-gathering, so in that
1254scenario it won''t be updated until the gang is gathered or we time out.';
1255
1256
1257COMMENT ON COLUMN TestBoxStatuses.enmState IS
1258 'The current state.';
1259
1260
1261COMMENT ON TABLE GlobalResourceStatuses IS
1262 'Global resource status, tracks which test set resources are allocated by.
1263
1264History is not planned on this table.';
1265
1266
1267COMMENT ON COLUMN GlobalResourceStatuses.tsAllocated IS
1268 'When the allocation took place.';
1269
1270
1271COMMENT ON TABLE SchedQueues IS
1272 'Scheduler queue.
1273
1274The queues are currently associated with a scheduling group, it could
1275alternative be changed to hook on to a testbox instead. It depends on what
1276kind of scheduling method we prefer. The former method aims at test case
1277thruput, making sacrifices in the hardware distribution area. The latter is
1278more like the old buildbox style testing, making sure that each test case is
1279executed on each testbox.
1280
1281When there are configuration changes, TM will regenerate the scheduling
1282queue for the affected scheduling groups. We do not concern ourselves with
1283trying to continue at the approximately same queue position, we simply take
1284it from the top.
1285
1286When a testbox ask for work, we will open a cursor on the queue and take the
1287first test in the queue that can be executed on that testbox. The test will
1288be moved to the end of the queue (getting a new item_id).
1289
1290If a test is manually changed to the head of the queue, the item will get a
1291item_id which is 1 lower than the head of the queue. Unless someone does
1292this a couple of billion times, we shouldn''t have any trouble running out of
1293number space. :-)
1294
1295Manually moving a test to the end of the queue is easy, just get a new
1296''item_id''.
1297
1298History is not planned on this table.';
1299
1300
1301COMMENT ON COLUMN SchedQueues.bmHourlySchedule IS
1302 'The scheduling time constraints (see SchedGroupMembers.bmHourlySchedule).';
1303
1304
1305COMMENT ON COLUMN SchedQueues.tsConfig IS
1306 'When the queue entry was created and for which config is valid.
1307This is the timestamp that should be used when reading config info.';
1308
1309
1310COMMENT ON COLUMN SchedQueues.tsLastScheduled IS
1311 'When this status was last scheduled.
1312This is set to current_timestamp when moving the entry to the end of the
1313queue. It''s initial value is unix-epoch. Not entirely sure if it''s
1314useful beyond introspection and non-unique foreign key hacking.';
1315
1316
1317COMMENT ON COLUMN SchedQueues.cMissingGangMembers IS
1318 'The number of gang members still missing.
1319
1320This saves calculating the number of missing members via selects like:
1321 SELECT COUNT(*) FROM TestSets WHERE idTestSetGangLeader = :idGang;
1322and
1323 SELECT cGangMembers FROM TestCaseArgs WHERE idGenTestCaseArgs = :idTest;
1324to figure out whether to remain in ''gather-gang''::TestBoxState_T.';
1325
1326
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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