VirtualBox

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

Last change on this file since 98477 was 98103, checked in by vboxsync, 2 years ago

Copyright year updates by scm.

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

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