mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-07 07:39:31 +01:00
* explanation for running the testsuite remotely
+ dotest supports remote execution using scp/ssh
This commit is contained in:
parent
9d8b53c9cc
commit
94ab3f4457
@ -34,3 +34,14 @@ make full This should create a log of all failed tests.
|
|||||||
|
|
||||||
make rundigest scans the created log file and outputs some statistics
|
make rundigest scans the created log file and outputs some statistics
|
||||||
make rundigest USESQL=YES sends the results to an SQL database
|
make rundigest USESQL=YES sends the results to an SQL database
|
||||||
|
|
||||||
|
|
||||||
|
Also remote execution of the testsuite is possible
|
||||||
|
Requirements:
|
||||||
|
- current build tree contains a cross compiled rtl/fcl
|
||||||
|
- the cross compiler is installed works without passing extra parameters
|
||||||
|
- the tests tree is somewhere on the remote machine e.g. /mnt/cf/fpc/tests
|
||||||
|
- some dir, e.g. i386-utils contains a dotest executable for the host system
|
||||||
|
- ssh must work without keyboard interaction or extra parameters
|
||||||
|
then a example make command could be
|
||||||
|
make DOTEST=i386-utils/dotest FPC=ppcarm "DOTESTOPT=-Y-XParm-linux- -Rroot@192.168.44.9 -P/mnt/cf/fpc/tests -T"
|
||||||
|
|||||||
@ -51,6 +51,10 @@ const
|
|||||||
DoKnown : boolean = false;
|
DoKnown : boolean = false;
|
||||||
DoAll : boolean = false;
|
DoAll : boolean = false;
|
||||||
DoUsual : boolean = true;
|
DoUsual : boolean = true;
|
||||||
|
ExtraCompilerOpts : string = '';
|
||||||
|
DelExecutable : boolean = false;
|
||||||
|
RemoteAddr : string = '';
|
||||||
|
RemotePath : string = '';
|
||||||
|
|
||||||
Function FileExists (Const F : String) : Boolean;
|
Function FileExists (Const F : String) : Boolean;
|
||||||
{
|
{
|
||||||
@ -373,7 +377,7 @@ var
|
|||||||
begin
|
begin
|
||||||
RunCompiler:=false;
|
RunCompiler:=false;
|
||||||
OutName:=ForceExtension(PPFile,'log');
|
OutName:=ForceExtension(PPFile,'log');
|
||||||
args:='-n -Fuunits';
|
args:='-n -Fuunits '+ExtraCompilerOpts;
|
||||||
{$ifdef unix}
|
{$ifdef unix}
|
||||||
{ Add runtime library path to current dir to find .so files }
|
{ Add runtime library path to current dir to find .so files }
|
||||||
if Config.NeedLibrary then
|
if Config.NeedLibrary then
|
||||||
@ -477,11 +481,26 @@ begin
|
|||||||
TestExe:=ForceExtension(PPFile,ExeExt);
|
TestExe:=ForceExtension(PPFile,ExeExt);
|
||||||
OutName:=ForceExtension(PPFile,'elg');
|
OutName:=ForceExtension(PPFile,'elg');
|
||||||
Verbose(V_Debug,'Executing '+TestExe);
|
Verbose(V_Debug,'Executing '+TestExe);
|
||||||
{ don't redirect interactive and graph programs .. }
|
if RemoteAddr<>'' then
|
||||||
if Config.IsInteractive or Config.UsesGraph then
|
begin
|
||||||
ExecuteRedir(TestExe,'','','','')
|
ExecuteRedir('ssh',RemoteAddr+' rm -f '+RemotePath+'/'+TestExe,'',OutName,'');
|
||||||
|
ExecuteRedir('scp',TestExe+' '+RemoteAddr+':'+RemotePath+'/'+TestExe,'',OutName,'');
|
||||||
|
{ don't redirect interactive and graph programs .. }
|
||||||
|
if Config.IsInteractive or Config.UsesGraph then
|
||||||
|
ExecuteRedir(TestExe,'','','','')
|
||||||
|
else
|
||||||
|
ExecuteRedir('ssh',RemoteAddr+' '+RemotePath+'/'+TestExe,'',OutName,'');
|
||||||
|
if DelExecutable then
|
||||||
|
ExecuteRedir('ssh',RemoteAddr+' rm -f '+RemotePath+'/'+TestExe,'',OutName,'');
|
||||||
|
end
|
||||||
else
|
else
|
||||||
ExecuteRedir(TestExe,'','',OutName,'');
|
begin
|
||||||
|
{ don't redirect interactive and graph programs .. }
|
||||||
|
if Config.IsInteractive or Config.UsesGraph then
|
||||||
|
ExecuteRedir(TestExe,'','','','')
|
||||||
|
else
|
||||||
|
ExecuteRedir(TestExe,'','',OutName,'');
|
||||||
|
end;
|
||||||
Verbose(V_Debug,'Exitcode '+ToStr(ExecuteResult));
|
Verbose(V_Debug,'Exitcode '+ToStr(ExecuteResult));
|
||||||
if ExecuteResult<>Config.ResultCode then
|
if ExecuteResult<>Config.ResultCode then
|
||||||
begin
|
begin
|
||||||
@ -533,6 +552,10 @@ var
|
|||||||
writeln(' -G include graph tests');
|
writeln(' -G include graph tests');
|
||||||
writeln(' -K include known bug tests');
|
writeln(' -K include known bug tests');
|
||||||
writeln(' -I include interactive tests');
|
writeln(' -I include interactive tests');
|
||||||
|
writeln(' -R<remote> run the tests remotely with the given ssh address');
|
||||||
|
writeln(' -P<path> path to the tests tree on the remote machine');
|
||||||
|
writeln(' -T remove executables after execution (applies only for remote tests)');
|
||||||
|
writeln(' -Y<opts> extra options passed to the compiler');
|
||||||
halt(1);
|
halt(1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -575,7 +598,16 @@ begin
|
|||||||
DoUsual:=false;
|
DoUsual:=false;
|
||||||
end;
|
end;
|
||||||
'V' : DoVerbose:=true;
|
'V' : DoVerbose:=true;
|
||||||
|
|
||||||
'X' : UseComSpec:=false;
|
'X' : UseComSpec:=false;
|
||||||
|
|
||||||
|
'P' : RemotePath:=Para;
|
||||||
|
|
||||||
|
'Y' : ExtraCompilerOpts:=Para;
|
||||||
|
|
||||||
|
'R' : RemoteAddr:=Para;
|
||||||
|
|
||||||
|
'T' : DelExecutable:=true;
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -793,7 +825,11 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.29 2003-10-31 16:14:20 peter
|
Revision 1.30 2004-03-21 19:15:18 florian
|
||||||
|
* explanation for running the testsuite remotely
|
||||||
|
+ dotest supports remote execution using scp/ssh
|
||||||
|
|
||||||
|
Revision 1.29 2003/10/31 16:14:20 peter
|
||||||
* remove compileerror10, note10
|
* remove compileerror10, note10
|
||||||
* remove known, use knowncompileerror,knownrunerror instead
|
* remove known, use knowncompileerror,knownrunerror instead
|
||||||
* knowncompileerror,knownrunerror tests are now really skipped
|
* knowncompileerror,knownrunerror tests are now really skipped
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user