mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-06 11:50:19 +02:00
* more updates for test history
git-svn-id: trunk@14769 -
This commit is contained in:
parent
1b55473ad5
commit
9c487c236a
@ -76,6 +76,8 @@ Type
|
||||
Procedure FormatFileDetails(Sender: TObject; var CellData: String);
|
||||
Procedure FormatFileIDDetails(Sender: TObject; var CellData: String);
|
||||
Procedure FormatTestResult(Sender: TObject; var CellData: String);
|
||||
Function FormatDetailURL(const RunIdStr, CellData : String) : string;
|
||||
|
||||
Procedure DoDrawPie(Img : TFPCustomImage; Skipped,Failed,Total : Integer);
|
||||
Public
|
||||
Function CreateDataset(Qry : String) : TSQLQuery;
|
||||
@ -88,6 +90,7 @@ Type
|
||||
Function GetCPUName(ID : String) : String;
|
||||
Function GetVersionName(ID : String) : String;
|
||||
Function GetTestFileName(ID : String) : String;
|
||||
Function GetFailCount(RunID : longint) : string;
|
||||
Function InitCGIVars : Integer;
|
||||
Procedure DoRun; override;
|
||||
Procedure EmitOverviewForm;
|
||||
@ -255,7 +258,10 @@ begin
|
||||
S:=RequestVariables['action'];
|
||||
if Length(S) = 0 then
|
||||
S:=RequestVariables['TESTACTION'];
|
||||
FAction:=StrToIntDef(S,0);
|
||||
if S='View history' then
|
||||
FAction:=4
|
||||
else
|
||||
FAction:=StrToIntDef(S,0);
|
||||
S:=RequestVariables['limit'];
|
||||
if Length(S) = 0 then
|
||||
S:=RequestVariables['TESTLIMIT'];
|
||||
@ -466,7 +472,7 @@ begin
|
||||
else
|
||||
EmitInput('date',DateToStr(FDate));
|
||||
CellEnd;
|
||||
if FDebug then
|
||||
//if FDebug then
|
||||
begin
|
||||
RowNext;
|
||||
CellStart;
|
||||
@ -522,6 +528,8 @@ begin
|
||||
TableEnd;
|
||||
ParaGraphStart;
|
||||
EmitSubmitButton('','Search');
|
||||
EmitSubmitButton('action','View history');
|
||||
|
||||
EmitResetButton('','Reset form');
|
||||
FormEnd;
|
||||
end;
|
||||
@ -767,9 +775,9 @@ begin
|
||||
If FSubmitter<>'' then
|
||||
S:=S+' AND (TU_SUBMITTER='''+FSubmitter+''')';
|
||||
If FMachine<>'' then
|
||||
S:=S+' AND TU_MACHINE='''+FMachine+''')';
|
||||
S:=S+' AND (TU_MACHINE='''+FMachine+''')';
|
||||
If FComment<>'' then
|
||||
S:=S+' AND TU_COMMENT='''+Fcomment+''')';
|
||||
S:=S+' AND (TU_COMMENT LIKE '''+Fcomment+''')';
|
||||
If FCond<>'' then
|
||||
S:=S+' AND ('+FCond+')';
|
||||
If FOnlyFailed then
|
||||
@ -822,6 +830,12 @@ begin
|
||||
Result:=GetSingleTon('SELECT T_NAME FROM TESTS WHERE T_ID='+ID);
|
||||
end;
|
||||
|
||||
Function TTestsuite.GetFailCount(RunID : longint) : string;
|
||||
begin
|
||||
if RunID<>0 then
|
||||
Result:=GetSingleTon('SELECT (TU_FAILEDTOCOMPILE + TU_FAILEDTOFAIL + TU_FAILEDTORUN) FROM TESTRUN WHERE TU_ID='+IntToStr(RunID));
|
||||
end;
|
||||
|
||||
Function TTestSuite.GetCPUName(ID : String) : String;
|
||||
|
||||
begin
|
||||
@ -840,7 +854,12 @@ Function TTestSuite.ShowRunData : Boolean;
|
||||
|
||||
Const
|
||||
SGetRunData = 'SELECT TU_ID,TU_DATE,TC_NAME,TO_NAME,' +
|
||||
'TU_SUBMITTER,TU_MACHINE,TU_COMMENT,TV_VERSION'+
|
||||
'TU_SUBMITTER,TU_MACHINE,TU_COMMENT,TV_VERSION,'+
|
||||
'(TU_SUCCESSFULLYFAILED+TU_SUCCESFULLYCOMPILED+TU_SUCCESSFULLYRUN) AS OK,'+
|
||||
'(TU_FAILEDTOCOMPILE+TU_FAILEDTORUN+TU_FAILEDTOFAIL) as Failed,'+
|
||||
'(TU_SUCCESSFULLYFAILED+TU_SUCCESFULLYCOMPILED+TU_SUCCESSFULLYRUN+'+
|
||||
'TU_FAILEDTOCOMPILE+TU_FAILEDTORUN+TU_FAILEDTOFAIL) as Total'+
|
||||
|
||||
' FROM TESTRUN,TESTCPU,TESTOS,TESTVERSION '+
|
||||
'WHERE '+
|
||||
' (TC_ID=TU_CPU_FK) AND '+
|
||||
@ -908,6 +927,22 @@ begin
|
||||
if Q2 <> nil then
|
||||
Write(Q2.FieldByNAme('TV_VERSION').AsString);
|
||||
CellEnd;
|
||||
RowNext;
|
||||
CellStart;
|
||||
Write('Fails/OK/Total:');
|
||||
CellNext;
|
||||
Write(Q1.FieldByName('Failed').AsString);
|
||||
Write('/'+Q1.FieldByName('OK').AsString);
|
||||
Write('/'+Q1.FieldByName('Total').AsString);
|
||||
CellNext;
|
||||
if Q2 <> nil then
|
||||
begin
|
||||
Write(Q2.FieldByName('Failed').AsString);
|
||||
Write('/'+Q2.FieldByName('Ok').AsString);
|
||||
Write('/'+Q2.FieldByName('Total').AsString);
|
||||
end;
|
||||
CellEnd;
|
||||
|
||||
RowNext;
|
||||
CellStart;
|
||||
Write('Comment:');
|
||||
@ -1336,7 +1371,7 @@ begin
|
||||
DumpLn('<P>No Source in TestSuite DataBase.</P>');
|
||||
DumpLn('Link to SVN view of '+
|
||||
'<A HREF="'+FViewVCURL+FTestFileName+'?view=markup'+
|
||||
'" TARGET="_blank"> '+FTestFileName+'</A> source. ');
|
||||
'" TARGET="fpc_source"> '+FTestFileName+'</A> source. ');
|
||||
HeaderEnd(3);
|
||||
end
|
||||
else
|
||||
@ -1344,7 +1379,7 @@ begin
|
||||
HeaderStart(3);
|
||||
DumpLn('Link to SVN view of '+
|
||||
'<A HREF="'+FViewVCURL+FTestFileName+'?view=markup'+
|
||||
'" TARGET="_blank"> '+FTestFileName+'</A> source. ');
|
||||
'" TARGET="fpc_source"> '+FTestFileName+'</A> source. ');
|
||||
HeaderEnd(3);
|
||||
end;
|
||||
end;
|
||||
@ -1359,25 +1394,48 @@ end;
|
||||
|
||||
|
||||
Procedure TTestSuite.ShowHistory;
|
||||
|
||||
Const
|
||||
MaxCombo = 50;
|
||||
Type
|
||||
StatusLongintArray = Array [TTestStatus] of longint;
|
||||
StatusDateTimeArray = Array [TTestStatus] of TDateTime;
|
||||
AStatusLA = Array[1..MaxCombo] of StatusLongintArray;
|
||||
AStatusDTA = Array[1..MaxCombo] of StatusDateTimeArray;
|
||||
PStatusLA = ^AStatusLA;
|
||||
PStatusDTA = ^AStatusDTA;
|
||||
Var
|
||||
S,FL,cpu,version,os : String;
|
||||
date : TDateTime;
|
||||
Qry : String;
|
||||
Base, Category : string;
|
||||
Q : TSQLQuery;
|
||||
i : longint;
|
||||
i,run_id,os_id,version_id,cpu_id : longint;
|
||||
run_ind,os_ind,version_ind,cpu_ind,
|
||||
ok_ind,skip_ind,result_ind,date_ind : longint;
|
||||
os_size, cpu_size, version_size : longint;
|
||||
os_last, cpu_last, version_last : longint;
|
||||
error : word;
|
||||
OK_count, not_OK_count,resi,
|
||||
total_count, skip_count, not_skip_count : longint;
|
||||
TS : TTestStatus;
|
||||
result_count : array[TTestStatus] of longint;
|
||||
result_count : StatusLongintArray;
|
||||
os_count,cpu_count,version_count: PStatusLA;
|
||||
first_date, last_date : array[TTestStatus] of TDateTime;
|
||||
first_date_id, last_date_id : array[TTestStatus] of longint;
|
||||
os_first_date, os_last_date,
|
||||
cpu_first_date, cpu_last_date,
|
||||
version_first_date, version_last_date : PStatusDTA;
|
||||
os_first_date_id, os_last_date_id,
|
||||
cpu_first_date_id, cpu_last_date_id,
|
||||
version_first_date_id, version_last_date_id : PStatusLA;
|
||||
FieldName,FieldValue,
|
||||
Log,Source : String;
|
||||
Res : Boolean;
|
||||
ver : known_versions;
|
||||
begin
|
||||
os_count:=nil;
|
||||
cpu_count:=nil;
|
||||
version_count:=nil;
|
||||
ConnectToDB;
|
||||
ContentType:='text/html';
|
||||
EmitContentType;
|
||||
@ -1458,6 +1516,7 @@ begin
|
||||
//S:='SELECT * '
|
||||
+',TC_NAME AS CPU, TV_VERSION AS VERSION, TO_NAME AS OS'
|
||||
+',TU_ID,TU_DATE,TU_SUBMITTER,TU_MACHINE,TU_COMMENT '
|
||||
+',TO_ID,TC_ID,TV_ID'
|
||||
+' FROM TESTRUN '
|
||||
+' LEFT JOIN TESTRESULTS ON (TR_TESTRUN_FK=TU_ID)'
|
||||
+' LEFT JOIN TESTOS ON (TU_OS_FK=TO_ID)'
|
||||
@ -1466,19 +1525,77 @@ begin
|
||||
+' WHERE (TR_TEST_FK='+FTestFileID+')';
|
||||
If FOnlyFailed then
|
||||
S:=S+' AND (TR_OK="-")';
|
||||
If FNoSkipped then
|
||||
S:=S+' AND (TR_SKIP="-")';
|
||||
If (FCPU<>'') and (GetCPUName(FCPU)<>'All') then
|
||||
S:=S+' AND (TU_CPU_FK='+FCPU+')';
|
||||
begin
|
||||
S:=S+' AND (TU_CPU_FK='+FCPU+')';
|
||||
cpu_size:=0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
cpu_last:=StrToInt(GetSingleton('SELECT COUNT(*) FROM TESTCPU'));
|
||||
cpu_size:=Sizeof(StatusLongintArray)*(1+cpu_last);
|
||||
cpu_count:=GetMem(cpu_size);
|
||||
FillChar(cpu_count^,cpu_size,#0);
|
||||
cpu_first_date_id:=GetMem(cpu_size);
|
||||
FillChar(cpu_first_date_id^,cpu_size,#0);
|
||||
cpu_last_date_id:=GetMem(cpu_size);
|
||||
FillChar(cpu_last_date_id^,cpu_size,#0);
|
||||
cpu_first_date:=GetMem(cpu_last*SizeOf(StatusDateTimeArray));
|
||||
FillChar(cpu_first_date^,cpu_last*Sizeof(StatusDateTimeArray),#0);
|
||||
cpu_last_date:=GetMem(cpu_last*SizeOf(StatusDateTimeArray));
|
||||
FillChar(cpu_last_date^,cpu_last*Sizeof(StatusDateTimeArray),#0);
|
||||
end;
|
||||
If (FVersion<>'') and (GetVersionName(FVersion)<>'All') then
|
||||
S:=S+' AND (TU_VERSION_FK='+FVERSION+')';
|
||||
begin
|
||||
S:=S+' AND (TU_VERSION_FK='+FVERSION+')';
|
||||
version_size:=0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
version_last:=StrToInt(GetSingleton('SELECT COUNT(*) FROM TESTVERSION'));
|
||||
version_size:=Sizeof(StatusLongintArray)*(1+version_last);
|
||||
version_count:=GetMem(version_size);
|
||||
FillChar(version_count^,version_size,#0);
|
||||
version_first_date_id:=GetMem(version_size);
|
||||
FillChar(version_first_date_id^,version_size,#0);
|
||||
version_last_date_id:=GetMem(version_size);
|
||||
FillChar(version_last_date_id^,version_size,#0);
|
||||
version_first_date:=GetMem(version_last*SizeOf(StatusDateTimeArray));
|
||||
FillChar(version_first_date^,version_last*Sizeof(StatusDateTimeArray),#0);
|
||||
version_last_date:=GetMem(version_last*SizeOf(StatusDateTimeArray));
|
||||
FillChar(version_last_date^,version_last*Sizeof(StatusDateTimeArray),#0);
|
||||
|
||||
end;
|
||||
|
||||
if (FOS<>'') and (GetOSName(FOS)<>'All') then
|
||||
S:=S+' AND (TU_OS_FK='+FOS+')';
|
||||
begin
|
||||
S:=S+' AND (TU_OS_FK='+FOS+')';
|
||||
os_size:=0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
os_last:=StrToInt(GetSingleton('SELECT COUNT(*) FROM TESTOS'));
|
||||
os_size:=Sizeof(StatusLongintArray)*(1+os_last);
|
||||
os_count:=GetMem(os_size);
|
||||
FillChar(os_count^,os_size,#0);
|
||||
os_first_date_id:=GetMem(os_size);
|
||||
FillChar(os_first_date_id^,os_size,#0);
|
||||
os_last_date_id:=GetMem(os_size);
|
||||
FillChar(os_last_date_id^,os_size,#0);
|
||||
os_first_date:=GetMem(os_last*SizeOf(StatusDateTimeArray));
|
||||
FillChar(os_first_date^,os_last*Sizeof(StatusDateTimeArray),#0);
|
||||
os_last_date:=GetMem(os_last*SizeOf(StatusDateTimeArray));
|
||||
FillChar(os_last_date^,os_last*Sizeof(StatusDateTimeArray),#0);
|
||||
end;
|
||||
|
||||
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+''')';
|
||||
S:=S+' AND (TU_COMMENT LIKE '''+FComment+''')';
|
||||
if FDATE<>0 then
|
||||
S:=S+' AND (TU_DATE >= '''+FormatDateTime('YYYY-MM-DD',FDate)+''')';
|
||||
|
||||
@ -1501,7 +1618,288 @@ begin
|
||||
|
||||
while not EOF do
|
||||
Next;
|
||||
RecNo:=0;
|
||||
|
||||
DumpLn(Format('<p>Record count: %d </p>',[Q.RecordCount]));
|
||||
if RecordCount>0 then
|
||||
RecNo:=0;
|
||||
|
||||
Try
|
||||
if FDebug then
|
||||
begin
|
||||
Writeln(stdout,'FieldKind=',Fields[0].FieldKind);
|
||||
Writeln(stdout,'DataType=',Fields[0].DataType);
|
||||
system.flush(stdout);
|
||||
end;
|
||||
|
||||
total_count:=0;
|
||||
OK_count:=0;
|
||||
not_OK_count:=0;
|
||||
skip_count:=0;
|
||||
not_skip_count:=0;
|
||||
fillchar(Result_Count,Sizeof(Result_count),#0);
|
||||
ok_ind:=FieldByName('TR_OK').Index;
|
||||
skip_ind:=FieldBYName('TR_SKIP').Index;
|
||||
result_ind:=FieldByName('TR_RESULT').Index;
|
||||
cpu_ind:=FieldByName('TC_ID').Index;
|
||||
os_ind:=FieldByName('TO_ID').Index;
|
||||
version_ind:=FieldByName('TV_ID').Index;
|
||||
date_ind:=FieldByName('TU_DATE').Index;
|
||||
run_ind:=FieldByName('TU_ID').Index;
|
||||
For i:=0 to Q.RecordCount-1 do
|
||||
begin
|
||||
Q.RecNo:=i;
|
||||
inc(total_count);
|
||||
S:=Fields[ok_ind].AsString;
|
||||
|
||||
if S='+' then
|
||||
inc(OK_count)
|
||||
else
|
||||
inc(not_OK_count);
|
||||
S:=Fields[skip_ind].AsString;
|
||||
if S='+' then
|
||||
inc(skip_count)
|
||||
else
|
||||
inc(not_skip_count);
|
||||
S:=Fields[result_ind].AsString;
|
||||
cpu:=Fields[cpu_ind].ASString;
|
||||
version:=Fields[version_ind].AsString;
|
||||
os:=Fields[os_ind].AsString;
|
||||
date:=Fields[date_ind].ASDateTime;
|
||||
os_id:=Fields[os_ind].AsLongint;
|
||||
cpu_id:=Fields[cpu_ind].AsLongint;
|
||||
version_id:=Fields[version_ind].AsLongint;
|
||||
system.val(S,resi,error);
|
||||
run_id:=Fields[run_ind].ASLongint;
|
||||
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;
|
||||
first_date_id[TS]:=run_id;
|
||||
last_date_id[TS]:=run_id;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (date>last_date[TS]) then
|
||||
begin
|
||||
last_date[TS]:=date;
|
||||
last_date_id[TS]:=run_id;
|
||||
end;
|
||||
if date<first_date[TS] then
|
||||
begin
|
||||
first_date[TS]:=date;
|
||||
first_date_id[TS]:=run_id;
|
||||
end;
|
||||
end;
|
||||
|
||||
inc(Result_count[TS]);
|
||||
if assigned(cpu_count) and (cpu_id<=cpu_last) then
|
||||
begin
|
||||
if cpu_count^[cpu_id,TS]=0 then
|
||||
begin
|
||||
cpu_first_date^[cpu_id,TS]:=date;
|
||||
cpu_last_date^[cpu_id,TS]:=date;
|
||||
cpu_first_date_id^[cpu_id,TS]:=run_id;
|
||||
cpu_last_date_id^[cpu_id,TS]:=run_id;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (date>cpu_last_date^[cpu_id,TS]) then
|
||||
begin
|
||||
cpu_last_date^[cpu_id,TS]:=date;
|
||||
cpu_last_date_id^[cpu_id,TS]:=run_id;
|
||||
end;
|
||||
if date<cpu_first_date^[cpu_id,TS] then
|
||||
begin
|
||||
cpu_first_date^[cpu_id,TS]:=date;
|
||||
cpu_first_date_id^[cpu_id,TS]:=run_id;
|
||||
end;
|
||||
end;
|
||||
inc(cpu_count^[cpu_id,TS]);
|
||||
end;
|
||||
if assigned(os_count) and (os_id<=os_last) then
|
||||
begin
|
||||
if os_count^[os_id,TS]=0 then
|
||||
begin
|
||||
os_first_date^[os_id,TS]:=date;
|
||||
os_last_date^[os_id,TS]:=date;
|
||||
os_first_date_id^[os_id,TS]:=run_id;
|
||||
os_last_date_id^[os_id,TS]:=run_id;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (date>os_last_date^[os_id,TS]) then
|
||||
begin
|
||||
os_last_date^[os_id,TS]:=date;
|
||||
os_last_date_id^[os_id,TS]:=run_id;
|
||||
end;
|
||||
if date<os_first_date^[os_id,TS] then
|
||||
begin
|
||||
os_first_date^[os_id,TS]:=date;
|
||||
os_first_date_id^[os_id,TS]:=run_id;
|
||||
end;
|
||||
end;
|
||||
inc(os_count^[os_id,TS]);
|
||||
end;
|
||||
if assigned(version_count) and (version_id<=version_last) then
|
||||
begin
|
||||
if version_count^[version_id,TS]=0 then
|
||||
begin
|
||||
version_first_date^[version_id,TS]:=date;
|
||||
version_last_date^[version_id,TS]:=date;
|
||||
version_first_date_id^[version_id,TS]:=run_id;
|
||||
version_last_date_id^[version_id,TS]:=run_id;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (date>version_last_date^[version_id,TS]) then
|
||||
begin
|
||||
version_last_date^[version_id,TS]:=date;
|
||||
version_last_date_id^[version_id,TS]:=run_id;
|
||||
end;
|
||||
if date<version_first_date^[version_id,TS] then
|
||||
begin
|
||||
version_first_date^[version_id,TS]:=date;
|
||||
version_first_date_id^[version_id,TS]:=run_id;
|
||||
end;
|
||||
end;
|
||||
inc(version_count^[version_id,TS]);
|
||||
end;
|
||||
end
|
||||
else if Fdebug then
|
||||
writeln(stdout,'Error for Result, S=',S);
|
||||
end;
|
||||
DumpLn(Format('<p>Total = %d </p>',[total_count]));
|
||||
if Total_count > 0 then
|
||||
DumpLn(Format('<p>OK=%d Percentage= %3.2f </p>',[OK_count,OK_count*100/total_count]));
|
||||
if Skip_count > 0 then
|
||||
DumpLn(Format('<p>Skipped=%d Percentage= %3.2f </p>',[Skip_count,Skip_count*100/total_count]));
|
||||
if total_count>0 then
|
||||
begin
|
||||
TableStart(5,True);
|
||||
RowStart;
|
||||
CellStart;
|
||||
Write('Result type');
|
||||
CellNext;
|
||||
Write('Cat.');
|
||||
CellNext;
|
||||
Write('Count');
|
||||
CellNext;
|
||||
Write('Percentage');
|
||||
CellNext;
|
||||
Write('First date');
|
||||
CellNext;
|
||||
Write('Last Date');
|
||||
CellEnd;
|
||||
end;
|
||||
For TS:=FirstStatus to LastStatus do
|
||||
if Result_count[TS]>0 then
|
||||
begin
|
||||
RowNext;
|
||||
CellStart;
|
||||
Write(StatusText[TS]);
|
||||
CellNext;
|
||||
CellNext;
|
||||
Write(Format('%d',[Result_count[TS]]));
|
||||
CellNext;
|
||||
Write(Format('%3.1f',[Result_count[TS]*100/total_count]));
|
||||
CellNext;
|
||||
|
||||
DumpLn(FormatDetailURL(IntToStr(first_date_id[TS]),
|
||||
DateTimeToStr(first_date[TS])));
|
||||
Write(' '+GetFailCount(first_date_id[TS]));
|
||||
CellNext;
|
||||
DumpLn(FormatDetailURL(IntToStr(last_date_id[TS]),
|
||||
DateTimeToStr(last_date[TS])));
|
||||
Write(' '+GetFailCount(last_date_id[TS]));
|
||||
CellEnd;
|
||||
if assigned(cpu_count) then
|
||||
begin
|
||||
for i:=1 to cpu_last do
|
||||
if cpu_count^[i,TS]>0 then
|
||||
begin
|
||||
RowNext;
|
||||
CellStart;
|
||||
CellNext;
|
||||
Write(GetSingleton('SELECT TC_NAME FROM TESTCPU WHERE TC_ID='+IntToStr(i)));
|
||||
CellNext;
|
||||
Write(Format('%d',[cpu_count^[i,TS]]));
|
||||
CellNext;
|
||||
Write(Format('%3.1f',[cpu_count^[i,TS]*100/result_count[TS]]));
|
||||
CellNext;
|
||||
DumpLn(FormatDetailURL(IntToStr(cpu_first_date_id^[i,TS]),
|
||||
DateTimeToStr(cpu_first_date^[i,TS])));
|
||||
Write(' '+GetFailCount(cpu_first_date_id^[i,TS]));
|
||||
CellNext;
|
||||
DumpLn(FormatDetailURL(IntToStr(cpu_last_date_id^[i,TS]),
|
||||
DateTimeToStr(cpu_last_date^[i,TS])));
|
||||
Write(' '+GetFailCount(cpu_last_date_id^[i,TS]));
|
||||
CellEnd;
|
||||
end;
|
||||
end;
|
||||
if assigned(os_count) then
|
||||
begin
|
||||
for i:=1 to os_last do
|
||||
if os_count^[i,TS]>0 then
|
||||
begin
|
||||
RowNext;
|
||||
CellStart;
|
||||
CellNext;
|
||||
Write(GetSingleton('SELECT TO_NAME FROM TESTOS WHERE TO_ID='+IntToStr(i)));
|
||||
CellNext;
|
||||
Write(Format('%d',[os_count^[i,TS]]));
|
||||
CellNext;
|
||||
Write(Format('%3.1f',[os_count^[i,TS]*100/result_count[TS]]));
|
||||
CellNext;
|
||||
DumpLn(FormatDetailURL(IntToStr(os_first_date_id^[i,TS]),
|
||||
DateTimeToStr(os_first_date^[i,TS])));
|
||||
Write(' '+GetFailCount(os_first_date_id^[i,TS]));
|
||||
CellNext;
|
||||
DumpLn(FormatDetailURL(IntToStr(os_last_date_id^[i,TS]),
|
||||
DateTimeToStr(os_last_date^[i,TS])));
|
||||
Write(' '+GetFailCount(os_last_date_id^[i,TS]));
|
||||
CellEnd;
|
||||
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
if assigned(version_count) then
|
||||
begin
|
||||
for i:=1 to version_last do
|
||||
if version_count^[i,TS]>0 then
|
||||
begin
|
||||
RowNext;
|
||||
CellStart;
|
||||
CellNext;
|
||||
Write(GetSingleton('SELECT TV_VERSION FROM TESTVERSION WHERE TV_ID='+IntToStr(i)));
|
||||
CellNext;
|
||||
Write(Format('%d',[version_count^[i,TS]]));
|
||||
CellNext;
|
||||
Write(Format('%3.1f',[version_count^[i,TS]*100/result_count[TS]]));
|
||||
CellNext;
|
||||
DumpLn(FormatDetailURL(IntToStr(version_first_date_id^[i,TS]),
|
||||
DateTimeToStr(version_first_date^[i,TS])));
|
||||
Write(' '+GetFailCount(version_first_date_id^[i,TS]));
|
||||
CellNext;
|
||||
DumpLn(FormatDetailURL(IntToStr(version_last_date_id^[i,TS]),
|
||||
DateTimeToStr(version_last_date^[i,TS])));
|
||||
Write(' '+GetFailCount(version_last_date_id^[i,TS]));
|
||||
CellEnd;
|
||||
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
end;
|
||||
if total_count>0 then
|
||||
begin
|
||||
TableEnd;
|
||||
RecNo:=0;
|
||||
end;
|
||||
If FDebug or FListAll then
|
||||
begin
|
||||
|
||||
@ -1535,76 +1933,6 @@ begin
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
DumpLn(Format('<p>Record count: %d </p>',[Q.RecordCount]));
|
||||
|
||||
Try
|
||||
if FDebug then
|
||||
begin
|
||||
Writeln(stdout,'FieldKind=',Fields[0].FieldKind);
|
||||
Writeln(stdout,'DataType=',Fields[0].DataType);
|
||||
system.flush(stdout);
|
||||
end;
|
||||
|
||||
total_count:=0;
|
||||
OK_count:=0;
|
||||
not_OK_count:=0;
|
||||
skip_count:=0;
|
||||
not_skip_count:=0;
|
||||
fillchar(Result_Count,Sizeof(Result_count),#0);
|
||||
For i:=0 to Q.RecordCount-1 do
|
||||
begin
|
||||
Q.RecNo:=i;
|
||||
inc(total_count);
|
||||
S:=Fields[3].AsString;
|
||||
if S='+' then
|
||||
inc(OK_count)
|
||||
else
|
||||
inc(not_OK_count);
|
||||
S:=Fields[4].AsString;
|
||||
if S='+' then
|
||||
inc(skip_count)
|
||||
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 date<first_date[TS] then
|
||||
first_date[TS]:=date;
|
||||
end;
|
||||
|
||||
inc(Result_count[TS]);
|
||||
end
|
||||
else if Fdebug then
|
||||
writeln(stdout,'Error for Result, S=',S);
|
||||
end;
|
||||
DumpLn(Format('<p>Total = %d </p>',[total_count]));
|
||||
if Total_count > 0 then
|
||||
DumpLn(Format('<p>OK=%d Percentage= %3.2f </p>',[OK_count,OK_count*100/total_count]));
|
||||
if Skip_count > 0 then
|
||||
DumpLn(Format('<p>Skipped=%d Percentage= %3.2f </p>',[Skip_count,Skip_count*100/total_count]));
|
||||
For TS:=FirstStatus to LastStatus do
|
||||
if Result_count[TS]>0 then
|
||||
DumpLn(Format('<p>%s=%d From %s to %s</p>',
|
||||
[StatusText[TS],Result_count[TS],
|
||||
DateTimeToStr(first_date[TS]),
|
||||
DateTimeToStr(last_date[TS])]));
|
||||
|
||||
Finally
|
||||
Close;
|
||||
@ -1710,7 +2038,7 @@ begin
|
||||
DumpLn('<P>No Source in TestSuite DataBase.</P>');
|
||||
DumpLn('Link to SVN view of '+
|
||||
'<A HREF="'+FViewVCURL+FTestFileName+'?view=markup'+
|
||||
'" TARGET="_blank"> '+FTestFileName+'</A> source. ');
|
||||
'" TARGET="fpc_source"> '+FTestFileName+'</A> source. ');
|
||||
HeaderEnd(3);
|
||||
end
|
||||
else
|
||||
@ -1718,7 +2046,7 @@ begin
|
||||
HeaderStart(3);
|
||||
DumpLn('Link to SVN view of '+
|
||||
'<A HREF="'+FViewVCURL+FTestFileName+'?view=markup'+
|
||||
'" TARGET="_blank"> '+FTestFileName+'</A> source. ');
|
||||
'" TARGET="fpc_source"> '+FTestFileName+'</A> source. ');
|
||||
HeaderEnd(3);
|
||||
end;
|
||||
end;
|
||||
@ -1729,6 +2057,31 @@ begin
|
||||
Write(Format('No data for test file with ID: %s',[FTestFileID]));
|
||||
|
||||
end;
|
||||
if assigned(os_count) then
|
||||
begin
|
||||
FreeMem(os_count);
|
||||
FreeMem(os_first_date);
|
||||
FreeMem(os_first_date_id);
|
||||
FreeMem(os_last_date);
|
||||
FreeMem(os_last_date_id);
|
||||
end;
|
||||
|
||||
if assigned(cpu_count) then
|
||||
begin
|
||||
FreeMem(cpu_count);
|
||||
FreeMem(cpu_first_date);
|
||||
FreeMem(cpu_first_date_id);
|
||||
FreeMem(cpu_last_date);
|
||||
FreeMem(cpu_last_date_id);
|
||||
end;
|
||||
if assigned(version_count) then
|
||||
begin
|
||||
FreeMem(version_count);
|
||||
FreeMem(version_first_date);
|
||||
FreeMem(version_first_date_id);
|
||||
FreeMem(version_last_date);
|
||||
FreeMem(version_last_date_id);
|
||||
end;
|
||||
end;
|
||||
|
||||
Procedure TTestSuite.ShowRunComparison;
|
||||
@ -1920,6 +2273,19 @@ begin
|
||||
CellData:=Format('<A HREF="%s">%s</A>',[S,CellData]);
|
||||
end;
|
||||
|
||||
|
||||
function TTestSuite.FormatDetailURL(const RunIdStr, CellData : String) : string;
|
||||
Var
|
||||
S : String;
|
||||
begin
|
||||
S:=Format(SDetailsURL,[RunIdStr]);
|
||||
if FOnlyFailed then
|
||||
S:=S+'&failedonly=1';
|
||||
if FNoSkipped then
|
||||
S:=S+'&noskipped=1';
|
||||
FormatDetailURL:=Format('<A HREF="%s">%s</A>',[S,CellData]);
|
||||
end;
|
||||
|
||||
procedure TTestSuite.FormatTestRunOverview(Sender: TObject; var CellData: String);
|
||||
|
||||
Var
|
||||
|
Loading…
Reference in New Issue
Block a user