From 134331f1290ec18ac3f988e13a4c12f143532fe1 Mon Sep 17 00:00:00 2001
From: pierre
Date: Tue, 12 Jan 2010 17:32:39 +0000
Subject: [PATCH] * more updates for test history
git-svn-id: trunk@14627 -
---
tests/utils/testsuite/utests.pp | 278 ++++++++++++++++++++++++++++----
1 file changed, 251 insertions(+), 27 deletions(-)
diff --git a/tests/utils/testsuite/utests.pp b/tests/utils/testsuite/utests.pp
index ea91575a45..4842ad6892 100644
--- a/tests/utils/testsuite/utests.pp
+++ b/tests/utils/testsuite/utests.pp
@@ -4,7 +4,24 @@ unit utests;
interface
-uses cgiapp,sysutils,mysql50conn,sqldb,whtml,dbwhtml,db,
+{$ifdef FPC}
+ {$ifdef VER2_4}
+ {$define USE_FPCGI}
+ {$endif VER2_4}
+ {$ifdef VER2_5}
+ {$define USE_FPCGI}
+ {$endif VER2_5}
+{$endif FPC}
+
+{$undef USE_FPCGI}
+
+uses
+{$ifdef USE_FPCGI}
+ fpcgi,
+{$else not USE_FPCGI}
+ cgiapp,
+{$endif not USE_FPCGI}
+ sysutils,mysql50conn,sqldb,whtml,dbwhtml,db,
tresults,
Classes,ftFont,fpimage,fpimgcanv,fpWritePng,fpcanvas;
@@ -38,6 +55,7 @@ Type
FViewVCURL : String;
FDate : TDateTime;
FDebug,
+ FListAll,
FNoSkipped,
FOnlyFailed : Boolean;
FRunSkipCount,
@@ -56,6 +74,7 @@ Type
Procedure FormatFailedOverview(Sender : TObject; Var CellData : String);
Procedure FormatTestRunOverview(Sender : TObject; Var CellData : String);
Procedure FormatFileDetails(Sender: TObject; var CellData: String);
+ Procedure FormatFileIDDetails(Sender: TObject; var CellData: String);
Procedure FormatTestResult(Sender: TObject; var CellData: String);
Procedure DoDrawPie(Img : TFPCustomImage; Skipped,Failed,Total : Integer);
Public
@@ -72,6 +91,7 @@ Type
Function InitCGIVars : Integer;
Procedure DoRun; override;
Procedure EmitOverviewForm;
+ Procedure EmitHistoryForm;
Procedure ShowRunResults;
Procedure ShowRunComparison;
Procedure ShowOneTest;
@@ -295,6 +315,8 @@ begin
FRunFailedCount:=StrToIntDef(RequestVariables['PIEFAILED'],0);
S:=RequestVariables['DEBUGCGI'];
FDebug:=(S='1');
+ S:=RequestVariables['listall'];
+ FListAll:=(S='1');
Result:=FAction;
end;
@@ -506,6 +528,137 @@ begin
ShowRunOverview;
end;
+Procedure TTestSuite.EmitHistoryForm;
+
+begin
+ ConnectToDB;
+ ContentType:='text/html';
+ EmitContentType;
+ EmitTitle(Title);
+ With FHTMLWriter do
+ begin
+ HeaderStart(1);
+ Write('View Test suite results');
+ HeaderEnd(1);
+ Write('Please specify search criteria:');
+ ParagraphStart;
+ FormStart(TestsuiteCGIURL,'');
+ if FDebug then
+ EmitHiddenVar('DEBUGCGI', '1');
+ EmitHiddenVar('action','4');
+ TableStart(2,true);
+ RowStart;
+ CellStart;
+ Write('File:');
+ CellNext;
+ EmitInput('testfilename',FTestfilename);
+ CellEnd;
+ RowNext;
+ (* CellStart;
+ Write('FileID:');
+ CellNext;
+ EmitInput('testfileid',FTestfileid);
+ CellEnd;
+ RowNext; *)
+
+ CellStart;
+ Write('Operating system:');
+ CellNext;
+ ComboBoxFromQuery('os','SELECT TO_ID,TO_NAME FROM TESTOS ORDER BY TO_NAME',FOS);
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('Processor:');
+ CellNext;
+ ComboBoxFromQuery('cpu','SELECT TC_ID,TC_NAME FROM TESTCPU ORDER BY TC_NAME',FCPU);
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('Version');
+ CellNext;
+ ComboBoxFromQuery('version','SELECT TV_ID,TV_VERSION FROM TESTVERSION ORDER BY TV_VERSION DESC',FVERSION);
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('Date');
+ CellNext;
+ If (FDate=0) then
+ EmitInput('date','')
+ else
+ EmitInput('date',DateToStr(FDate));
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('Submitter');
+ CellNext;
+ If (FSubmitter='') then
+ EmitInput('submitter','')
+ else
+ EmitInput('submitter',FSubmitter);
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('Machine');
+ CellNext;
+ If (FMachine='') then
+ EmitInput('machine','')
+ else
+ EmitInput('machine',FMachine);
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('Comment');
+ CellNext;
+ If (FComment='') then
+ EmitInput('comment','')
+ else
+ EmitInput('comment',FComment);
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('Limit');
+ CellNext;
+ EmitInput('limit',IntToStr(FLimit));
+ CellEnd;
+
+ RowNext;
+ CellStart;
+ Write('Cond');
+ CellNext;
+ If (FCond='') then
+ EmitInput('cond','')
+ else
+ EmitInput('cond',FCond);
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('Only failed tests');
+ CellNext;
+ EmitCheckBox('failedonly','1',FonlyFailed);
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('Hide skipped tests');
+ CellNext;
+ EmitCheckBox('noskipped','1',FNoSkipped);
+ CellEnd;
+ RowNext;
+ CellStart;
+ Write('List all tests');
+ CellNext;
+ EmitCheckBox('listall','1',FListAll);
+ CellEnd;
+
+ RowEnd;
+ TableEnd;
+ ParaGraphStart;
+ EmitSubmitButton('','Search');
+ EmitResetButton('','Reset form');
+ FormEnd;
+ end;
+end;
+
+
procedure TTestSuite.EmitEnd;
begin
if not FNeedEnd then
@@ -897,6 +1050,11 @@ begin
With Q do
try
Open;
+ while not EOF do
+ Next;
+ RecNo:=0;
+
+ DumpLn(Format('Record count: %d
',[Q.RecordCount]));
Try
With CreateTableProducer(Q) do
Try
@@ -909,6 +1067,9 @@ begin
FL:=FL+',Result';
CreateColumns(FL);
OnGetRowAttributes:=@GetRunRowAttr;
+ TableColumns.ColumnByNAme('Id').OnGetCellContents:=
+ @FormatFileIDDetails;
+
TableColumns.ColumnByNAme('Filename').OnGetCellContents:=
@FormatFileDetails;
TableColumns.ColumnByNAme('Result').OnGetCellContents:=
@@ -918,7 +1079,6 @@ begin
Finally
Free;
end;
- DumpLn(Format('Record count: %d
',[Q.RecordCount]));
Finally
Close;
end;
@@ -1201,7 +1361,8 @@ end;
Procedure TTestSuite.ShowHistory;
Var
- S,FL : String;
+ S,FL,cpu,version,os : String;
+ date : TDateTime;
Qry : String;
Base, Category : string;
Q : TSQLQuery;
@@ -1211,6 +1372,7 @@ Var
total_count, skip_count, not_skip_count : longint;
TS : TTestStatus;
result_count : array[TTestStatus] of longint;
+ first_date, last_date : array[TTestStatus] of TDateTime;
FieldName,FieldValue,
Log,Source : String;
Res : Boolean;
@@ -1242,11 +1404,12 @@ begin
begin
// This is useless as it is now
// It should be integrated into a form probably PM
- Write('Only failed tests');
- EmitCheckBox('failedonly','1',FonlyFailed);
- Write('Hide skipped tests');
- EmitCheckBox('noskipped','1',FNoSkipped);
+ //Write('Only failed tests');
+ //EmitCheckBox('failedonly','1',FonlyFailed);
+ //Write('Hide skipped tests');
+ //EmitCheckBox('noskipped','1',FNoSkipped);
Res:=true;
+ EmitHistoryForm;
end;
If Res then
begin
@@ -1254,10 +1417,7 @@ begin
Write('Test file "'+FTestFileName+'" information:');
HeaderEnd(2);
ParaGraphStart;
- if FTestFileID<>'' then
- S:='SELECT * FROM TESTS WHERE T_ID='+FTestFileID
- else
- S:='SELECT * FROM TESTS WHERE T_NAME='+FTestFileName;
+ S:='SELECT * FROM TESTS WHERE T_ID='+FTestFileID;
Q:=CreateDataSet(S);
With Q do
Try
@@ -1267,7 +1427,6 @@ begin
begin
FieldValue:=Fields[i].AsString;
FieldName:=Fields[i].DisplayName;
-
if (FieldValue<>'') and (FieldValue<>'-') and
(FieldName<>'T_NAME') and (FieldName<>'T_SOURCE') then
begin
@@ -1297,20 +1456,35 @@ begin
ParaGraphStart;
S:='SELECT TR_ID,TR_TESTRUN_FK,TR_TEST_FK,TR_OK, TR_SKIP,TR_RESULT '
//S:='SELECT * '
+ +',TC_NAME AS CPU, TV_VERSION AS VERSION, TO_NAME AS OS'
+',TU_ID,TU_DATE,TU_SUBMITTER,TU_MACHINE,TU_COMMENT '
- +' FROM TESTRUN LEFT JOIN TESTRESULTS ON (TR_TESTRUN_FK=TU_ID)'
- +' WHERE (TR_TEST_FK='+FTestFileID+')'
- +' AND (TR_TESTRUN_FK=TU_ID)';
+ +' FROM TESTRUN '
+ +' LEFT JOIN TESTRESULTS ON (TR_TESTRUN_FK=TU_ID)'
+ +' LEFT JOIN TESTOS ON (TU_OS_FK=TO_ID)'
+ +' LEFT JOIN TESTCPU ON (TU_CPU_FK=TC_ID)'
+ +' LEFT JOIN TESTVERSION ON (TU_VERSION_FK=TV_ID)'
+ +' WHERE (TR_TEST_FK='+FTestFileID+')';
If FOnlyFailed then
S:=S+' AND (TR_OK="-")';
+ If (FCPU<>'') and (GetCPUName(FCPU)<>'All') then
+ S:=S+' AND (TU_CPU_FK='+FCPU+')';
+ If (FVersion<>'') and (GetVersionName(FVersion)<>'All') then
+ S:=S+' AND (TU_VERSION_FK='+FVERSION+')';
+ if (FOS<>'') and (GetOSName(FOS)<>'All') then
+ S:=S+' AND (TU_OS_FK='+FOS+')';
+
If FSubmitter<>'' then
S:=S+' AND (TU_SUBMITTER='''+FSubmitter+''')';
If FMachine<>'' then
S:=S+' AND (TU_MACHINE='''+FMachine+''')';
If FComment<>'' then
S:=S+' AND (TU_COMMENT='''+FComment+''')';
+ if FDATE<>0 then
+ S:=S+' AND (TU_DATE >= '''+FormatDateTime('YYYY-MM-DD',FDate)+''')';
- S:=S+' ORDER BY TU_ID DESC LIMIT '+IntToStr(FLimit);
+ S:=S+' ORDER BY TU_ID DESC';
+ if FDATE=0 then
+ S:=S+' LIMIT '+IntToStr(FLimit);
Qry:=S;
If FDebug then
begin
@@ -1324,6 +1498,13 @@ begin
With Q do
try
Open;
+
+ while not EOF do
+ Next;
+ RecNo:=0;
+ If FDebug or FListAll then
+ begin
+
With CreateTableProducer(Q) do
Try
Border:=True;
@@ -1334,6 +1515,13 @@ begin
FL:=FL+',TU_MACHINE';
if Fcomment='' then
FL:=FL+',TU_COMMENT';
+ if (FOS='') or (GetOSName(FOS)='All') then
+ FL:=FL+',OS';
+ if (FCPU='') or (GetCPUName(FCPU)='All') then
+ FL:=FL+',CPU';
+ if (FVersion='') or (GetVersionName(FVersion)='All') then
+ FL:=FL+',VERSION';
+
CreateColumns(FL);
//TableColumns.Delete(TableColumns.ColumnByName('TR_TEST_FK').Index);
TableColumns.ColumnByNAme('TR_TESTRUN_FK').OnGetCellContents:=
@@ -1346,13 +1534,15 @@ begin
Finally
Free;
end;
- DumpLn(Format('Record count: %d
',[Q.RecordCount]));
+ end;
+
+ DumpLn(Format('Record count: %d
',[Q.RecordCount]));
Try
if FDebug then
begin
Writeln(stdout,'FieldKind=',Fields[0].FieldKind);
- Writeln(stdout,'iDataType=',Fields[0].DataType);
+ Writeln(stdout,'DataType=',Fields[0].DataType);
system.flush(stdout);
end;
@@ -1366,13 +1556,6 @@ begin
begin
Q.RecNo:=i;
inc(total_count);
- S:=Fields[0].AsString;
- if FDebug then
- begin
- Writeln(stdout,'i=',i);
- Writeln(stdout,'S=',S);
- system.flush(stdout);
- end;
S:=Fields[3].AsString;
if S='+' then
inc(OK_count)
@@ -1384,21 +1567,44 @@ begin
else
inc(not_skip_count);
S:=Fields[5].AsString;
+ cpu:=Fields[6].ASString;
+ version:=Fields[7].AsString;
+ os:=Fields[8].AsString;
+ date:=Fields[10].ASDateTime;
system.val(S,resi,error);
if (error=0) and (Resi>=longint(FirstStatus)) and
(Resi<=longint(LastStatus)) then
begin
TS:=TTestStatus(Resi);
+ if Result_count[TS]=0 then
+ begin
+ first_date[TS]:=date;
+ last_date[TS]:=date;
+ end
+ else
+ begin
+ if (date>last_date[TS]) then
+ last_date[TS]:=date;
+ if dateTotal = %d
',[total_count]));
- DumpLn(Format('OK=%d Percentage= %3.2f
',[OK_count,OK_count*100/total_count]));
+ if Total_count > 0 then
+ DumpLn(Format('OK=%d Percentage= %3.2f
',[OK_count,OK_count*100/total_count]));
+ if Skip_count > 0 then
+ DumpLn(Format('Skipped=%d Percentage= %3.2f
',[Skip_count,Skip_count*100/total_count]));
For TS:=FirstStatus to LastStatus do
if Result_count[TS]>0 then
- DumpLn(Format('%s=%d ', [StatusText[TS],Result_count[TS]]));
+ DumpLn(Format('%s=%d From %s to %s
',
+ [StatusText[TS],Result_count[TS],
+ DateTimeToStr(first_date[TS]),
+ DateTimeToStr(last_date[TS])]));
Finally
Close;
@@ -1730,6 +1936,24 @@ begin
CellData:=Format('%s',[S,CellData]);
end;
+procedure TTestSuite.FormatFileIDDetails(Sender: TObject; var CellData: String);
+
+Var
+ S: String;
+ P : TTableProducer;
+
+begin
+ P:=(Sender as TTableProducer);
+ if FVersion<>'' then
+ S:=Format(TestSuiteCGIURL + '?action=4&version=%s&testfileid=%s',
+ [FVersion,P.DataSet.FieldByName('Id').AsString])
+ else
+ S:=Format(TestSuiteCGIURL + '?action=4&testfileid=%s',
+ [P.DataSet.FieldByName('Id').AsString]);
+ CellData:=Format('%s',[S,CellData]);
+end;
+
+
procedure TTestSuite.FormatFileDetails(Sender: TObject; var CellData: String);
Var