Changeset 56809 in vbox for trunk/src/VBox/ValidationKit/testmanager/core
- Timestamp:
- Jul 6, 2015 12:32:55 AM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 101459
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/testmanager/core/testresults.py
r56764 r56809 513 513 # 514 514 515 ksResultsGroupingTypeNone = 'ResultsGroupingTypeNone' 516 ksResultsGroupingTypeTestGroup = 'ResultsGroupingTypeTestGroup' 517 ksResultsGroupingTypeBuildRev = 'ResultsGroupingTypeBuild' 518 ksResultsGroupingTypeTestBox = 'ResultsGroupingTypeTestBox' 519 ksResultsGroupingTypeTestCase = 'ResultsGroupingTypeTestCase' 520 ksResultsGroupingTypeSchedGroup = 'ResultsGroupingTypeSchedGroup' 515 ksResultsGroupingTypeNone = 'ResultsGroupingTypeNone'; 516 ksResultsGroupingTypeTestGroup = 'ResultsGroupingTypeTestGroup'; 517 ksResultsGroupingTypeBuildRev = 'ResultsGroupingTypeBuild'; 518 ksResultsGroupingTypeTestBox = 'ResultsGroupingTypeTestBox'; 519 ksResultsGroupingTypeTestCase = 'ResultsGroupingTypeTestCase'; 520 ksResultsGroupingTypeSchedGroup = 'ResultsGroupingTypeSchedGroup'; 521 522 #kdResultGroupingMapOld = { 523 # ksResultsGroupingTypeNone: ('TestSets', None, None), 524 # ksResultsGroupingTypeTestGroup: ('TestSets', 'TestSets.idTestGroup', None), 525 # ksResultsGroupingTypeTestBox: ('TestSets', 'TestSets.idTestBox', None), 526 # ksResultsGroupingTypeTestCase: ('TestSets', 'TestSets.idTestCase', None), 527 # ksResultsGroupingTypeBuildRev: ('TestSets, Builds', 'Builds.iRevision', 528 # ' AND Builds.idBuild = TestSets.idBuild' 529 # ' AND Builds.tsExpire > TestSets.tsCreated' 530 # ' AND Builds.tsEffective <= TestSets.tsCreated' ), 531 # ksResultsGroupingTypeSchedGroup: ('TestSets, TestBoxes', 'TestBoxes.idSchedGroup', 532 # ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox'), 533 #}; 534 535 ## @name Result sorting options. 536 ## @{ 537 ksResultsSortByRunningAndStart = 'ResultsSortByRunningAndStart'; ##< Default 538 ksResultsSortByBuildRevision = 'ResultsSortByBuildRevision'; 539 ksResultsSortByTestBoxName = 'ResultsSortByTestBoxName'; 540 ksResultsSortByTestBoxOs = 'ResultsSortByTestBoxOs'; 541 ksResultsSortByTestBoxOsVersion = 'ResultsSortByTestBoxOsVersion'; 542 ksResultsSortByTestBoxOsArch = 'ResultsSortByTestBoxOsArch'; 543 ksResultsSortByTestBoxArch = 'ResultsSortByTestBoxArch'; 544 ksResultsSortByTestBoxCpuVendor = 'ResultsSortByTestBoxCpuVendor'; 545 ksResultsSortByTestBoxCpuName = 'ResultsSortByTestBoxCpuName'; 546 ksResultsSortByTestBoxCpuRev = 'ResultsSortByTestBoxCpuRev'; 547 ksResultsSortByTestBoxCpuFeatures = 'ResultsSortByTestBoxCpuFeatures'; 548 ksResultsSortByTestCaseName = 'ResultsSortByTestCaseName'; 549 kasResultsSortBy = { 550 ksResultsSortByRunningAndStart, 551 ksResultsSortByBuildRevision, 552 ksResultsSortByTestBoxName, 553 ksResultsSortByTestBoxOs, 554 ksResultsSortByTestBoxOsVersion, 555 ksResultsSortByTestBoxOsArch, 556 ksResultsSortByTestBoxArch, 557 ksResultsSortByTestBoxCpuVendor, 558 ksResultsSortByTestBoxCpuName, 559 ksResultsSortByTestBoxCpuRev, 560 ksResultsSortByTestBoxCpuFeatures, 561 ksResultsSortByTestCaseName, 562 }; 563 ## Used by the WUI for generating the drop down. 564 kaasResultsSortByTitles = ( 565 ( ksResultsSortByRunningAndStart, 'Running & Start TS' ), 566 ( ksResultsSortByBuildRevision, 'Build Revision' ), 567 ( ksResultsSortByTestBoxName, 'TestBox Name' ), 568 ( ksResultsSortByTestBoxOs, 'O/S' ), 569 ( ksResultsSortByTestBoxOsVersion, 'O/S Version' ), 570 ( ksResultsSortByTestBoxOsArch, 'O/S & Architecture' ), 571 ( ksResultsSortByTestBoxArch, 'Architecture' ), 572 ( ksResultsSortByTestBoxCpuVendor, 'CPU Vendor' ), 573 ( ksResultsSortByTestBoxCpuName, 'CPU Vendor & Name' ), 574 ( ksResultsSortByTestBoxCpuRev, 'CPU Vendor & Revision' ), 575 ( ksResultsSortByTestBoxCpuFeatures, 'CPU Features' ), 576 ( ksResultsSortByTestCaseName, 'Test Case Name' ), 577 ); 578 ## @} 579 580 ## Default sort by map. 581 kdResultSortByMap= { 582 ksResultsSortByRunningAndStart: ('', None, None, ''), 583 ksResultsSortByBuildRevision: ( 584 # Sorting tables. 585 ', Builds', 586 # Sorting table join(s). 587 ' AND TestSets.idBuild = Builds.idBuild' 588 ' AND Builds.tsExpire >= TestSets.tsCreated' 589 ' AND Builds.tsEffective <= TestSets.tsCreated', 590 # Start of ORDER BY statement. 591 ' Builds.iRevision DESC', 592 # Extra columns to fetch for the above ORDER BY to work in a SELECT DISTINCT statement. 593 '' ), 594 ksResultsSortByTestBoxName: ( 595 ', TestBoxes', 596 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 597 ' TestBoxes.sName DESC', 598 '' ), 599 ksResultsSortByTestBoxOsArch: ( 600 ', TestBoxes', 601 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 602 ' TestBoxes.sOs, TestBoxes.sCpuArch', 603 '' ), 604 ksResultsSortByTestBoxOs: ( 605 ', TestBoxes', 606 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 607 ' TestBoxes.sOs', 608 '' ), 609 ksResultsSortByTestBoxOsVersion: ( 610 ', TestBoxes', 611 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 612 ' TestBoxes.sOs, TestBoxes.sOsVersion DESC', 613 '' ), 614 ksResultsSortByTestBoxArch: ( 615 ', TestBoxes', 616 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 617 ' TestBoxes.sCpuArch', 618 '' ), 619 ksResultsSortByTestBoxCpuVendor: ( 620 ', TestBoxes', 621 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 622 ' TestBoxes.sCpuVendor', 623 '' ), 624 ksResultsSortByTestBoxCpuName: ( 625 ', TestBoxes', 626 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 627 ' TestBoxes.sCpuVendor, TestBoxes.sCpuName', 628 '' ), 629 ksResultsSortByTestBoxCpuRev: ( 630 ', TestBoxes', 631 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 632 ' TestBoxes.sCpuVendor, TestBoxes.lCpuRevision DESC', 633 ', TestBoxes.lCpuRevision' ), 634 ksResultsSortByTestBoxCpuFeatures: ( 635 ', TestBoxes', 636 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 637 ' TestBoxes.fCpuHwVirt DESC, TestBoxes.fCpuNestedPaging DESC, TestBoxes.fCpu64BitGuest DESC, TestBoxes.cCpus DESC', 638 ', TestBoxes.cCpus' ), 639 ksResultsSortByTestCaseName: ( 640 ', TestCases', 641 ' AND TestSets.idGenTestCase = TestCases.idGenTestCase', 642 ' TestCases.sName', 643 '' ), 644 }; 521 645 522 646 kdResultGroupingMap = { 523 ksResultsGroupingTypeNone: ('TestSets', None, None), 524 ksResultsGroupingTypeTestGroup: ('TestSets', 'TestSets.idTestGroup', None), 525 ksResultsGroupingTypeTestBox: ('TestSets', 'TestSets.idTestBox', None), 526 ksResultsGroupingTypeTestCase: ('TestSets', 'TestSets.idTestCase', None), 527 ksResultsGroupingTypeBuildRev: ('TestSets, Builds', 'Builds.iRevision', 528 ' AND Builds.idBuild = TestSets.idBuild' 529 ' AND Builds.tsExpire > TestSets.tsCreated' 530 ' AND Builds.tsEffective <= TestSets.tsCreated' ), 531 ksResultsGroupingTypeSchedGroup: ('TestSets, TestBoxes', 'TestBoxes.idSchedGroup', 532 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox'), 533 } 647 ksResultsGroupingTypeNone: ( 648 # Grouping tables; # Grouping field; # Grouping where addition. # Sort by overrides. 649 'TestSets', None, None, {} 650 ), 651 ksResultsGroupingTypeTestGroup: ('TestSets', 'TestSets.idTestGroup', None, {}), 652 ksResultsGroupingTypeTestBox: ('TestSets', 'TestSets.idTestBox', None, {}), 653 ksResultsGroupingTypeTestCase: ('TestSets', 'TestSets.idTestCase', None, {}), 654 ksResultsGroupingTypeBuildRev: ( 655 'TestSets, Builds', 656 'Builds.iRevision', 657 ' AND Builds.idBuild = TestSets.idBuild' 658 ' AND Builds.tsExpire > TestSets.tsCreated' 659 ' AND Builds.tsEffective <= TestSets.tsCreated', 660 { ksResultsSortByBuildRevision: ( '', None, ' Builds.iRevision DESC' ), } 661 ), 662 ksResultsGroupingTypeSchedGroup: ( 663 'TestSets, TestBoxes', 664 'TestBoxes.idSchedGroup', 665 ' AND TestSets.idGenTestBox = TestBoxes.idGenTestBox', 666 { ksResultsSortByTestBoxName: ( '', None, ' TestBoxes.sName DESC', '' ), 667 ksResultsSortByTestBoxOsArch: ( '', None, ' TestBoxes.sOs, TestBoxes.sCpuArch', '' ), 668 ksResultsSortByTestBoxOs: ( '', None, ' TestBoxes.sOs', '' ), 669 ksResultsSortByTestBoxOsVersion: ( '', None, ' TestBoxes.sOs, TestBoxes.sOsVersion DESC', '' ), 670 ksResultsSortByTestBoxArch: ( '', None, ' TestBoxes.sCpuArch', '' ), 671 ksResultsSortByTestBoxCpuVendor: ( '', None, ' TestBoxes.sCpuVendor', '' ), 672 ksResultsSortByTestBoxCpuName: ( '', None, ' TestBoxes.sCpuVendor, TestBoxes.sCpuName', '' ), 673 ksResultsSortByTestBoxCpuRev: ( 674 '', None, ' TestBoxes.sCpuVendor, TestBoxes.lCpuRevision DESC', ', TestBoxes.lCpuRevision' ), 675 ksResultsSortByTestBoxCpuFeatures: ( 676 ' TestBoxes.fCpuHwVirt DESC, TestBoxes.fCpuNestedPaging DESC, TestBoxes.fCpu64BitGuest DESC, ' 677 + 'TestBoxes.cCpus DESC', 678 ', TestBoxes.cCpus' ), } 679 ), 680 }; 681 534 682 535 683 def _getTimePeriodQueryPart(self, tsNow, sInterval): … … 555 703 return sRet 556 704 557 def fetchResultsForListing(self, iStart, cMaxRows, tsNow, sInterval, enmResult sGroupingType, iResultsGroupingValue,558 fOnlyFailures):705 def fetchResultsForListing(self, iStart, cMaxRows, tsNow, sInterval, enmResultSortBy, 706 enmResultsGroupingType, iResultsGroupingValue, fOnlyFailures): 559 707 """ 560 708 Fetches TestResults table content. … … 574 722 # Get SQL query parameters 575 723 # 576 if enmResultsGroupingType is None: 577 raise TMExceptionBase('Unknown grouping type') 578 if enmResultsGroupingType not in self.kdResultGroupingMap: 579 raise TMExceptionBase('Unknown grouping type') 580 sTables, sGroupingField, sGroupingCondition = self.kdResultGroupingMap[enmResultsGroupingType] 724 if enmResultsGroupingType is None or enmResultsGroupingType not in self.kdResultGroupingMap: 725 raise TMExceptionBase('Unknown grouping type'); 726 if enmResultSortBy is None or enmResultSortBy not in self.kasResultsSortBy: 727 raise TMExceptionBase('Unknown sorting'); 728 sGroupingTables, sGroupingField, sGroupingCondition, dSortingOverrides = self.kdResultGroupingMap[enmResultsGroupingType]; 729 if enmResultSortBy in dSortingOverrides: 730 sSortingTables, sSortingWhere, sSortingOrderBy, sSortingColumns = dSortingOverrides[enmResultSortBy]; 731 else: 732 sSortingTables, sSortingWhere, sSortingOrderBy, sSortingColumns = self.kdResultSortByMap[enmResultSortBy]; 581 733 582 734 # … … 613 765 ' TestSuiteBits.idBuild AS idBuildTestSuite,\n' \ 614 766 ' TestSuiteBits.iRevision AS iRevisionTestSuite,\n' \ 615 ' (TestSets.tsDone IS NULL) SortRunningFirst \n' \767 ' (TestSets.tsDone IS NULL) SortRunningFirst' + sSortingColumns + '\n' \ 616 768 'FROM BuildCategories,\n' \ 617 769 ' Builds,\n' \ … … 629 781 ' TestSets.idGenTestCase AS idGenTestCase,\n' \ 630 782 ' TestSets.idGenTestCaseArgs AS idGenTestCaseArgs\n' \ 631 ' FROM ' + s Tables + '\n' \783 ' FROM ' + sGroupingTables + sSortingTables + '\n' \ 632 784 ' WHERE ' + self._getTimePeriodQueryPart(tsNow, sInterval); 633 785 if fOnlyFailures: … … 638 790 if sGroupingCondition is not None: 639 791 sQuery += sGroupingCondition.replace(' AND ', ' AND '); 640 sQuery += ' ORDER BY (TestSets.tsDone IS NULL) DESC, TestSets.idTestSet DESC\n' \ 792 if sSortingWhere is not None: 793 sQuery += sSortingWhere.replace(' AND ', ' AND '); 794 sQuery += ' ORDER BY '; 795 if sSortingOrderBy is not None: 796 sQuery += sSortingOrderBy + ',\n '; 797 sQuery += '(TestSets.tsDone IS NULL) DESC, TestSets.idTestSet DESC\n' \ 641 798 ' LIMIT %s OFFSET %s\n' % (cMaxRows, iStart,); 642 799 … … 653 810 ' AND TestSets.idGenTestCase = TestCases.idGenTestCase\n' \ 654 811 ' AND TestSets.idGenTestCaseArgs = TestCaseArgs.idGenTestCaseArgs\n' \ 655 'ORDER BY (TestSets.tsDone IS NULL) DESC, TestSets.idTestSet DESC\n' 812 'ORDER BY '; 813 if sSortingOrderBy is not None: 814 sQuery += sSortingOrderBy + ',\n '; 815 sQuery += '(TestSets.tsDone IS NULL) DESC, TestSets.idTestSet DESC\n'; 656 816 657 817 # … … 686 846 if enmResultsGroupingType not in self.kdResultGroupingMap: 687 847 raise TMExceptionBase('Unknown grouping type') 688 s Tables, sGroupingField, sGroupingCondition = self.kdResultGroupingMap[enmResultsGroupingType]848 sGroupingTables, sGroupingField, sGroupingCondition, _ = self.kdResultGroupingMap[enmResultsGroupingType]; 689 849 690 850 # … … 692 852 # 693 853 sQuery = 'SELECT COUNT(idTestSet)\n' \ 694 'FROM ' + s Tables + '\n' \854 'FROM ' + sGroupingTables + '\n' \ 695 855 'WHERE ' + self._getTimePeriodQueryPart(tsNow, sInterval); 696 856 if fOnlyFailures:
Note:
See TracChangeset
for help on using the changeset viewer.