VirtualBox

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

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

testmanager: Added Users::fReadOnly and the necessary checks associated with it.

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

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