Add some colors for comparison between two run results

git-svn-id: trunk@48270 -
This commit is contained in:
pierre 2021-01-21 16:15:35 +00:00
parent 79f2398e6a
commit 2b79b11744

View File

@ -162,7 +162,7 @@ const
RunIDVal : qword; RunIDVal : qword;
Error : word; Error : word;
begin begin
system.val (RunId,RunIdVal,error); system.val (Trim(RunId),RunIdVal,error);
if (error<>0) then if (error<>0) then
result:='ErrorTable' result:='ErrorTable'
else if (RunIdVal <= LastOldTestRun) then else if (RunIdVal <= LastOldTestRun) then
@ -1153,7 +1153,7 @@ Const
SGetRunData = 'SELECT TU_ID,TU_DATE,TC_NAME,TO_NAME,' + 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_CATEGORY_FK,TU_SVNCOMPILERREVISION,TU_SVNRTLREVISION,'+ 'TU_CATEGORY_FK,TU_SVNCOMPILERREVISION,TU_SVNRTLREVISION,'+
'TU_COMPILERDATE,'+ 'TU_COMPILERDATE,TU_COMPILERFULLVERSION,'+
'TU_SVNPACKAGESREVISION,TU_SVNTESTSREVISION,'+ 'TU_SVNPACKAGESREVISION,TU_SVNTESTSREVISION,'+
'(TU_SUCCESSFULLYFAILED+TU_SUCCESFULLYCOMPILED+TU_SUCCESSFULLYRUN) AS OK,'+ '(TU_SUCCESSFULLYFAILED+TU_SUCCESFULLYCOMPILED+TU_SUCCESSFULLYRUN) AS OK,'+
'(TU_FAILEDTOCOMPILE+TU_FAILEDTORUN+TU_FAILEDTOFAIL) as Failed,'+ '(TU_FAILEDTOCOMPILE+TU_FAILEDTORUN+TU_FAILEDTOFAIL) as Failed,'+
@ -1171,10 +1171,68 @@ Const
Var Var
Q1, Q2 : TSQLQuery; Q1, Q2 : TSQLQuery;
F : TField; F : TField;
SC : string; SC, FRight : string;
Date1, Date2 : TDateTime; Date1, Date2 : TDateTime;
AddNewPar : boolean; AddNewPar, same_date : boolean;
CompilerDate1, CompilerDate2 : TDateTime; CompilerDate1, CompilerDate2 : TDateTime;
procedure EmitOneRow(RowTitle,FieldLeft,FieldRight : String; is_same : boolean);
var
FieldColor : string;
begin
if (FieldRight='') then
FieldColor:=''
else if is_same then
FieldColor:='style="color:green;"'
else
FieldColor:='style="color:red;"';
With FHTMLWriter do
begin
RowNext;
if FieldColor<>'' then
begin
TagStart('TD',FieldColor);
end
else
CellStart;
LDumpLn(RowTitle);
if FieldColor<>'' then
begin
CellEnd;
TagStart('TD',FieldColor);
end
else
CellNext;
LDumpLn(FieldLeft);
if FieldColor<>'' then
begin
CellEnd;
TagStart('TD',FieldColor);
end
else
CellNext;
LDumpLn(FieldRight);
CellEnd;
end;
end;
procedure EmitOneRow(RowTitle,FieldLeft,FieldRight : String);
var
is_same : boolean;
begin
is_same:=(FieldLeft=FieldRight);
EmitOneRow(RowTitle,FieldLeft,FieldRight,is_same);
end;
procedure EmitRow(RowTitle,FieldName : String);
var
FieldLeft, FieldRight : String;
begin
FieldLeft:=Q1.FieldByName(FieldName).AsString;
if Q2=nil then
FieldRight:=''
else
FieldRight:=Q2.FieldByName(FieldName).AsString;
EmitOneRow(RowTitle,FieldLeft,FieldRight);
end;
begin begin
Result:=(FRunID<>''); Result:=(FRunID<>'');
If Result then If Result then
@ -1210,172 +1268,99 @@ begin
CellNext; CellNext;
EmitInput('run2id',FCompareRunID); EmitInput('run2id',FCompareRunID);
CellEnd; CellEnd;
RowNext;
CellStart;
DumpLn('Operating system:');
CellNext;
DumpLn(Q1.FieldByName('TO_NAME').AsString);
CellNext;
if Q2 <> nil then
DumpLn(Q2.FieldByName('TO_NAME').AsString);
CellEnd;
RowNext;
CellStart;
DumpLn('Processor:');
CellNext;
DumpLn(Q1.FieldByName('TC_NAME').AsString);
CellNext;
if Q2 <> nil then
DumpLn(Q2.FieldByName('TC_NAME').AsString);
CellEnd;
RowNext;
CellStart;
DumpLn('Version:');
CellNext;
DumpLn(Q1.FieldByNAme('TV_VERSION').AsString);
CellNext;
if Q2 <> nil then
DumpLn(Q2.FieldByNAme('TV_VERSION').AsString);
CellEnd;
RowNext;
CellStart;
DumpLn('Fails/OK/Total:');
CellNext;
Dump(Q1.FieldByName('Failed').AsString);
Dump('/'+Q1.FieldByName('OK').AsString);
DumpLn('/'+Q1.FieldByName('Total').AsString);
CellNext;
if Q2 <> nil then
begin
Dump(Q2.FieldByName('Failed').AsString);
Dump('/'+Q2.FieldByName('Ok').AsString);
DumpLn('/'+Q2.FieldByName('Total').AsString);
end;
CellEnd;
RowNext; EmitRow('Operating system:','TO_NAME');
CellStart; EmitRow('Processor:','TC_NAME');
DumpLn('Comment:'); EmitRow('Version:','TV_VERSION');
CellNext; if Q2 = nil then
DumpLn(Q1.FieldByName('TU_COMMENT').AsString); FRight:=''
CellNext; else
if Q2 <> nil then
DumpLn(Q2.FieldByName('TU_COMMENT').AsString);
CellEnd;
RowNext;
CellStart;
DumpLn('Machine:');
CellNext;
DumpLn(Q1.FieldByName('TU_MACHINE').AsString);
CellNext;
if Q2 <> nil then
DumpLn(Q2.FieldByName('TU_MACHINE').AsString);
CellEnd;
if GetCategoryName(FCategory)<>'All' then
begin begin
RowNext; FRight:=Q2.FieldByName('Failed').AsString+
CellStart; '/'+Q2.FieldByName('Ok').AsString+
DumpLn('Category:'); '/'+Q2.FieldByName('Total').AsString;
CellNext;
DumpLn(GetCategoryName(Q1.FieldByName('TU_CATEGORY_FK').AsString));
CellNext;
if Q2 <> nil then
DumpLn(GetCategoryName(Q2.FieldByName('TU_CATEGORY_FK').AsString));
CellEnd;
end; end;
EmitOneRow('Fails/OK/Total:',
Q1.FieldByName('Failed').AsString+
'/'+Q1.FieldByName('OK').AsString+
'/'+Q1.FieldByName('Total').AsString,
FRight);
EmitRow('Version:','TV_VERSION');
EmitRow('Full version:','TU_COMPILERFULLVERSION');
EmitRow('Comment:','TU_COMMENT');
EmitRow('Machine:','TU_MACHINE');
if GetCategoryName(FCategory)<>'All' then
EmitRow('Category:','TU_CATEGORY_FK');
If GetCategoryName(FCategory)<>'DB' then If GetCategoryName(FCategory)<>'DB' then
begin begin
RowNext;
CellStart;
DumpLn('SVN Revisions:');
CellNext;
SC:=Q1.FieldByName('svnrev').AsString; SC:=Q1.FieldByName('svnrev').AsString;
if (SC<>'') then if (SC<>'') then
FormatSVNData(SC); FormatSVNData(SC);
LDumpLn(SC);
CellNext;
if Q2 <> nil then if Q2 <> nil then
begin begin
SC:=Q2.FieldByName('svnrev').AsString; FRight:=Q2.FieldByName('svnrev').AsString;
FormatSVNData(SC); FormatSVNData(FRight);
LDumpLn(SC); end
else
FRight:='';
EmitOneRow('SVN revisions:',SC,FRight);
end; end;
CellEnd; EmitRow('Submitter:','TU_SUBMITTER');
end;
RowNext;
CellStart;
DumpLn('Submitter:');
CellNext;
DumpLn(Q1.FieldByName('TU_SUBMITTER').AsString);
CellNext;
if Q2 <> nil then
DumpLn(Q2.FieldByName('TU_SUBMITTER').AsString);
CellEnd;
RowNext;
CellStart;
DumpLn('Date:');
CellNext;
F := Q1.FieldByName('TU_DATE'); F := Q1.FieldByName('TU_DATE');
Date1 := F.AsDateTime; Date1 := F.AsDateTime;
DumpLn(F.AsString); SC:=F.AsString;
F := Q1.FieldByName('TU_COMPILERDATE'); F := Q1.FieldByName('TU_COMPILERDATE');
Try Try
CompilerDate1 := F.AsDateTime; CompilerDate1 := F.AsDateTime;
if not SameDate(Date1,CompilerDate1) then if not SameDate(Date1,CompilerDate1) then
DumpLn(' <> '+F.AsString); SC:=SC+' <> '+F.AsString;
Except Except
{ Not a valid date, do nothing } { Not a valid date, do nothing }
end; end;
CellNext; if Q2 = nil then
if Q2 <> nil then FRight:=''
else
begin begin
F := Q2.FieldByName('TU_DATE'); F := Q2.FieldByName('TU_DATE');
Date2 := F.AsDateTime; Date2 := F.AsDateTime;
DumpLn(F.AsString); FRight:= F.AsString;
F := Q2.FieldByName('TU_COMPILERDATE'); F := Q2.FieldByName('TU_COMPILERDATE');
Try Try
CompilerDate2 := F.AsDateTime; CompilerDate2 := F.AsDateTime;
if not SameDate(Date2,CompilerDate2) then if not SameDate(Date2,CompilerDate2) then
DumpLn(' <> '+F.AsString); FRight:=FRight+' <> '+F.AsString;
Except Except
{ Not a valid date, do nothing } { Not a valid date, do nothing }
end; end;
end; end;
CellEnd; same_date:=(Copy(SC,1,10)=Copy(FRight,1,10));
RowNext; EmitOneRow('Date:',SC,FRight,same_date);
CellStart;
DumpLn('Previous run:');
CellNext;
FPreviousRunID:=GetPreviousRunID(FRunID); FPreviousRunID:=GetPreviousRunID(FRunID);
if FPreviousRunID<>'' then if FPreviousRunID<>'' then
EmitHiddenVar('previousrunid',FPreviousRunID); EmitHiddenVar('previousrunid',FPreviousRunID);
DumpLn(FPreviousRunID); SC:=FPreviousRunID;
CellNext;
if (FCompareRunID<>'') then if (FCompareRunID<>'') then
begin begin
FPrevious2RunID:=GetPreviousRunID(FCompareRunID); FPrevious2RunID:=GetPreviousRunID(FCompareRunID);
DumpLn(FPrevious2RunID); FRight:=FPrevious2RunID;
if FPrevious2RunID <> '' then if FPrevious2RunID <> '' then
EmitHiddenVar('previous2runid',FPrevious2RunID); EmitHiddenVar('previous2runid',FPrevious2RunID);
end; end
CellEnd; else
RowNext; FRight:='';
CellStart; EmitOneRow('Previous run:',SC,FRight);
DumpLn('Next run:');
CellNext;
FNextRunID:=GetNextRunID(FRunID); FNextRunID:=GetNextRunID(FRunID);
if FNextRunID<>'' then if FNextRunID<>'' then
EmitHiddenVar('nextrunid',FNextRunID); EmitHiddenVar('nextrunid',FNextRunID);
DumpLn(FNextRunID); SC:=FNextRunID;
CellNext;
if (FCompareRunID<>'') then if (FCompareRunID<>'') then
begin begin
FNext2RunID:=GetNextRunID(FCompareRunID); FNext2RunID:=GetNextRunID(FCompareRunID);
DumpLn(FNext2RunID); FRight:=FNext2RunID;
if FNext2RunID <> '' then if FNext2RunID <> '' then
EmitHiddenVar('next2runid',FNext2RunID); EmitHiddenVar('next2runid',FNext2RunID);
end; end;
CellEnd; EmitOneRow('Next run:',SC,FRight);
RowEnd; RowEnd;
TableEnd; TableEnd;
ParagraphStart; ParagraphStart;
@ -1558,7 +1543,7 @@ begin
finally finally
Free; Free;
end; end;
If Not (FRunCount=0) and not (FNoSkipped or FOnlyFailed) then If Not (FRunCount=0) and not (FNoSkipped and FOnlyFailed) then
begin begin
ParaGraphStart; ParaGraphStart;
TagStart('IMG',Format('Src="'+TestsuiteCGIURL+ TagStart('IMG',Format('Src="'+TestsuiteCGIURL+
@ -2950,10 +2935,6 @@ Procedure TTestSuite.DoDrawPie(Img : TFPCustomImage; Skipped,Failed,Total : Inte
Var Var
Cnv : TFPImageCanvas; Cnv : TFPImageCanvas;
W,H,FH,CR,ra : Integer;
A1,A2,FR,SR,PR : Double;
R : TRect;
F : TFreeTypeFont;
Procedure AddPie(X,Y,R : Integer; AStart,AStop : Double; Col : TFPColor); Procedure AddPie(X,Y,R : Integer; AStart,AStop : Double; Col : TFPColor);
@ -2961,14 +2942,14 @@ Var
DX,Dy : Integer; DX,Dy : Integer;
begin begin
DX:=Round(R*Cos(A1)); DX:=Round(R*Cos(AStart));
DY:=Round(R*Sin(A1)); DY:=Round(R*Sin(AStart));
Cnv.Line(X,Y,X+DX,Y-DY); Cnv.Line(X,Y,X+DX,Y-DY);
DX:=Round(Ra*Cos(A2)); DX:=Round(R*Cos(AStop));
DY:=Round(Ra*Sin(A2)); DY:=Round(R*Sin(AStop));
Cnv.Line(X,Y,X+DX,Y-Dy); Cnv.Line(X,Y,X+DX,Y-Dy);
DX:=Round(R/2*Cos((A1+A2)/2)); DX:=Round(R/2*Cos((AStart+AStop)/2));
DY:=Round(R/2*Sin((A1+A2)/2)); DY:=Round(R/2*Sin((AStart+AStop)/2));
Cnv.Brush.FpColor:=Col; Cnv.Brush.FpColor:=Col;
Cnv.FloodFill(X+DX,Y-DY); Cnv.FloodFill(X+DX,Y-DY);
end; end;
@ -2979,7 +2960,11 @@ Var
Result:=(2*Pi*(F/T)) Result:=(2*Pi*(F/T))
end; end;
Var
W,H,FH,CR,RA : Integer;
A1,A2,FR,SR,PR : Double;
R : TRect;
F : TFreeTypeFont;
begin begin
F:=TFreeTypeFont.Create; F:=TFreeTypeFont.Create;
@ -3044,7 +3029,12 @@ begin
Writeln(stdout,'Setting brush style'); Writeln(stdout,'Setting brush style');
system.flush(stdout); system.flush(stdout);
end; end;
cnv.brush.FPColor:=colRed; cnv.brush.FPColor:=colDkGray;
SR:=Skipped/Total;
FR:=Failed/Total;
PR:=1-SR-FR;
cnv.font.FPColor:=colDkGray;
Cnv.Textout(1,FH*2,Format('%d Skipped (%3.1f%%)',[Skipped,SR*100]));
// cnv.pen.width:=1; // cnv.pen.width:=1;
// Writeln('Drawing ellipse'); // Writeln('Drawing ellipse');
Cnv.Ellipse(R); Cnv.Ellipse(R);
@ -3053,15 +3043,16 @@ begin
Writeln(stdout,'Setting text'); Writeln(stdout,'Setting text');
system.flush(stdout); system.flush(stdout);
end; end;
Cnv.Textout(1,FH*2,Format('%d Skipped (%3.1f%%)',[Skipped,SR*100])); A1:=0;
A1:=(Pi*2*(failed/total)); A2:=A1+FractionAngle(Failed,Total);
A2:=A1+(Pi*2*(Skipped/Total)); cnv.font.FPColor:=colRed;
AddPie(Ra,R.Top+Ra,Ra,A1,A2,ColYellow); Cnv.Textout(1,FH*3,Format('%d Failed (%3.1f%%)',[Failed,FR*100]));
AddPie(Ra,R.Top+Ra,Ra,A1,A2,ColRed);
cnv.font.FPColor:=colGreen; cnv.font.FPColor:=colGreen;
Cnv.Textout(1,FH,Format('%d Passed (%3.1f%%)',[Total-Skipped-Failed,PR*100]));
// Writeln('Palette size : ',Img.Palette.Count); // Writeln('Palette size : ',Img.Palette.Count);
A1:=A2; A1:=A2;
A2:=A1+(Pi*2*((Total-(Skipped+Failed))/Total)); A2:=A1+FractionAngle(Total-(Skipped+Failed),Total);
Cnv.Textout(1,FH*3,Format('%d Passed (%3.1f%%',[Total-Skipped-Failed,PR*100]));
AddPie(Ra,R.Top+Ra,Ra,A1,A2,ColGreen); AddPie(Ra,R.Top+Ra,Ra,A1,A2,ColGreen);
// Writeln('Palette size : ',Img.Palette.Count); // Writeln('Palette size : ',Img.Palette.Count);
// Writeln('All done'); // Writeln('All done');