VirtualBox

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

Last change on this file since 69448 was 69448, checked in by vboxsync, 7 years ago

testmanager/db: scm updates

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

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