VirtualBox

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

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

refreshed

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 41.0 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 INDEX TestCaseArgsLookupIdx IS
324 'The arguments are part of the primary key for several reasons.
325No duplicate argument lists (makes no sense - if you want to prioritize
326argument lists, we add that explicitly). This may hopefully enable us
327to more easily check coverage later on, even when the test case is
328reconfigured with more/less permutations.';
329
330
331COMMENT ON TABLE TestCaseDeps IS
332 'Test case dependencies (N:M)
333
334This effect build selection. The build must have passed all runs of the
335given prerequisite testcase (idTestCasePreReq) and executed at a minimum one
336argument list variation.
337
338This should also affect scheduling order, if possible at least one
339prerequisite testcase variation should be place before the specific testcase
340in the scheduling queue.
341
342@remarks This table stores history. Never update or delete anything. The
343 equivalent of deleting is done by setting the ''tsExpire'' field to
344 current_timestamp. To select the currently valid entries use
345 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
346
347
348COMMENT ON COLUMN TestCaseDeps.tsEffective IS
349 'When this row starts taking effect (inclusive).';
350
351
352COMMENT ON COLUMN TestCaseDeps.tsExpire IS
353 'When this row stops being tsEffective (exclusive).';
354
355
356COMMENT ON COLUMN TestCaseDeps.uidAuthor IS
357 'The user id of the one who created/modified this entry.
358Non-unique foreign key: Users(uid)';
359
360
361COMMENT ON TABLE TestCaseGlobalRsrcDeps IS
362 'Test case dependencies on global resources (N:M)
363
364@remarks This table stores history. Never update or delete anything. The
365 equivalent of deleting is done by setting the ''tsExpire'' field to
366 current_timestamp. To select the currently valid entries use
367 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
368
369
370COMMENT ON COLUMN TestCaseGlobalRsrcDeps.tsEffective IS
371 'When this row starts taking effect (inclusive).';
372
373
374COMMENT ON COLUMN TestCaseGlobalRsrcDeps.tsExpire IS
375 'When this row stops being tsEffective (exclusive).';
376
377
378COMMENT ON COLUMN TestCaseGlobalRsrcDeps.uidAuthor IS
379 'The user id of the one who created/modified this entry.
380Non-unique foreign key: Users(uid)';
381
382
383COMMENT ON TABLE TestGroups IS
384 'Test Group - A collection of test cases.
385
386This is for simplifying test configuration by working with a few groups
387instead of a herd of individual testcases. It may also be used for creating
388test suites for certain areas (like guest additions) or tasks (like
389performance measurements).
390
391A test case can be member of any number of test groups.
392
393@remarks This table stores history. Never update or delete anything. The
394 equivalent of deleting is done by setting the ''tsExpire'' field to
395 current_timestamp. To select the currently valid entries use
396 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
397
398
399COMMENT ON COLUMN TestGroups.tsEffective IS
400 'When this row starts taking effect (inclusive).';
401
402
403COMMENT ON COLUMN TestGroups.tsExpire IS
404 'When this row stops being tsEffective (exclusive).';
405
406
407COMMENT ON COLUMN TestGroups.uidAuthor IS
408 'The user id of the one who created/modified this entry.
409Non-unique foreign key: Users(uid)';
410
411
412COMMENT ON COLUMN TestGroups.sName IS
413 'The name of the scheduling group.';
414
415
416COMMENT ON COLUMN TestGroups.sDescription IS
417 'Optional group description.';
418
419
420COMMENT ON TABLE TestGroupMembers IS
421 'The N:M relation ship between test case configurations and test groups.
422
423@remarks This table stores history. Never update or delete anything. The
424 equivalent of deleting is done by setting the ''tsExpire'' field to
425 current_timestamp. To select the currently valid entries use
426 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
427
428
429COMMENT ON COLUMN TestGroupMembers.tsEffective IS
430 'When this row starts taking effect (inclusive).';
431
432
433COMMENT ON COLUMN TestGroupMembers.tsExpire IS
434 'When this row stops being tsEffective (exclusive).';
435
436
437COMMENT ON COLUMN TestGroupMembers.uidAuthor IS
438 'The user id of the one who created/modified this entry.
439Non-unique foreign key: Users(uid)';
440
441
442COMMENT ON COLUMN TestGroupMembers.iSchedPriority IS
443 'Test case scheduling priority.
444Higher number causes the test case to be run more frequently.
445@sa SchedGroupMembers.iSchedPriority
446@todo Not sure we want to keep this...';
447
448
449COMMENT ON TABLE SchedGroups IS
450 'Scheduling group (aka. testbox partitioning) configuration.
451
452A testbox is associated with exactly one scheduling group. This association
453can be changed, of course. If we (want to) retire a group which still has
454testboxes associated with it, these will be moved to the ''default'' group.
455
456The TM web UI will make sure that a testbox is always in a group and that
457the default group cannot be deleted.
458
459A scheduling group combines several things:
460 - A selection of builds to test (via idBuildSrc).
461 - A collection of test groups to test with (via SchedGroupMembers).
462 - A set of testboxes to test on (via TestBoxes.idSchedGroup).
463
464In additions there is an optional source of fresh test suite builds (think
465VBoxTestSuite) as well as scheduling options.
466
467@remarks This table stores history. Never update or delete anything. The
468 equivalent of deleting is done by setting the ''tsExpire'' field to
469 current_timestamp. To select the currently valid entries use
470 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
471
472
473COMMENT ON COLUMN SchedGroups.tsEffective IS
474 'When this row starts taking effect (inclusive).';
475
476
477COMMENT ON COLUMN SchedGroups.tsExpire IS
478 'When this row stops being tsEffective (exclusive).';
479
480
481COMMENT ON COLUMN SchedGroups.uidAuthor IS
482 'The user id of the one who created/modified this entry.
483Non-unique foreign key: Users(uid)
484@note This is NULL for the default group.';
485
486
487COMMENT ON COLUMN SchedGroups.sName IS
488 'The name of the scheduling group.';
489
490
491COMMENT ON COLUMN SchedGroups.sDescription IS
492 'Optional group description.';
493
494
495COMMENT ON COLUMN SchedGroups.fEnabled IS
496 'Indicates whether this group is currently enabled.';
497
498
499COMMENT ON COLUMN SchedGroups.enmScheduler IS
500 'The scheduler to use.
501This is for when we later desire different scheduling that the best
502effort stuff provided by the initial implementation.';
503
504
505COMMENT ON TABLE SchedGroupMembers IS
506 'N:M relationship between scheduling groups and test groups.
507
508Several scheduling parameters are associated with this relationship.
509
510The test group dependency (idTestGroupPreReq) can be used in the same way as
511TestCaseDeps.idTestCasePreReq, only here on test group level. This means it
512affects the build selection. The builds needs to have passed all test runs
513the prerequisite test group and done at least one argument variation of each
514test case in it.
515
516@remarks This table stores history. Never update or delete anything. The
517 equivalent of deleting is done by setting the ''tsExpire'' field to
518 current_timestamp. To select the currently valid entries use
519 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
520
521
522COMMENT ON COLUMN SchedGroupMembers.tsEffective IS
523 'When this row starts taking effect (inclusive).';
524
525
526COMMENT ON COLUMN SchedGroupMembers.tsExpire IS
527 'When this row stops being tsEffective (exclusive).';
528
529
530COMMENT ON COLUMN SchedGroupMembers.uidAuthor IS
531 'The user id of the one who created/modified this entry.
532Non-unique foreign key: Users(uid)';
533
534
535COMMENT ON COLUMN SchedGroupMembers.iSchedPriority IS
536 'The scheduling priority if the test group.
537Higher number causes the test case to be run more frequently.
538@sa TestGroupMembers.iSchedPriority';
539
540
541COMMENT ON COLUMN SchedGroupMembers.bmHourlySchedule IS
542 'When during the week this group is allowed to start running, NULL means
543there are no constraints.
544Each bit in the bitstring represents one hour, with bit 0 indicating the
545midnight hour on a monday.';
546
547
548COMMENT ON TYPE TestBoxCmd_T IS
549 'Testbox commands.';
550
551
552COMMENT ON TYPE LomKind_T IS
553 'The kind of lights out management on a testbox.';
554
555
556COMMENT ON TABLE TestBoxes IS
557 'Testbox configurations.
558
559The testboxes are identified by IP and the system UUID if available. Should
560the IP change, the testbox will be refused at sign on and the testbox
561sheriff will have to update it''s IP.
562
563@todo Implement the UUID stuff. Get it from DMI, UEFI or whereever.
564 Mismatching needs to be logged somewhere...
565
566To query the currently valid configuration:
567 SELECT ... WHERE id = idTestBox AND tsExpire = TIMESTAMP WITH TIME ZONE ''infinity'';
568
569@remarks This table stores history. Never update or delete anything. The
570 equivalent of deleting is done by setting the ''tsExpire'' field to
571 current_timestamp. To select the currently valid entries use
572 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
573
574
575COMMENT ON COLUMN TestBoxes.tsEffective IS
576 'When this row starts taking effect (inclusive).';
577
578
579COMMENT ON COLUMN TestBoxes.tsExpire IS
580 'When this row stops being tsEffective (exclusive).';
581
582
583COMMENT ON COLUMN TestBoxes.uidAuthor IS
584 'The user id of the one who created/modified this entry.
585When modified automatically by the testbox, NULL is used.
586Non-unique foreign key: Users(uid)';
587
588
589COMMENT ON COLUMN TestBoxes.uuidSystem IS
590 'The system or firmware UUID.
591This uniquely identifies the testbox when talking to the server. After
592SIGNON though, the testbox will also provide idTestBox and ip to
593establish its identity beyond doubt.';
594
595
596COMMENT ON COLUMN TestBoxes.sName IS
597 'The testbox name.
598Usually similar to the DNS name.';
599
600
601COMMENT ON COLUMN TestBoxes.sDescription IS
602 'Optional testbox description.
603Intended for describing the box as well as making other relevant notes.';
604
605
606COMMENT ON COLUMN TestBoxes.fEnabled IS
607 'Indicates whether this testbox is enabled.
608A testbox gets disabled when we''re doing maintenance, debugging a issue
609that happens only on that testbox, or some similar stuff. This is an
610alternative to deleting the testbox.';
611
612
613COMMENT ON COLUMN TestBoxes.enmLomKind IS
614 'The kind of lights-out-management.';
615
616
617COMMENT ON COLUMN TestBoxes.sOs IS
618 'Same abbrieviations as kBuild, see KBUILD_OSES.';
619
620
621COMMENT ON COLUMN TestBoxes.sOsVersion IS
622 'Informational, no fixed format.';
623
624
625COMMENT ON COLUMN TestBoxes.sCpuVendor IS
626 'Same as CPUID reports (GenuineIntel, AuthenticAMD, CentaurHauls, ...).';
627
628
629COMMENT ON COLUMN TestBoxes.sCpuArch IS
630 'Same as kBuild - x86, amd64, ... See KBUILD_ARCHES.';
631
632
633COMMENT ON COLUMN TestBoxes.sCpuName IS
634 'The CPU name if available.';
635
636
637COMMENT ON COLUMN TestBoxes.lCpuRevision IS
638 'Number identifying the CPU family/model/stepping/whatever.
639For x86 and AMD64 type CPUs, this will on the following format:
640 (EffFamily << 24) | (EffModel << 8) | Stepping.';
641
642
643COMMENT ON COLUMN TestBoxes.cCpus IS
644 'Number of CPUs, CPU cores and CPU threads.';
645
646
647COMMENT ON COLUMN TestBoxes.fCpuHwVirt IS
648 'Set if capable of hardware virtualization.';
649
650
651COMMENT ON COLUMN TestBoxes.fCpuNestedPaging IS
652 'Set if capable of nested paging.';
653
654
655COMMENT ON COLUMN TestBoxes.fCpu64BitGuest IS
656 'Set if CPU capable of 64-bit (VBox) guests.';
657
658
659COMMENT ON COLUMN TestBoxes.fChipsetIoMmu IS
660 'Set if chipset with usable IOMMU (VT-d / AMD-Vi).';
661
662
663COMMENT ON COLUMN TestBoxes.cMbMemory IS
664 'The (approximate) memory size in megabytes (rounded down to nearest 4 MB).';
665
666
667COMMENT ON COLUMN TestBoxes.cMbScratch IS
668 'The amount of scratch space in megabytes (rounded down to nearest 64 MB).';
669
670
671COMMENT ON COLUMN TestBoxes.sReport IS
672 'Free form hardware and software report field.';
673
674
675COMMENT ON COLUMN TestBoxes.iTestBoxScriptRev IS
676 'The testbox script revision number, serves the purpose of a version number.
677Probably good to have when scheduling upgrades as well for status purposes.';
678
679
680COMMENT ON COLUMN TestBoxes.iPythonHexVersion IS
681 'The python sys.hexversion (layed out as of 2.7).
682Good to know which python versions we need to support.';
683
684
685COMMENT ON COLUMN TestBoxes.enmPendingCmd IS
686 'Pending command.
687@note We put it here instead of in TestBoxStatuses to get history.';
688
689
690COMMENT ON INDEX TestBoxesUuidIdx IS
691 'Nested paging requires hardware virtualization.';
692
693
694COMMENT ON TABLE FailureCategories IS
695 'Failure categories.
696
697This is for organizing the failure reasons.
698
699@remarks This table stores history. Never update or delete anything. The
700 equivalent of deleting is done by setting the ''tsExpire'' field to
701 current_timestamp. To select the currently valid entries use
702 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
703
704
705COMMENT ON COLUMN FailureCategories.tsEffective IS
706 'When this row starts taking effect (inclusive).';
707
708
709COMMENT ON COLUMN FailureCategories.tsExpire IS
710 'When this row stops being tsEffective (exclusive).';
711
712
713COMMENT ON COLUMN FailureCategories.uidAuthor IS
714 'The user id of the one who created/modified this entry.
715Non-unique foreign key: Users(uid)';
716
717
718COMMENT ON COLUMN FailureCategories.sShort IS
719 'The short category description.
720For combo boxes and other selection lists.';
721
722
723COMMENT ON COLUMN FailureCategories.sFull IS
724 'Full description
725For cursor-over-poppups for instance.';
726
727
728COMMENT ON TABLE FailureReasons IS
729 'Failure reasons.
730
731When analysing a test failure, the testbox sheriff will try assign a fitting
732reason for the failure. This table is here to help the sheriff in his/hers
733job as well as developers looking checking if their changes affected the
734test results in any way.
735
736@remarks This table stores history. Never update or delete anything. The
737 equivalent of deleting is done by setting the ''tsExpire'' field to
738 current_timestamp. To select the currently valid entries use
739 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
740
741
742COMMENT ON COLUMN FailureReasons.tsEffective IS
743 'When this row starts taking effect (inclusive).';
744
745
746COMMENT ON COLUMN FailureReasons.tsExpire IS
747 'When this row stops being tsEffective (exclusive).';
748
749
750COMMENT ON COLUMN FailureReasons.uidAuthor IS
751 'The user id of the one who created/modified this entry.
752Non-unique foreign key: Users(uid)';
753
754
755COMMENT ON COLUMN FailureReasons.sShort IS
756 'The short failure description.
757For combo boxes and other selection lists.';
758
759
760COMMENT ON COLUMN FailureReasons.sFull IS
761 'Full failure description.';
762
763
764COMMENT ON COLUMN FailureReasons.iTicket IS
765 'Ticket number in the primary bugtracker.';
766
767
768COMMENT ON COLUMN FailureReasons.asUrls IS
769 'Other URLs to reports or discussions of the observed symptoms.';
770
771
772COMMENT ON TABLE TestResultFailures IS
773 'This is for tracking/discussing test result failures.
774
775The rational for putting this is a separate table is that we need history on
776this while TestResults does not.
777
778@remarks This table stores history. Never update or delete anything. The
779 equivalent of deleting is done by setting the ''tsExpire'' field to
780 current_timestamp. To select the currently valid entries use
781 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
782
783
784COMMENT ON COLUMN TestResultFailures.tsEffective IS
785 'When this row starts taking effect (inclusive).';
786
787
788COMMENT ON COLUMN TestResultFailures.tsExpire IS
789 'When this row stops being tsEffective (exclusive).';
790
791
792COMMENT ON COLUMN TestResultFailures.uidAuthor IS
793 'The user id of the one who created/modified this entry.
794Non-unique foreign key: Users(uid)';
795
796
797COMMENT ON COLUMN TestResultFailures.sComment IS
798 'Optional comment.';
799
800
801COMMENT ON TABLE BuildBlacklist IS
802 'Table used to blacklist sets of builds.
803
804The best usage example is a VMM developer realizing that a change causes the
805host to panic, hang, or otherwise misbehave. To prevent the testbox sheriff
806from repeatedly having to reboot testboxes, the builds gets blacklisted
807until there is a working build again. This may mean adding an open ended
808blacklist spec and then updating it with the final revision number once the
809fix has been committed.
810
811@remarks This table stores history. Never update or delete anything. The
812 equivalent of deleting is done by setting the ''tsExpire'' field to
813 current_timestamp. To select the currently valid entries use
814 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.
815
816@todo Would be nice if we could replace the text strings below with a set of
817 BuildCategories, or sore it in any other way which would enable us to
818 do a negative join with build category... The way it is specified
819 now, it looks like we have to open a cursor of prospecitve builds and
820 filter then thru this table one by one.
821
822 Any better representation is welcome, but this is low prioirty for
823 now, as it''s relatively easy to change this later one.';
824
825
826COMMENT ON COLUMN BuildBlacklist.tsEffective IS
827 'When this row starts taking effect (inclusive).';
828
829
830COMMENT ON COLUMN BuildBlacklist.tsExpire IS
831 'When this row stops being tsEffective (exclusive).';
832
833
834COMMENT ON COLUMN BuildBlacklist.uidAuthor IS
835 'The user id of the one who created/modified this entry.
836Non-unique foreign key: Users(uid)';
837
838
839COMMENT ON COLUMN BuildBlacklist.sProduct IS
840 'Which product.
841ASSUME that it is okay to limit a blacklisting to a single product.';
842
843
844COMMENT ON COLUMN BuildBlacklist.sBranch IS
845 'Which branch.
846ASSUME that it is okay to limit a blacklisting to a branch.';
847
848
849COMMENT ON COLUMN BuildBlacklist.asTypes IS
850 'Build types to include, all matches if NULL.';
851
852
853COMMENT ON COLUMN BuildBlacklist.asOsArches IS
854 'Array of the ''sOs.sCpuArch'' to match, all matches if NULL.
855See KBUILD_OSES in kBuild for a list of standard target OSes, and
856KBUILD_ARCHES for a list of standard architectures.
857
858@remarks See marks on ''os-agnostic'' and ''noarch'' in BuildCategories.';
859
860
861COMMENT ON COLUMN BuildBlacklist.iFirstRevision IS
862 'The first subversion tree revision to blacklist.';
863
864
865COMMENT ON COLUMN BuildBlacklist.iLastRevision IS
866 'The last subversion tree revision to blacklist, no upper limit if NULL.';
867
868
869COMMENT ON TABLE BuildCategories IS
870 'Build categories.
871
872The purpose of this table is saving space in the Builds table and hopefully
873speed things up when selecting builds as well (compared to selecting on 4
874text fields in the much larger Builds table).
875
876Insert only table, no update, no delete. History is not needed.';
877
878
879COMMENT ON COLUMN BuildCategories.sProduct IS
880 'Product.
881The product name. For instance ''VBox'' or ''VBoxTestSuite''.';
882
883
884COMMENT ON COLUMN BuildCategories.sRepository IS
885 'The version control repository name.';
886
887
888COMMENT ON COLUMN BuildCategories.sBranch IS
889 'The branch name (in the version control system).';
890
891
892COMMENT ON COLUMN BuildCategories.sType IS
893 'The build type.
894See KBUILD_BLD_TYPES in kBuild for a list of standard build types.';
895
896
897COMMENT ON COLUMN BuildCategories.asOsArches IS
898 'Array of the ''sOs.sCpuArch'' supported by the build.
899See KBUILD_OSES in kBuild for a list of standard target OSes, and
900KBUILD_ARCHES for a list of standard architectures.
901
902@remarks ''os-agnostic'' is used if the build doesn''t really target any
903 specific OS or if it targets all applicable OSes.
904 ''noarch'' is used if the build is architecture independent or if
905 all applicable architectures are handled.
906 Thus, ''os-agnostic.noarch'' will run on all build boxes.
907
908@note The array shall be sorted ascendingly to prevent unnecessary duplicates!';
909
910
911COMMENT ON TABLE Builds IS
912 'The builds table contains builds from the tinderboxes and oaccasionally from
913developers.
914
915The tinderbox side could be fed by a batch job enumerating the build output
916directories every so often, looking for new builds. Or we could query them
917from the tinderbox database. Yet another alternative is making the
918tinderbox server or client side software inform us about all new builds.
919
920The developer builds are entered manually thru the TM web UI. They are used
921for subjecting new code to some larger scale testing before commiting,
922enabling, or merging a private branch.
923
924The builds are being selected from this table by the via the build source
925specification that SchedGroups.idBuildSrc and
926SchedGroups.idBuildSrcTestSuite links to.
927
928@remarks This table stores history. Never update or delete anything. The
929 equivalent of deleting is done by setting the ''tsExpire'' field to
930 current_timestamp. To select the currently valid entries use
931 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
932
933
934COMMENT ON COLUMN Builds.tsCreated IS
935 'When this build was created or entered into the database.
936This remains unchanged';
937
938
939COMMENT ON COLUMN Builds.tsEffective IS
940 'When this row starts taking effect (inclusive).';
941
942
943COMMENT ON COLUMN Builds.tsExpire IS
944 'When this row stops being tsEffective (exclusive).';
945
946
947COMMENT ON COLUMN Builds.uidAuthor IS
948 'The user id of the one who created/modified this entry.
949Non-unique foreign key: Users(uid)
950@note This is NULL if added by a batch job / tinderbox.';
951
952
953COMMENT ON COLUMN Builds.iRevision IS
954 'The subversion tree revision of the build.';
955
956
957COMMENT ON COLUMN Builds.sVersion IS
958 'The product version number (suitable for RTStrVersionCompare).';
959
960
961COMMENT ON COLUMN Builds.sLogUrl IS
962 'The link to the tinderbox log of this build.';
963
964
965COMMENT ON COLUMN Builds.sBinaries IS
966 'Comma separated list of binaries.
967The binaries have paths relative to the TESTBOX_PATH_BUILDS or full URLs.';
968
969
970COMMENT ON COLUMN Builds.fBinariesDeleted IS
971 'Set when the binaries gets deleted by the build quota script.';
972
973
974COMMENT ON TABLE VcsRevisions IS
975 'This table is for translating build revisions into commit details.
976
977For graphs and test results, it would be useful to translate revisions into
978dates and maybe provide commit message and the committer.
979
980Data is entered exclusively thru one or more batch jobs, so no internal
981authorship needed. Also, since we''re mirroring data from external sources
982here, the batch job is allowed to update/replace existing records.
983
984@todo We we could collect more info from the version control systems, if we
985 believe it''s useful and can be presented in a reasonable manner.
986 Getting a list of affected files would be simple (requires
987 a separate table with a M:1 relationship to this table), or try
988 associate a commit to a branch.';
989
990
991COMMENT ON COLUMN VcsRevisions.sRepository IS
992 'The version control tree name.';
993
994
995COMMENT ON COLUMN VcsRevisions.iRevision IS
996 'The version control tree revision number.';
997
998
999COMMENT ON COLUMN VcsRevisions.tsCreated IS
1000 'When the revision was created (committed).';
1001
1002
1003COMMENT ON COLUMN VcsRevisions.sAuthor IS
1004 'The name of the committer.
1005@note Not to be confused with uidAuthor and test manager users.';
1006
1007
1008COMMENT ON COLUMN VcsRevisions.sMessage IS
1009 'The commit message.';
1010
1011
1012COMMENT ON TABLE TestResultStrTab IS
1013 'String table for the test results.
1014
1015This is a string cache for value names, test names and possible more, that
1016is frequently repated in the test results record for each test run. The
1017purpose is not only to save space, but to make datamining queries faster by
1018giving them integer fields to work on instead of text fields. There may
1019possibly be some benefits on INSERT as well as there are only integer
1020indexes.
1021
1022Nothing is ever deleted from this table.
1023
1024@note Should use a stored procedure to query/insert a string.';
1025
1026
1027COMMENT ON COLUMN TestResultStrTab.sValue IS
1028 'The string value.';
1029
1030
1031COMMENT ON COLUMN TestResultStrTab.tsCreated IS
1032 'Creation time stamp.';
1033
1034
1035COMMENT ON TYPE TestStatus_T IS
1036 'The status of a test (set / result).';
1037
1038
1039COMMENT ON TABLE TestResults IS
1040 'Test results - a recursive bundle of joy!
1041
1042A test case will be created when the testdriver calls reporter.testStart and
1043concluded with reporter.testDone. The testdriver (or it subordinates) can
1044use these methods to create nested test results. For IPRT based test cases,
1045RTTestCreate, RTTestInitAndCreate and RTTestSub will both create new test
1046result records, where as RTTestSubDone, RTTestSummaryAndDestroy and
1047RTTestDestroy will conclude records.
1048
1049By concluding is meant updating the status. When the test driver reports
1050success, we check it against reported results. (paranoia strikes again!)
1051
1052Nothing is ever deleted from this table.
1053
1054@note As seen below, several other tables associate data with a
1055 test result, and the top most test result is referenced by the
1056 test set.';
1057
1058
1059COMMENT ON COLUMN TestResults.tsCreated IS
1060 'Creation time stamp. This may also be the timestamp of when the test started.';
1061
1062
1063COMMENT ON COLUMN TestResults.tsElapsed IS
1064 'The elapsed time for this test.
1065This is either reported by the directly (with some sanity checking) or
1066calculated (current_timestamp - created_ts).
1067@todo maybe use a nanosecond field here, check with what';
1068
1069
1070COMMENT ON COLUMN TestResults.cErrors IS
1071 'The error count.';
1072
1073
1074COMMENT ON COLUMN TestResults.enmStatus IS
1075 'The test status.';
1076
1077
1078COMMENT ON COLUMN TestResults.iNestingDepth IS
1079 'Nesting depth.';
1080
1081
1082COMMENT ON TABLE TestResultValues IS
1083 'Test result values.
1084
1085A testdriver or subordinate may report a test value via
1086reporter.testValue(), while IPRT based test will use RTTestValue and
1087associates.
1088
1089This is an insert only table, no deletes, no updates.';
1090
1091
1092COMMENT ON COLUMN TestResultValues.tsCreated IS
1093 'Creation time stamp.';
1094
1095
1096COMMENT ON COLUMN TestResultValues.lValue IS
1097 'The value.';
1098
1099
1100COMMENT ON COLUMN TestResultValues.iUnit IS
1101 'The unit.
1102@todo This is currently not defined properly. Will fix/correlate this
1103 with the other places we use unit (IPRT/testdriver/VMMDev).';
1104
1105
1106COMMENT ON TABLE TestResultFiles IS
1107 'Test result files.
1108
1109A testdriver or subordinate may report a file by using
1110reporter.addFile() or reporter.addLogFile().
1111
1112The files stored here as well as the primary log file will be processed by a
1113batch job and compressed if considered compressable. Thus, TM will look for
1114files with a .gz/.bz2 suffix first and then without a suffix.
1115
1116This is an insert only table, no deletes, no updates.';
1117
1118
1119COMMENT ON COLUMN TestResultFiles.tsCreated IS
1120 'Creation time stamp.';
1121
1122
1123COMMENT ON INDEX TestResultFilesIdx IS
1124 'The mime type for the file.
1125For instance: ''text/plain'',
1126 ''image/png'',
1127 ''video/webm'',
1128 ''text/xml''';
1129
1130
1131COMMENT ON TABLE TestResultMsgs IS
1132 'Test result message.
1133
1134A testdriver or subordinate may report a message via the sDetails parameter
1135of the reporter.testFailure() method, while IPRT test cases will use
1136RTTestFailed, RTTestPrintf and their friends. For RTTestPrintf, we will
1137ignore the more verbose message levels since these can also be found in one
1138of the logs.
1139
1140This is an insert only table, no deletes, no updates.';
1141
1142
1143COMMENT ON COLUMN TestResultMsgs.tsCreated IS
1144 'Creation time stamp.';
1145
1146
1147COMMENT ON COLUMN TestResultMsgs.enmLevel IS
1148 'The message level.';
1149
1150
1151COMMENT ON TABLE TestSets IS
1152 'Test sets / Test case runs.
1153
1154This is where we collect data about test runs.
1155
1156@todo Not entirely sure where the ''test set'' term came from. Consider
1157 finding something more appropriate.';
1158
1159
1160COMMENT ON COLUMN TestSets.tsConfig IS
1161 'The test config timestamp, used when reading test config.';
1162
1163
1164COMMENT ON COLUMN TestSets.tsCreated IS
1165 'When this test set was scheduled.
1166idGenTestBox is valid at this point.';
1167
1168
1169COMMENT ON COLUMN TestSets.tsDone IS
1170 'When this test completed, i.e. testing stopped. This should only be set once.';
1171
1172
1173COMMENT ON COLUMN TestSets.enmStatus IS
1174 'The current status.';
1175
1176
1177COMMENT ON COLUMN TestSets.sBaseFilename IS
1178 'The base filename used for storing files related to this test set.
1179This is a path relative to wherever TM is dumping log files. In order
1180to not become a file system test case, we will try not to put too many
1181hundred thousand files in a directory. A simple first approach would
1182be to just use the current date (tsCreated) like this:
1183 TM_FILE_DIR/year/month/day/TestSets.idTestSet
1184
1185The primary log file for the test is this name suffixed by ''.log''.
1186
1187The files in the testresultfile table gets their full names like this:
1188 TM_FILE_DIR/sBaseFilename-testresultfile.id-TestResultStrTab(testresultfile.idStrFilename)
1189
1190@remarks We store this explicitly in case we change the directly layout
1191 at some later point.';
1192
1193
1194COMMENT ON COLUMN TestSets.iGangMemberNo IS
1195 'The gang member number number, 0 is the leader.';
1196
1197
1198COMMENT ON INDEX TestSetsGangIdx IS
1199 'The test set of the gang leader, NULL if no gang involved.
1200@note This is set by the gang leader as well, so that we can find all
1201 gang members by WHERE idTestSetGangLeader = :id.';
1202
1203
1204COMMENT ON INDEX TestSetsDoneCreatedBuildCatIdx IS
1205 'The TestSetsDoneCreatedBuildCatIdx is for testbox results, graph options and such.';
1206
1207
1208COMMENT ON INDEX TestSetsGraphBoxIdx IS
1209 'For graphs.';
1210
1211
1212COMMENT ON TYPE TestBoxState_T IS
1213 'TestBox state.
1214
1215@todo Consider drawing a state diagram for this.';
1216
1217
1218COMMENT ON TABLE TestBoxStatuses IS
1219 'Testbox status table.
1220
1221History is not planned on this table.';
1222
1223
1224COMMENT ON COLUMN TestBoxStatuses.tsUpdated IS
1225 'When this status was last updated.
1226This is updated everytime the testbox talks to the test manager, thus it
1227can easily be used to find testboxes which has stopped responding.
1228
1229This is used for timeout calculation during gang-gathering, so in that
1230scenario it won''t be updated until the gang is gathered or we time out.';
1231
1232
1233COMMENT ON COLUMN TestBoxStatuses.enmState IS
1234 'The current state.';
1235
1236
1237COMMENT ON TABLE GlobalResourceStatuses IS
1238 'Global resource status, tracks which test set resources are allocated by.
1239
1240History is not planned on this table.';
1241
1242
1243COMMENT ON COLUMN GlobalResourceStatuses.tsAllocated IS
1244 'When the allocation took place.';
1245
1246
1247COMMENT ON TABLE SchedQueues IS
1248 'Scheduler queue.
1249
1250The queues are currently associated with a scheduling group, it could
1251alternative be changed to hook on to a testbox instead. It depends on what
1252kind of scheduling method we prefer. The former method aims at test case
1253thruput, making sacrifices in the hardware distribution area. The latter is
1254more like the old buildbox style testing, making sure that each test case is
1255executed on each testbox.
1256
1257When there are configuration changes, TM will regenerate the scheduling
1258queue for the affected scheduling groups. We do not concern ourselves with
1259trying to continue at the approximately same queue position, we simply take
1260it from the top.
1261
1262When a testbox ask for work, we will open a cursor on the queue and take the
1263first test in the queue that can be executed on that testbox. The test will
1264be moved to the end of the queue (getting a new item_id).
1265
1266If a test is manually changed to the head of the queue, the item will get a
1267item_id which is 1 lower than the head of the queue. Unless someone does
1268this a couple of billion times, we shouldn''t have any trouble running out of
1269number space. :-)
1270
1271Manually moving a test to the end of the queue is easy, just get a new
1272''item_id''.
1273
1274History is not planned on this table.';
1275
1276
1277COMMENT ON COLUMN SchedQueues.bmHourlySchedule IS
1278 'The scheduling time constraints (see SchedGroupMembers.bmHourlySchedule).';
1279
1280
1281COMMENT ON COLUMN SchedQueues.tsConfig IS
1282 'When the queue entry was created and for which config is valid.
1283This is the timestamp that should be used when reading config info.';
1284
1285
1286COMMENT ON COLUMN SchedQueues.tsLastScheduled IS
1287 'When this status was last scheduled.
1288This is set to current_timestamp when moving the entry to the end of the
1289queue. It''s initial value is unix-epoch. Not entirely sure if it''s
1290useful beyond introspection and non-unique foreign key hacking.';
1291
1292
1293COMMENT ON COLUMN SchedQueues.cMissingGangMembers IS
1294 'The number of gang members still missing.
1295
1296This saves calculating the number of missing members via selects like:
1297 SELECT COUNT(*) FROM TestSets WHERE idTestSetGangLeader = :idGang;
1298and
1299 SELECT cGangMembers FROM TestCaseArgs WHERE idGenTestCaseArgs = :idTest;
1300to figure out whether to remain in ''gather-gang''::TestBoxState_T.';
1301
1302
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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