From c824b38fba9dbd76241fc9b148f2b19e5f1047ff Mon Sep 17 00:00:00 2001 From: Max Horn Date: Fri, 31 Jul 2026 04:20:08 +0200 Subject: [PATCH] Switch makedoc.g to using AutoDoc The hand written ExtractMyManualExamples in makedoc.g produced test files which did not actually pass when running the test suite. Use AutoDoc for extracting the examples instead, as it is done in several other packages by now. The version data entities move from a GAPDoc block in PackageInfo.g into the AutoDoc entities record, together with the entities for the other packages referred to by the manual; from these AutoDoc generates doc/_entities.xml. The entity for SCSCP itself is added by AutoDoc. AutoDoc numbers the generated test files consecutively, while the old code used the chapter number, so tst/scscp0{4,...,9}.tst become tst/scscp0{1,...,6}.tst. Adjust the list of files to exclude in tst/testall.g accordingly, as those names are hardcoded there. Co-Authored-By: Claude Opus 5 --- .gitignore | 1 + PackageInfo.g | 32 +++-- doc/manual.xml | 13 +- makedoc.g | 131 ++++----------------- tst/scscp01.tst | 140 ++++++++++++++++++++++ tst/scscp02.tst | 79 +++++++++++++ tst/scscp03.tst | 214 +++++++++++++++++++++++++++++++++ tst/scscp04.tst | 154 ++++++------------------ tst/scscp05.tst | 152 ++++++++++++++---------- tst/scscp06.tst | 307 ++++++++++++++++++++++-------------------------- tst/scscp07.tst | 40 ------- tst/scscp08.tst | 85 -------------- tst/scscp09.tst | 147 ----------------------- tst/testall.g | 2 +- 14 files changed, 753 insertions(+), 744 deletions(-) create mode 100644 tst/scscp01.tst create mode 100644 tst/scscp02.tst create mode 100644 tst/scscp03.tst delete mode 100644 tst/scscp07.tst delete mode 100644 tst/scscp08.tst delete mode 100644 tst/scscp09.tst diff --git a/.gitignore b/.gitignore index 88a5cee..4103189 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ doc/*.six doc/*.tex doc/*.toc doc/*.txt +doc/_*.xml diff --git a/PackageInfo.g b/PackageInfo.g index da07959..4362ad9 100644 --- a/PackageInfo.g +++ b/PackageInfo.g @@ -12,11 +12,6 @@ Subtitle := "Symbolic Computation Software Composability Protocol in GAP", Version := "2.4.4", Date := "27/08/2025", # dd/mm/yyyy format License := "GPL-2.0-or-later", -## <#GAPDoc Label="PKGVERSIONDATA"> -## -## -## -## <#/GAPDoc> SourceRepository := rec( Type := "git", @@ -101,6 +96,29 @@ Dependencies := rec( AvailabilityTest := ReturnTrue, TestFile := "tst/offline.tst", -Keywords := [ "SCSCP", "software composability", "interface", - "parallel computing", "OpenMath" ] +Keywords := [ "SCSCP", "software composability", "interface", + "parallel computing", "OpenMath" ], + +AutoDoc := rec( + entities := rec( + IO := "IO", + OpenMath := "OpenMath", + scscp1 := "scscp1", + scscp2 := "scscp2", + ANUPQ := "ANUPQ", + EdenTV := "EdenTV", + VERSION := ~.Version, + RELEASEYEAR := ~.Date{[7..10]}, + RELEASEDATE := function(date) + local day, month, year, allMonths; + day := Int(date{[1,2]}); + month := Int(date{[4,5]}); + year := Int(date{[7..10]}); + allMonths := [ "January", "February", "March", "April", "May", "June", "July", + "August", "September", "October", "November", "December"]; + return Concatenation(String(day)," ", allMonths[month], " ", String(year)); + end(~.Date), + ), +), + )); diff --git a/doc/manual.xml b/doc/manual.xml index 1172e78..04e75c3 100644 --- a/doc/manual.xml +++ b/doc/manual.xml @@ -2,16 +2,9 @@ -IO"> - OpenMath"> - scscp1"> - scscp2"> - ANUPQ"> - EdenTV"> - SCSCP"> - <#Include Label="PKGVERSIONDATA"> - ] > + +] > diff --git a/makedoc.g b/makedoc.g index e945637..1ae84b7 100644 --- a/makedoc.g +++ b/makedoc.g @@ -1,105 +1,26 @@ -########################################################################### -## -#W makedoc.g The SCSCP package Olexandr Konovalov -#W Steve Linton -## -########################################################################### - -ExtractMyManualExamples:=function( pkgname, main, files ) -local path, tst, i, s, basename, name, output, ch, a, location, pos, comment; -path:=Directory( - Concatenation(PackageInfo(pkgname)[1].InstallationPath, "/doc") ); -Print("Extracting manual examples for ", pkgname, " package ...\n" ); -tst:=ExtractExamples( path, main, files, "Chapter" ); -Print(Length(tst), " chapters detected\n"); -for i in [ 1 .. Length(tst) ] do - Print( "Chapter ", i, " : \c" ); - if Length( tst[i] ) > 0 then - s := String(i); - if Length(s)=1 then - # works for <100 chapters - s:=Concatenation("0",s); - fi; - basename:=Concatenation( LowercaseString(pkgname), s, ".tst" ); - name := Filename( - Directory( - Concatenation( PackageInfo(pkgname)[1].InstallationPath, - "/tst" ) ), basename ); - output := OutputTextFile( name, false ); # to empty the file first - SetPrintFormattingStatus( output, false ); # to avoid line breaks - ch := tst[i]; - AppendTo(output, "# ", pkgname, ", chapter ",i,"\n"); - AppendTo(output, "#\n", - "# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD!\n", - "#\n", - "# This file has been autogenerated with GAP. It contains examples\n", - "# extracted from the documentation. Each example is preceded by the\n", - "# comment which points to the location of its source.\n", - "#\n"); - AppendTo(output, "gap> START_TEST( \"", basename, "\");\n\n"); - for a in ch do - location := a[2][1]; - pos := PositionSublist(location,Concatenation(pkgname,"/")); - if pos <> fail then - comment := location{[ pos+Length(pkgname)+1 .. Length(location) ]}; - else - pos := PositionSublist(location,".//"); - comment := location{[ pos+3 .. Length(location) ]}; - fi; - AppendTo(output, "# ", comment, ":", a[2][2], "-", a[2][3], "\n", StripBeginEnd(a[1], "\n"), "\n\n"); - od; - AppendTo(output, "#\ngap> STOP_TEST(\"", basename, "\", 1 );\n"); - Print("extracted ", Length(ch), " examples \n"); - else - Print("no examples \n" ); - fi; -od; -end; - -########################################################################### - -SCSCPMANUALFILES:=[ -"../PackageInfo.g", -"../lib/connect.gd", -"../lib/openmath.gd", -"../lib/process.gd", -"../lib/remote.gd", -"../lib/scscp.gd", -"../lib/utils.g", -"../lib/xstream.gd", -"../par/parlist.g", -"../tracing/tracing.g", -]; - -########################################################################### - -MakeGAPDocDoc( "doc", # path to the directory containing the main file - "manual", # the name of the main file (without extension) - # list of (probably source code) files relative - # to path which contain pieces of documentation - # which must be included in the document - SCSCPMANUALFILES, - "scscp", # the name of the book used by GAP's online help - "../../..",# optional: relative path to the main GAP root - # directory to produce HTML files with relative - # paths to external books. - "MathJax" # optional: use "MathJax", "Tth" and/or "MathML" - # to produce additional variants of HTML files - );; - -# Copy the *.css and *.js files from the styles directory of the GAPDoc -# package into the directory containing the package manual. -CopyHTMLStyleFiles( "doc" ); - -# Create the manual.lab file which is needed if the main manuals or another -# package is referring to your package -GAPDocManualLab( "scscp" );; - -ExtractMyManualExamples( "scscp", "manual.xml", SCSCPMANUALFILES ); - -QUIT; - -########################################################################### -## -#E -## +# +# This file is a script which compiles the package manual. +# +if fail = LoadPackage("AutoDoc", "2022.07.10") then + Error("AutoDoc version 2022.07.10 or newer is required."); +fi; + +AutoDoc(rec( + autodoc := true, + extract_examples := true, + gapdoc := rec( + main := "manual.xml", + files := [ + "lib/connect.gd", + "lib/openmath.gd", + "lib/process.gd", + "lib/remote.gd", + "lib/scscp.gd", + "lib/utils.g", + "lib/xstream.gd", + "par/parlist.g", + "tracing/tracing.g", + ], + ), + scaffold := rec( MainPage := false, TitlePage := false ), +)); diff --git a/tst/scscp01.tst b/tst/scscp01.tst new file mode 100644 index 0000000..e996279 --- /dev/null +++ b/tst/scscp01.tst @@ -0,0 +1,140 @@ +# SCSCP, chapter 4 +# +# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! +# +# This file has been generated by AutoDoc. It contains examples extracted from +# the package documentation. Each example is preceded by a comment which gives +# the name of a GAPDoc XML file and a line range from which the example were +# taken. Note that the XML file in turn may have been generated by AutoDoc +# from some other input. +# +gap> START_TEST("scscp01.tst"); + +# doc/../lib/scscp.gd:492-500 + +gap> s := InputOutputTCPStream("localhost",26133); +< input/output TCP stream to localhost:26133 > +gap> StartSCSCPsession(s); +"localhost:26133:5541" +gap> CloseStream( s ); + + +# doc/../lib/openmath.gd:120-159 + +gap> t:="";; stream:=OutputTextString(t,true);; +gap> OMPutProcedureCall( stream, "WS_Factorial", rec( object:= [ 5 ], +> attributes:=[ [ "call_id", "user007" ], +> ["option_runtime",1000], +> ["option_min_memory",1024], +> ["option_max_memory",2048], +> ["option_debuglevel",1], +> ["option_return_object"] ] ) );; +gap> Print(t); + + + + + + user007 + + 1000 + + 1024 + + 2048 + + 1 + + + + + + + + 5 + + + + + + + +# doc/../lib/openmath.gd:44-77 + +gap> InstallSCSCPprocedure("WS_Factorial", Factorial ); +gap> InstallSCSCPprocedure("GroupIdentificationService", IdGroup ); +gap> InstallSCSCPprocedure("GroupByIdNumber", SmallGroup ); +gap> InstallSCSCPprocedure( "Length", Length, 1, 1 ); +gap> test:=Filename( Directory( Concatenation( +> GAPInfo.PackagesInfo.("scscp")[1].InstallationPath,"/tst/" ) ), +> "omdemo.om" );; +gap> stream:=InputTextFile(test);; +gap> OMGetObjectWithAttributes(stream); +rec( + attributes := [ [ "option_return_object", "" ], [ "call_id", "5rc6rtG62" ] ] + , object := 6 ) +gap> OMGetObjectWithAttributes(stream); +rec( attributes := [ ], object := 1 ) +gap> OMGetObjectWithAttributes(stream); +rec( attributes := [ ], object := 120 ) +gap> OMGetObjectWithAttributes(stream); +rec( + attributes := [ [ "call_id", "alexk_9053" ], [ "option_runtime", 300000 ], + [ "option_min_memory", 40964 ], [ "option_max_memory", 134217728 ], + [ "option_debuglevel", 2 ], [ "option_return_object", "" ] ], + object := [ 24, 12 ] ) +gap> OMGetObjectWithAttributes(stream); +rec( + attributes := [ [ "call_id", "alexk_9053" ], [ "option_return_cookie", "" ] + ], object := ) +gap> OMGetObjectWithAttributes(stream); +rec( attributes := [ [ "call_id", "alexk_9053" ], [ "info_runtime", 1234 ], + [ "info_memory", 134217728 ] ], object := [ 24, 12 ] ) +gap> CloseStream( stream ); + + +# doc/../lib/openmath.gd:184-207 + +gap> t:="";; stream:=OutputTextString(t,true);; +gap> OMPutProcedureCompleted( stream, +> rec(object:=120, +> attributes:=[ [ "call_id", "user007" ] ] ) ); +true +gap> Print(t); + + + + + + user007 + + + + 120 + + + + + + +# doc/openmath.xml:50-68 +gap> stream:=InputOutputTCPStream( "localhost", 26133 ); +< input/output TCP stream to localhost:26133 > +gap> sid := StartSCSCPsession( stream ); +"localhost:26133:5541" +gap> res:=[]; +[ ] +gap> for i in [1..10] do +> OMPutProcedureCall( stream, "WS_Factorial", +> rec( object := [ i ], +> attributes := [ [ "call_id", +> Concatenation( sid, ":", RandomString(8) ) ] ] ) ); +> SCSCPwait( stream ); +> res[i]:=OMGetObjectWithAttributes( stream ).object; +> od; +gap> CloseStream(stream); +gap> res; +[ 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800 ] + +# +gap> STOP_TEST("scscp01.tst", 1); diff --git a/tst/scscp02.tst b/tst/scscp02.tst new file mode 100644 index 0000000..3d62f26 --- /dev/null +++ b/tst/scscp02.tst @@ -0,0 +1,79 @@ +# SCSCP, chapter 5 +# +# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! +# +# This file has been generated by AutoDoc. It contains examples extracted from +# the package documentation. Each example is preceded by a comment which gives +# the name of a GAPDoc XML file and a line range from which the example were +# taken. Note that the XML file in turn may have been generated by AutoDoc +# from some other input. +# +gap> START_TEST("scscp02.tst"); + +# doc/../lib/scscp.gd:727-735 + +gap> GetServiceDescription( "localhost", 26133 ); +rec( + description := "Started with the configuration file scscp/example/myserver.g\ + on Thu 16 Feb 2017 16:03:56 GMT", service_name := "GAP SCSCP service", + version := "GAP 4.8.6 + SCSCP 2.2.1" ) + + +# doc/../lib/scscp.gd:685-704 + +gap> GetAllowedHeads("localhost",26133); +rec( scscp_transient_1 := [ "AClosestVectorCombinationsMatFFEVecFFE", + "Determinant", "GroupIdentificationService", + "IO_UnpickleStringAndPickleItBack", "IdGroup512ByCode", "Identity", + "IsPrimeInt", "Length", "MathieuGroup", "MatrixGroup", + "NormalizedUnitCFcommutator", "NormalizedUnitCFpower", + "NrConjugacyClasses", "NrSmallGroups", "NumberCFGroups", + "NumberCFSolvableGroups", "PointImages", "QuillenSeriesByIdGroup", + "ResetMinimumDistanceService", "SCSCPStartTracing", "SCSCPStopTracing", + "Size", "SylowSubgroup", "WS_AlternatingGroup", "WS_AutomorphismGroup", + "WS_ConwayPolynomial", "WS_Factorial", "WS_FactorsCFRAC", + "WS_FactorsECM", "WS_FactorsMPQS", "WS_FactorsPminus1", + "WS_FactorsPplus1", "WS_FactorsTD", "WS_IdGroup", "WS_LatticeSubgroups", + "WS_Mult", "WS_MultMatrix", "WS_Phi", "WS_PrimitiveGroup", + "WS_SmallGroup", "WS_SymmetricGroup", "WS_TransitiveGroup", "addition" + ] ) + + +# doc/../lib/scscp.gd:854-863 + +gap> IsAllowedHead( "permgp1", "group", "localhost", 26133 ); +true +gap> IsAllowedHead( "setname1", "Q", "localhost", 26133 ); +true +gap> IsAllowedHead( "setname1", "R", "localhost", 26133 ); +false + + +# doc/../lib/scscp.gd:806-823 + +gap> GetTransientCD( "scscp_transient_1", "localhost", 26133 ); +rec( CDDate := "2017-02-08", + CDDefinitions := + [ rec( Description := "Size is currently undocumented.", Name := "Size" ), + rec( Description := "Length is currently undocumented.", + Name := "Length" ), + rec( Description := "NrConjugacyClasses is currently undocumented.", + Name := "NrConjugacyClasses" ), +... + rec( Description := "MatrixGroup is currently undocumented.", + Name := "MatrixGroup" ) ], CDName := "scscp_transient_1", + CDReviewDate := "2017-02-08", CDRevision := "0", CDStatus := "private", + CDVersion := "0", + Description := "This is a transient CD for the GAP SCSCP service" ) + + +# doc/../lib/scscp.gd:768-775 + +gap> GetSignature("scscp_transient_1","WS_Factorial","localhost",26133); +rec( maxarg := 1, minarg := 1, + symbol := rec( cd := "scscp_transient_1", name := "WS_Factorial" ), + symbolargs := rec( cd := "scscp2", name := "symbol_set_all" ) ) + + +# +gap> STOP_TEST("scscp02.tst", 1); diff --git a/tst/scscp03.tst b/tst/scscp03.tst new file mode 100644 index 0000000..27b7b3c --- /dev/null +++ b/tst/scscp03.tst @@ -0,0 +1,214 @@ +# SCSCP, chapter 6 +# +# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! +# +# This file has been generated by AutoDoc. It contains examples extracted from +# the package documentation. Each example is preceded by a comment which gives +# the name of a GAPDoc XML file and a line range from which the example were +# taken. Note that the XML file in turn may have been generated by AutoDoc +# from some other input. +# +gap> START_TEST("scscp03.tst"); + +# doc/../lib/connect.gd:47-61 + +gap> SetInfoLevel( InfoSCSCP, 2 ); +gap> s:=NewSCSCPconnection("localhost",26133); +#I Creating a socket ... +#I Connecting to a remote socket via TCP/IP ... +#I Got connection initiation message +#I +#I Requesting version 1.3 from the server ... +#I Server confirmed version 1.3 to the client ... +< connection to localhost:26133 session_id=localhost:26133:52918 > +gap> CloseSCSCPconnection(s); + + +# doc/../lib/connect.gd:85-92 + +gap> SetInfoLevel( InfoSCSCP, 0 ); +gap> s:=NewSCSCPconnection("localhost",26133); +< connection to localhost:26133 session_id=localhost:26133:52918 > +gap> CloseSCSCPconnection(s); + + +# doc/../lib/process.gd:142-150 + +gap> s := NewProcess( "WS_Factorial", [10], "localhost", 26133 ); +< process at localhost:26133 pid=52918 > +gap> x := CompleteProcess(s); +rec( attributes := [ [ "call_id", "localhost:26133:52918:TPNiMjCT" ] ], + object := 3628800 ) + + +# doc/../lib/scscp.gd:541-554 + +gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133); +rec( attributes := [ [ "call_id", "localhost:26133:2442:6hMEN40d" ] ], + object := 3628800 ) +gap> SetInfoLevel(InfoSCSCP,0); +gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133 : output:="cookie" ); +rec( attributes := [ [ "call_id", "localhost:26133:2442:jNQG6rml" ] ], + object := < remote object scscp://localhost:26133/TEMPVarSCSCP5KZIeiKD > ) +gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133 : output:="nothing" ); +rec( attributes := [ [ "call_id", "localhost:26133:2442:9QHQrCjv" ] ], + object := "procedure completed" ) + + +# doc/client.xml:60-71 +gap> G:=SymmetricGroup(4); +Sym( [ 1 .. 4 ] ) +gap> gens:=GeneratorsOfGroup(G); +[ (1,2,3,4), (1,2) ] +gap> EvaluateBySCSCP( "GroupIdentificationService", [ gens ], +> "localhost", 26133 : debuglevel:=3 ); +rec( attributes := [ [ "call_id", "localhost:26133:2442:xOilXtnw" ], + [ "info_runtime", 4 ], [ "info_memory", 2596114432 ], + [ "info_message", "Memory usage for the result is 48 bytes" ] ], + object := [ 24, 12 ] ) + +# doc/client.xml:75-87 +gap> IdGroupWS := function( G ) +> local H, result; +> if not IsPermGroup(G) then +> H:= Image( IsomorphismPermGroup( G ) ); +> else +> H := G; +> fi; +> result := EvaluateBySCSCP ( "GroupIdentificationService", +> [ GeneratorsOfGroup(H) ], "localhost", 26133 ); +> return result.object; +> end;; + +# doc/client.xml:91-96 +gap> G:=DihedralGroup(64); + +gap> IdGroupWS(G); +[ 64, 52 ] + +# doc/client.xml:109-112 +gap> x := [ Z(3)^0, Z(3), 0*Z(3) ]; +[ Z(3)^0, Z(3), 0*Z(3) ] + +# doc/client.xml:114-147 +gap> OMPrint( x ); + + + + + + + + 3 + + 0 + + + + + + 3 + + 1 + + + + + + 3 + + 0 + + + +gap> Length( OMString(x) ); +507 + +# doc/client.xml:282-318 +gap> stream:=InputOutputTCPStream( "localhost", 26133 ); +< input/output TCP stream to localhost:26133 > +gap> StartSCSCPsession(stream); +"localhost:26133:6184" +gap> OMPutProcedureCall( stream, "store_session", +> rec( object := [ SymmetricGroup(3) ], +> attributes := [ [ "call_id", "1" ], +> ["option_return_cookie"] ] ) ); +true +gap> SCSCPwait( stream ); +gap> G:=OMGetObjectWithAttributes( stream ).object; +< remote object scscp://localhost:26133/TEMPVarSCSCPo3Bc8J75 > +gap> OMPutProcedureCall( stream, "PointImages", +> rec( object := [ G, 1 ], +> attributes := [ [ "call_id", "2" ] ] ) ); +true +gap> SCSCPwait( stream ); +gap> OMGetObjectWithAttributes( stream ); +rec( attributes := [ [ "call_id", "2" ] ], object := [ 2 ] ) +gap> OMPutProcedureCall( stream, "PointImages", +> rec( object := [ G, 2 ], +> attributes := [ [ "call_id", "3" ] ] ) ); +true +gap> SCSCPwait( stream ); +gap> OMGetObjectWithAttributes( stream ); +rec( attributes := [ [ "call_id", "3" ] ], object := [ 1, 3 ] ) +gap> OMPutProcedureCall( stream, "retrieve", +> rec( object := [ G ], +> attributes := [ [ "call_id", "4" ] ] ) ); +true +gap> SCSCPwait( stream ); +gap> OMGetObjectWithAttributes( stream ); +rec( attributes := [ [ "call_id", "4" ] ], + object := Group([ (1,2,3), (1,2) ]) ) +gap> CloseStream(stream); + +# doc/../lib/remote.gd:74-79 + +gap> s:=StoreAsRemoteObject( SymmetricGroup(3), "localhost", 26133 ); +< remote object scscp://localhost:26133/TEMPVarSCSCPLvIUUtL3 > + + +# doc/client.xml:344-351 +gap> s![1]; +"TEMPVarSCSCPLvIUUtL3" +gap> s![2]; +"localhost" +gap> s![3]; +26133 + +# doc/client.xml:357-362 +gap> OMPrint(s); + + + + +# doc/client.xml:367-371 +gap> EvaluateBySCSCP("WS_IdGroup",[s],"localhost",26133); +rec( attributes := [ [ "call_id", "localhost:26133:52918:Viq6EWBP" ] ], + object := [ 6, 1 ] ) + +# doc/../lib/remote.gd:105-110 + +gap> RetrieveRemoteObject(s); +Group([ (1,2,3), (1,2) ]) + + +# doc/../lib/remote.gd:134-139 + +gap> UnbindRemoteObject(s); +true + + +# doc/client.xml:381-386 +gap> s:=StoreAsRemoteObject( SymmetricGroup(3), "localhost", 26133 ); +< remote object scscp://localhost:26133/TEMPVarSCSCPNqc8Bkan > +gap> EvaluateBySCSCP( "WS_IdGroup", [ s ], "localhost", 26134 ); +rec( object := [ 6, 1 ], attributes := [ [ "call_id", "localhost:26134:7414" ] ] ) + +# doc/client.xml:390-394 +gap> EvaluateBySCSCP("WS_IdGroup",[s],"localhost",26133 : output:="cookie" ); +rec( attributes := [ [ "call_id", "localhost:26133:52918:mRU6w471" ] ], + object := < remote object scscp://localhost:26133/TEMPVarSCSCPS9SVe9PZ > ) + +# +gap> STOP_TEST("scscp03.tst", 1); diff --git a/tst/scscp04.tst b/tst/scscp04.tst index 75ff5a7..cf1a3ce 100644 --- a/tst/scscp04.tst +++ b/tst/scscp04.tst @@ -1,130 +1,42 @@ -# scscp, chapter 4 +# SCSCP, chapter 7 # # DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! # -# This file has been autogenerated with GAP. It contains examples -# extracted from the documentation. Each example is preceded by the -# comment which points to the location of its source. +# This file has been generated by AutoDoc. It contains examples extracted from +# the package documentation. Each example is preceded by a comment which gives +# the name of a GAPDoc XML file and a line range from which the example were +# taken. Note that the XML file in turn may have been generated by AutoDoc +# from some other input. # -gap> START_TEST( "scscp04.tst"); +gap> START_TEST("scscp04.tst"); -# doc/../lib/scscp.gd:492-500 -gap> s := InputOutputTCPStream("localhost",26133); -< input/output TCP stream to localhost:26133 > -gap> StartSCSCPsession(s); -"localhost:26133:5541" -gap> CloseStream( s ); - -# doc/../lib/openmath.gd:120-159 -gap> t:="";; stream:=OutputTextString(t,true);; -gap> OMPutProcedureCall( stream, "WS_Factorial", rec( object:= [ 5 ], -> attributes:=[ [ "call_id", "user007" ], -> ["option_runtime",1000], -> ["option_min_memory",1024], -> ["option_max_memory",2048], -> ["option_debuglevel",1], -> ["option_return_object"] ] ) );; -gap> Print(t); - - - - - - user007 - - 1000 - - 1024 - - 2048 - - 1 - - - - - - - - 5 - - - - - - -# doc/../lib/openmath.gd:44-77 -gap> InstallSCSCPprocedure("WS_Factorial", Factorial ); -gap> InstallSCSCPprocedure("GroupIdentificationService", IdGroup ); -gap> InstallSCSCPprocedure("GroupByIdNumber", SmallGroup ); -gap> InstallSCSCPprocedure( "Length", Length, 1, 1 ); -gap> test:=Filename( Directory( Concatenation( -> GAPInfo.PackagesInfo.("scscp")[1].InstallationPath,"/tst/" ) ), -> "omdemo.om" );; -gap> stream:=InputTextFile(test);; -gap> OMGetObjectWithAttributes(stream); -rec( - attributes := [ [ "option_return_object", "" ], [ "call_id", "5rc6rtG62" ] ] - , object := 6 ) -gap> OMGetObjectWithAttributes(stream); -rec( attributes := [ ], object := 1 ) -gap> OMGetObjectWithAttributes(stream); -rec( attributes := [ ], object := 120 ) -gap> OMGetObjectWithAttributes(stream); -rec( - attributes := [ [ "call_id", "alexk_9053" ], [ "option_runtime", 300000 ], - [ "option_min_memory", 40964 ], [ "option_max_memory", 134217728 ], - [ "option_debuglevel", 2 ], [ "option_return_object", "" ] ], - object := [ 24, 12 ] ) -gap> OMGetObjectWithAttributes(stream); -rec( - attributes := [ [ "call_id", "alexk_9053" ], [ "option_return_cookie", "" ] - ], object := ) -gap> OMGetObjectWithAttributes(stream); -rec( attributes := [ [ "call_id", "alexk_9053" ], [ "info_runtime", 1234 ], - [ "info_memory", 134217728 ] ], object := [ 24, 12 ] ) -gap> CloseStream( stream ); - -# doc/../lib/openmath.gd:184-207 -gap> t:="";; stream:=OutputTextString(t,true);; -gap> OMPutProcedureCompleted( stream, -> rec(object:=120, -> attributes:=[ [ "call_id", "user007" ] ] ) ); +# doc/examples.xml:67-78 +gap> LoadPackage("anupq", false); true -gap> Print(t); - - - - - - user007 - - - - 120 - - - - +gap> G := DihedralGroup( 512 ); + +gap> F := PqStandardPresentation( G ); + +gap> H := PcGroupFpGroup( F ); + +gap> IdStandardPresented512Group( H ); +[ 512, 2042 ] + +# doc/examples.xml:125-136 +gap> IdGroup512 := function( G ) +> local code, result; +> if Size( G ) <> 512 then +> Error( "G must be a group of order 512 \n" ); +> fi; +> code := CodePcGroup( G ); +> result := EvaluateBySCSCP( "IdGroup512ByCode", [ code ], +> "localhost", 26133 ); +> return result.object; +> end;; -# doc/openmath.xml:50-70 -gap> stream:=InputOutputTCPStream( "localhost", 26133 ); -< input/output TCP stream to localhost:26133 > -gap> sid := StartSCSCPsession( stream ); -"localhost:26133:5541" -gap> res:=[]; -[ ] -gap> for i in [1..10] do -> OMPutProcedureCall( stream, "WS_Factorial", -> rec( object := [ i ], -> attributes := [ [ "call_id", -> Concatenation( sid, ":", RandomString(8) ) ] ] ) ); -> SCSCPwait( stream ); -> res[i]:=OMGetObjectWithAttributes( stream ).object; -> od; -gap> CloseStream(stream); -gap> res; -[ 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800 ] +# doc/examples.xml:142-145 +gap> IdGroup512(DihedralGroup(512)); +[ 512, 2042 ] # -gap> STOP_TEST("scscp04.tst", 1 ); +gap> STOP_TEST("scscp04.tst", 1); diff --git a/tst/scscp05.tst b/tst/scscp05.tst index 6d43c1a..0fe9363 100644 --- a/tst/scscp05.tst +++ b/tst/scscp05.tst @@ -1,67 +1,99 @@ -# scscp, chapter 5 +# SCSCP, chapter 8 # # DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! # -# This file has been autogenerated with GAP. It contains examples -# extracted from the documentation. Each example is preceded by the -# comment which points to the location of its source. +# This file has been generated by AutoDoc. It contains examples extracted from +# the package documentation. Each example is preceded by a comment which gives +# the name of a GAPDoc XML file and a line range from which the example were +# taken. Note that the XML file in turn may have been generated by AutoDoc +# from some other input. # -gap> START_TEST( "scscp05.tst"); - -# doc/../lib/scscp.gd:727-735 -gap> GetServiceDescription( "localhost", 26133 ); -rec( - description := "Started with the configuration file scscp/example/myserver.g\ - on Thu 16 Feb 2017 16:03:56 GMT", service_name := "GAP SCSCP service", - version := "GAP 4.8.6 + SCSCP 2.2.1" ) - -# doc/../lib/scscp.gd:685-704 -gap> GetAllowedHeads("localhost",26133); -rec( scscp_transient_1 := [ "AClosestVectorCombinationsMatFFEVecFFE", - "Determinant", "GroupIdentificationService", - "IO_UnpickleStringAndPickleItBack", "IdGroup512ByCode", "Identity", - "IsPrimeInt", "Length", "MathieuGroup", "MatrixGroup", - "NormalizedUnitCFcommutator", "NormalizedUnitCFpower", - "NrConjugacyClasses", "NrSmallGroups", "NumberCFGroups", - "NumberCFSolvableGroups", "PointImages", "QuillenSeriesByIdGroup", - "ResetMinimumDistanceService", "SCSCPStartTracing", "SCSCPStopTracing", - "Size", "SylowSubgroup", "WS_AlternatingGroup", "WS_AutomorphismGroup", - "WS_ConwayPolynomial", "WS_Factorial", "WS_FactorsCFRAC", - "WS_FactorsECM", "WS_FactorsMPQS", "WS_FactorsPminus1", - "WS_FactorsPplus1", "WS_FactorsTD", "WS_IdGroup", "WS_LatticeSubgroups", - "WS_Mult", "WS_MultMatrix", "WS_Phi", "WS_PrimitiveGroup", - "WS_SmallGroup", "WS_SymmetricGroup", "WS_TransitiveGroup", "addition" - ] ) - -# doc/../lib/scscp.gd:854-863 -gap> IsAllowedHead( "permgp1", "group", "localhost", 26133 ); -true -gap> IsAllowedHead( "setname1", "Q", "localhost", 26133 ); +gap> START_TEST("scscp05.tst"); + +# doc/../lib/process.gd:203-215 + +gap> a:=NewProcess( "WS_Factorial", [10], "localhost", 26133 ); +< process at localhost:26133 pid=2064 > +gap> b:=NewProcess( "WS_Factorial", [20], "localhost", 26134 ); +< process at localhost:26134 pid=1975 > +gap> SynchronizeProcesses(a,b); +[ rec( attributes := [ [ "call_id", "localhost:26133:2064:yCWBGYFO" ] ], + object := 3628800 ), + rec( attributes := [ [ "call_id", "localhost:26134:1975:yAAWvGTL" ] ], + object := 2432902008176640000 ) ] + + +# doc/../lib/process.gd:240-250 + +gap> a:=NewProcess( "WS_Factorial", [10], "localhost", 26133 ); +< process at localhost:26133 pid=2064 > +gap> b:=NewProcess( "WS_Factorial", [20], "localhost", 26134 ); +< process at localhost:26134 pid=1975 > +gap> FirstProcess(a,b); +rec( attributes := [ [ "call_id", "localhost:26133:2064:mdb8RaO2" ] ], + object := 3628800 ) + + +# doc/../lib/scscp.gd:587-594 + +gap> ParQuickWithSCSCP( [ "WS_FactorsECM", "WS_FactorsMPQS" ], [ 2^150+1 ] ); +rec( attributes := [ [ "call_id", "localhost:26133:53877:GQX8MhC8" ] ], + object := [ [ 5, 5, 5, 13, 41, 61, 101, 1201, 1321, 63901 ], + [ 2175126601, 15767865236223301 ] ] ) + + +# doc/../lib/process.gd:282-292 + +gap> a:=NewProcess( "IsPrimeInt", [2^15013-1], "localhost", 26134 ); +< process at localhost:26134 pid=42554 > +gap> b:=NewProcess( "IsPrimeInt", [2^521-1], "localhost", 26133 ); +< process at localhost:26133 pid=42448 > +gap> FirstTrueProcess(a,b); +[ , rec( attributes := [ [ "call_id", "localhost:26133:42448:Lz1DL0ON" ] ], + object := true ) ] + + +# doc/../lib/process.gd:294-306 + +gap> a:=NewProcess( "IsPrimeInt", [2^520-1], "localhost", 26133 ); +< process at localhost:26133 pid=42448 > +gap> b:=NewProcess( "IsPrimeInt", [2^15013-1], "localhost", 26134 ); +< process at localhost:26134 pid=42554 > +gap> FirstTrueProcess(a,b); +[ rec( attributes := [ [ "call_id", "localhost:26133:42448:nvsk8PQp" ] ], + object := false ), + rec( attributes := [ [ "call_id", "localhost:26134:42554:JnEYuXL8" ] ], + object := false ) ] + + +# doc/../lib/scscp.gd:632-647 + +gap> ParListWithSCSCP( List( [2..6], n -> SymmetricGroup(n)), "WS_IdGroup" ); +#I master -> [ "localhost", 26133 ] : SymmetricGroup( [ 1 .. 2 ] ) +#I master -> [ "localhost", 26134 ] : SymmetricGroup( [ 1 .. 3 ] ) +#I [ "localhost", 26133 ] --> master : [ 2, 1 ] +#I master -> [ "localhost", 26133 ] : SymmetricGroup( [ 1 .. 4 ] ) +#I [ "localhost", 26134 ] --> master : [ 6, 1 ] +#I master -> [ "localhost", 26134 ] : SymmetricGroup( [ 1 .. 5 ] ) +#I [ "localhost", 26133 ] --> master : [ 24, 12 ] +#I master -> [ "localhost", 26133 ] : SymmetricGroup( [ 1 .. 6 ] ) +#I [ "localhost", 26133 ] --> master : [ 720, 763 ] +#I [ "localhost", 26134 ] --> master : [ 120, 34 ] +[ [ 2, 1 ], [ 6, 1 ], [ 24, 12 ], [ 120, 34 ], [ 720, 763 ] ] + + +# doc/parallel.xml:168-180 +gap> ReadPackage("scscp", "example/karatsuba.g"); true -gap> IsAllowedHead( "setname1", "R", "localhost", 26133 ); -false - -# doc/../lib/scscp.gd:806-823 -gap> GetTransientCD( "scscp_transient_1", "localhost", 26133 ); -rec( CDDate := "2017-02-08", - CDDefinitions := - [ rec( Description := "Size is currently undocumented.", Name := "Size" ), - rec( Description := "Length is currently undocumented.", - Name := "Length" ), - rec( Description := "NrConjugacyClasses is currently undocumented.", - Name := "NrConjugacyClasses" ), -... - rec( Description := "MatrixGroup is currently undocumented.", - Name := "MatrixGroup" ) ], CDName := "scscp_transient_1", - CDReviewDate := "2017-02-08", CDRevision := "0", CDStatus := "private", - CDVersion := "0", - Description := "This is a transient CD for the GAP SCSCP service" ) - -# doc/../lib/scscp.gd:768-775 -gap> GetSignature("scscp_transient_1","WS_Factorial","localhost",26133); -rec( maxarg := 1, minarg := 1, - symbol := rec( cd := "scscp_transient_1", name := "WS_Factorial" ), - symbolargs := rec( cd := "scscp2", name := "symbol_set_all" ) ) +gap> fam:=FamilyObj(1);; +gap> f:=LaurentPolynomialByCoefficients( fam, +> List([1..32000],i->Random(Integers)), 0, 1 );; +gap> g:=LaurentPolynomialByCoefficients( fam, +> List([1..32000],i->Random(Integers)), 0, 1 );; +gap> t2:=KaratsubaPolynomialMultiplication(f,g);;time; +5892 +gap> t3:=KaratsubaPolynomialMultiplicationWS(f,g);;time; +2974 # -gap> STOP_TEST("scscp05.tst", 1 ); +gap> STOP_TEST("scscp05.tst", 1); diff --git a/tst/scscp06.tst b/tst/scscp06.tst index 884e4ff..0dc86ba 100644 --- a/tst/scscp06.tst +++ b/tst/scscp06.tst @@ -1,198 +1,169 @@ -# scscp, chapter 6 +# SCSCP, chapter 9 # # DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! # -# This file has been autogenerated with GAP. It contains examples -# extracted from the documentation. Each example is preceded by the -# comment which points to the location of its source. +# This file has been generated by AutoDoc. It contains examples extracted from +# the package documentation. Each example is preceded by a comment which gives +# the name of a GAPDoc XML file and a line range from which the example were +# taken. Note that the XML file in turn may have been generated by AutoDoc +# from some other input. # -gap> START_TEST( "scscp06.tst"); +gap> START_TEST("scscp06.tst"); -# doc/../lib/connect.gd:47-61 -gap> SetInfoLevel( InfoSCSCP, 2 ); -gap> s:=NewSCSCPconnection("localhost",26133); +# doc/../lib/scscp.gd:429-439 + +gap> PingSCSCPservice("localhost",26133); +true +gap> PingSCSCPservice("localhost",26140); +Error: rec( + message := "Connection refused", + number := 61 ) +fail + + +# doc/../lib/scscp.gd:463-469 + +gap> PingStatistic("localhost",26133,1000); +1000 packets transmitted, 1000 received, 0% packet loss, time 208ms +min/avg/max = [ 0, 26/125, 6 ] + + +# doc/../lib/scscp.gd:33-53 + +gap> SetInfoLevel(InfoSCSCP,2); +gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133); #I Creating a socket ... #I Connecting to a remote socket via TCP/IP ... #I Got connection initiation message #I +6133:286" scscp_versions="1.0 1.1 1.2 1.3" ?> #I Requesting version 1.3 from the server ... #I Server confirmed version 1.3 to the client ... -< connection to localhost:26133 session_id=localhost:26133:52918 > -gap> CloseSCSCPconnection(s); - -# doc/../lib/connect.gd:85-92 -gap> SetInfoLevel( InfoSCSCP, 0 ); -gap> s:=NewSCSCPconnection("localhost",26133); -< connection to localhost:26133 session_id=localhost:26133:52918 > -gap> CloseSCSCPconnection(s); - -# doc/../lib/process.gd:142-150 -gap> s := NewProcess( "WS_Factorial", [10], "localhost", 26133 ); -< process at localhost:26133 pid=52918 > -gap> x := CompleteProcess(s); -rec( attributes := [ [ "call_id", "localhost:26133:52918:TPNiMjCT" ] ], +#I Request sent ... +#I Waiting for reply ... +#I +#I +#I Got back: object 3628800 with attributes +[ [ "call_id", "localhost:26133:286:JL6KRQeh" ] ] +rec( attributes := [ [ "call_id", "localhost:26133:286:JL6KRQeh" ] ], object := 3628800 ) -# doc/../lib/scscp.gd:541-554 + +# doc/../lib/scscp.gd:56-63 + +gap> SetInfoLevel(InfoSCSCP,0); gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133); -rec( attributes := [ [ "call_id", "localhost:26133:2442:6hMEN40d" ] ], +rec( attributes := [ [ "call_id", "localhost:26133:286:jzjsp6th" ] ], object := 3628800 ) -gap> SetInfoLevel(InfoSCSCP,0); -gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133 : output:="cookie" ); -rec( attributes := [ [ "call_id", "localhost:26133:2442:jNQG6rml" ] ], - object := < remote object scscp://localhost:26133/TEMPVarSCSCP5KZIeiKD > ) -gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133 : output:="nothing" ); -rec( attributes := [ [ "call_id", "localhost:26133:2442:9QHQrCjv" ] ], - object := "procedure completed" ) - -# doc/client.xml:60-73 -gap> G:=SymmetricGroup(4); -Sym( [ 1 .. 4 ] ) -gap> gens:=GeneratorsOfGroup(G); -[ (1,2,3,4), (1,2) ] -gap> EvaluateBySCSCP( "GroupIdentificationService", [ gens ], -> "localhost", 26133 : debuglevel:=3 ); -rec( attributes := [ [ "call_id", "localhost:26133:2442:xOilXtnw" ], - [ "info_runtime", 4 ], [ "info_memory", 2596114432 ], - [ "info_message", "Memory usage for the result is 48 bytes" ] ], - object := [ 24, 12 ] ) - -# doc/client.xml:77-91 -gap> IdGroupWS := function( G ) -> local H, result; -> if not IsPermGroup(G) then -> H:= Image( IsomorphismPermGroup( G ) ); -> else -> H := G; -> fi; -> result := EvaluateBySCSCP ( "GroupIdentificationService", -> [ GeneratorsOfGroup(H) ], "localhost", 26133 ); -> return result.object; -> end;; - -# doc/client.xml:95-102 -gap> G:=DihedralGroup(64); - -gap> IdGroupWS(G); -[ 64, 52 ] - -# doc/client.xml:115-120 -gap> x := [ Z(3)^0, Z(3), 0*Z(3) ]; -[ Z(3)^0, Z(3), 0*Z(3) ] - -# doc/client.xml:122-157 -gap> OMPrint( x ); + + +# doc/../lib/scscp.gd:66-121 + +gap> SetInfoLevel(InfoSCSCP,3); +gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133); +#I Creating a socket ... +#I Connecting to a remote socket via TCP/IP ... +#I Got connection initiation message +#I +#I Requesting version 1.3 from the server ... +#I Server confirmed version 1.3 to the client ... +#I Composing procedure_call message: + - - - - - - - 3 - - 0 - + + + + localhost:26133:286:Jok6cQAf + + + - + - - 3 + + 10 - 1 + + + +#I Total length 396 characters +#I Request sent ... +#I Waiting for reply ... +#I +#I Received message: + + + + + localhost:26133:286:Jok6cQAf + - - - - 3 - - 0 + + 3628800 - - -gap> Length( OMString(x) ); -507 - -# doc/client.xml:295-333 -gap> stream:=InputOutputTCPStream( "localhost", 26133 ); -< input/output TCP stream to localhost:26133 > -gap> StartSCSCPsession(stream); -"localhost:26133:6184" -gap> OMPutProcedureCall( stream, "store_session", -> rec( object := [ SymmetricGroup(3) ], -> attributes := [ [ "call_id", "1" ], -> ["option_return_cookie"] ] ) ); -true -gap> SCSCPwait( stream ); -gap> G:=OMGetObjectWithAttributes( stream ).object; -< remote object scscp://localhost:26133/TEMPVarSCSCPo3Bc8J75 > -gap> OMPutProcedureCall( stream, "PointImages", -> rec( object := [ G, 1 ], -> attributes := [ [ "call_id", "2" ] ] ) ); -true -gap> SCSCPwait( stream ); -gap> OMGetObjectWithAttributes( stream ); -rec( attributes := [ [ "call_id", "2" ] ], object := [ 2 ] ) -gap> OMPutProcedureCall( stream, "PointImages", -> rec( object := [ G, 2 ], -> attributes := [ [ "call_id", "3" ] ] ) ); -true -gap> SCSCPwait( stream ); -gap> OMGetObjectWithAttributes( stream ); -rec( attributes := [ [ "call_id", "3" ] ], object := [ 1, 3 ] ) -gap> OMPutProcedureCall( stream, "retrieve", -> rec( object := [ G ], -> attributes := [ [ "call_id", "4" ] ] ) ); -true -gap> SCSCPwait( stream ); -gap> OMGetObjectWithAttributes( stream ); -rec( attributes := [ [ "call_id", "4" ] ], - object := Group([ (1,2,3), (1,2) ]) ) -gap> CloseStream(stream); - -# doc/../lib/remote.gd:74-79 -gap> s:=StoreAsRemoteObject( SymmetricGroup(3), "localhost", 26133 ); -< remote object scscp://localhost:26133/TEMPVarSCSCPLvIUUtL3 > - -# doc/client.xml:359-368 -gap> s![1]; -"TEMPVarSCSCPLvIUUtL3" -gap> s![2]; -"localhost" -gap> s![3]; -26133 - -# doc/client.xml:374-381 -gap> OMPrint(s); - - + +#I +#I Got back: object 3628800 with attributes +[ [ "call_id", "localhost:26133:286:Jok6cQAf" ] ] +rec( attributes := [ [ "call_id", "localhost:26133:286:Jok6cQAf" ] ], + object := 3628800 ) +gap> SetInfoLevel(InfoSCSCP,0); -# doc/client.xml:386-392 -gap> EvaluateBySCSCP("WS_IdGroup",[s],"localhost",26133); -rec( attributes := [ [ "call_id", "localhost:26133:52918:Viq6EWBP" ] ], - object := [ 6, 1 ] ) -# doc/../lib/remote.gd:105-110 -gap> RetrieveRemoteObject(s); -Group([ (1,2,3), (1,2) ]) +# doc/../lib/scscp.gd:149-160 -# doc/../lib/remote.gd:134-139 -gap> UnbindRemoteObject(s); -true +gap> SetInfoLevel(InfoMasterWorker,2); +gap> ParListWithSCSCP( List( [2..6], n -> SymmetricGroup(n)), "WS_IdGroup" ); +#I 1/5:master --> localhost:26133 +#I 2/5:master --> localhost:26134 +#I 3/5:master --> localhost:26133 +#I 4/5:master --> localhost:26134 +#I 5/5:master --> localhost:26133 +[ [ 2, 1 ], [ 6, 1 ], [ 24, 12 ], [ 120, 34 ], [ 720, 763 ] ] -# doc/client.xml:402-409 -gap> s:=StoreAsRemoteObject( SymmetricGroup(3), "localhost", 26133 ); -< remote object scscp://localhost:26133/TEMPVarSCSCPNqc8Bkan > -gap> EvaluateBySCSCP( "WS_IdGroup", [ s ], "localhost", 26134 ); -rec( object := [ 6, 1 ], attributes := [ [ "call_id", "localhost:26134:7414" ] ] ) -# doc/client.xml:413-419 -gap> EvaluateBySCSCP("WS_IdGroup",[s],"localhost",26133 : output:="cookie" ); -rec( attributes := [ [ "call_id", "localhost:26133:52918:mRU6w471" ] ], - object := < remote object scscp://localhost:26133/TEMPVarSCSCPS9SVe9PZ > ) +# doc/../lib/scscp.gd:163-170 + +gap> SetInfoLevel(InfoSCSCP,0); +gap> SetInfoLevel(InfoMasterWorker,0); +gap> ParListWithSCSCP( List( [2..6], n -> SymmetricGroup(n)), "WS_IdGroup" ); +[ [ 2, 1 ], [ 6, 1 ], [ 24, 12 ], [ 120, 34 ], [ 720, 763 ] ] + + +# doc/../lib/scscp.gd:173-190 + +gap> SetInfoLevel(InfoMasterWorker,5); +gap> ParListWithSCSCP( List( [2..6], n -> SymmetricGroup(n)), "WS_IdGroup" ); +#I 1/5:master --> localhost:26133 : SymmetricGroup( [ 1 .. 2 ] ) +#I 2/5:master --> localhost:26134 : SymmetricGroup( [ 1 .. 3 ] ) +#I localhost:26133 --> 1/5:master : [ 2, 1 ] +#I 3/5:master --> localhost:26133 : SymmetricGroup( [ 1 .. 4 ] ) +#I localhost:26134 --> 2/5:master : [ 6, 1 ] +#I 4/5:master --> localhost:26134 : SymmetricGroup( [ 1 .. 5 ] ) +#I localhost:26133 --> 3/5:master : [ 24, 12 ] +#I 5/5:master --> localhost:26133 : SymmetricGroup( [ 1 .. 6 ] ) +#I localhost:26134 --> 4/5:master : [ 120, 34 ] +#I localhost:26133 --> 5/5:master : [ 720, 763 ] +[ [ 2, 1 ], [ 6, 1 ], [ 24, 12 ], [ 120, 34 ], [ 720, 763 ] ] +gap> SetInfoLevel(InfoMasterWorker,2); + + +# doc/../lib/utils.g:202-207 + +gap> f := IO_PickleToString( GF( 125 ) ); +"FFIEINTG\>15INTG\>13FAIL" + + +# doc/../lib/utils.g:239-246 + +gap> IO_UnpickleFromString( f ); +GF(5^3) +gap> f = IO_UnpickleFromString( IO_PickleToString( f ) ); +true + # -gap> STOP_TEST("scscp06.tst", 1 ); +gap> STOP_TEST("scscp06.tst", 1); diff --git a/tst/scscp07.tst b/tst/scscp07.tst deleted file mode 100644 index 74f9b26..0000000 --- a/tst/scscp07.tst +++ /dev/null @@ -1,40 +0,0 @@ -# scscp, chapter 7 -# -# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! -# -# This file has been autogenerated with GAP. It contains examples -# extracted from the documentation. Each example is preceded by the -# comment which points to the location of its source. -# -gap> START_TEST( "scscp07.tst"); - -# doc/examples.xml:71-84 -gap> LoadPackage("anupq", false); -true -gap> G := DihedralGroup( 512 ); - -gap> F := PqStandardPresentation( G ); - -gap> H := PcGroupFpGroup( F ); - -gap> IdStandardPresented512Group( H ); -[ 512, 2042 ] - -# doc/examples.xml:135-148 -gap> IdGroup512 := function( G ) -> local code, result; -> if Size( G ) <> 512 then -> Error( "G must be a group of order 512 \n" ); -> fi; -> code := CodePcGroup( G ); -> result := EvaluateBySCSCP( "IdGroup512ByCode", [ code ], -> "localhost", 26133 ); -> return result.object; -> end;; - -# doc/examples.xml:154-159 -gap> IdGroup512(DihedralGroup(512)); -[ 512, 2042 ] - -# -gap> STOP_TEST("scscp07.tst", 1 ); diff --git a/tst/scscp08.tst b/tst/scscp08.tst deleted file mode 100644 index 284f95b..0000000 --- a/tst/scscp08.tst +++ /dev/null @@ -1,85 +0,0 @@ -# scscp, chapter 8 -# -# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! -# -# This file has been autogenerated with GAP. It contains examples -# extracted from the documentation. Each example is preceded by the -# comment which points to the location of its source. -# -gap> START_TEST( "scscp08.tst"); - -# doc/../lib/process.gd:203-215 -gap> a:=NewProcess( "WS_Factorial", [10], "localhost", 26133 ); -< process at localhost:26133 pid=2064 > -gap> b:=NewProcess( "WS_Factorial", [20], "localhost", 26134 ); -< process at localhost:26134 pid=1975 > -gap> SynchronizeProcesses(a,b); -[ rec( attributes := [ [ "call_id", "localhost:26133:2064:yCWBGYFO" ] ], - object := 3628800 ), - rec( attributes := [ [ "call_id", "localhost:26134:1975:yAAWvGTL" ] ], - object := 2432902008176640000 ) ] - -# doc/../lib/process.gd:240-250 -gap> a:=NewProcess( "WS_Factorial", [10], "localhost", 26133 ); -< process at localhost:26133 pid=2064 > -gap> b:=NewProcess( "WS_Factorial", [20], "localhost", 26134 ); -< process at localhost:26134 pid=1975 > -gap> FirstProcess(a,b); -rec( attributes := [ [ "call_id", "localhost:26133:2064:mdb8RaO2" ] ], - object := 3628800 ) - -# doc/../lib/scscp.gd:587-594 -gap> ParQuickWithSCSCP( [ "WS_FactorsECM", "WS_FactorsMPQS" ], [ 2^150+1 ] ); -rec( attributes := [ [ "call_id", "localhost:26133:53877:GQX8MhC8" ] ], - object := [ [ 5, 5, 5, 13, 41, 61, 101, 1201, 1321, 63901 ], - [ 2175126601, 15767865236223301 ] ] ) - -# doc/../lib/process.gd:282-292 -gap> a:=NewProcess( "IsPrimeInt", [2^15013-1], "localhost", 26134 ); -< process at localhost:26134 pid=42554 > -gap> b:=NewProcess( "IsPrimeInt", [2^521-1], "localhost", 26133 ); -< process at localhost:26133 pid=42448 > -gap> FirstTrueProcess(a,b); -[ , rec( attributes := [ [ "call_id", "localhost:26133:42448:Lz1DL0ON" ] ], - object := true ) ] - -# doc/../lib/process.gd:294-306 -gap> a:=NewProcess( "IsPrimeInt", [2^520-1], "localhost", 26133 ); -< process at localhost:26133 pid=42448 > -gap> b:=NewProcess( "IsPrimeInt", [2^15013-1], "localhost", 26134 ); -< process at localhost:26134 pid=42554 > -gap> FirstTrueProcess(a,b); -[ rec( attributes := [ [ "call_id", "localhost:26133:42448:nvsk8PQp" ] ], - object := false ), - rec( attributes := [ [ "call_id", "localhost:26134:42554:JnEYuXL8" ] ], - object := false ) ] - -# doc/../lib/scscp.gd:632-647 -gap> ParListWithSCSCP( List( [2..6], n -> SymmetricGroup(n)), "WS_IdGroup" ); -#I master -> [ "localhost", 26133 ] : SymmetricGroup( [ 1 .. 2 ] ) -#I master -> [ "localhost", 26134 ] : SymmetricGroup( [ 1 .. 3 ] ) -#I [ "localhost", 26133 ] --> master : [ 2, 1 ] -#I master -> [ "localhost", 26133 ] : SymmetricGroup( [ 1 .. 4 ] ) -#I [ "localhost", 26134 ] --> master : [ 6, 1 ] -#I master -> [ "localhost", 26134 ] : SymmetricGroup( [ 1 .. 5 ] ) -#I [ "localhost", 26133 ] --> master : [ 24, 12 ] -#I master -> [ "localhost", 26133 ] : SymmetricGroup( [ 1 .. 6 ] ) -#I [ "localhost", 26133 ] --> master : [ 720, 763 ] -#I [ "localhost", 26134 ] --> master : [ 120, 34 ] -[ [ 2, 1 ], [ 6, 1 ], [ 24, 12 ], [ 120, 34 ], [ 720, 763 ] ] - -# doc/parallel.xml:176-190 -gap> ReadPackage("scscp", "example/karatsuba.g"); -true -gap> fam:=FamilyObj(1);; -gap> f:=LaurentPolynomialByCoefficients( fam, -> List([1..32000],i->Random(Integers)), 0, 1 );; -gap> g:=LaurentPolynomialByCoefficients( fam, -> List([1..32000],i->Random(Integers)), 0, 1 );; -gap> t2:=KaratsubaPolynomialMultiplication(f,g);;time; -5892 -gap> t3:=KaratsubaPolynomialMultiplicationWS(f,g);;time; -2974 - -# -gap> STOP_TEST("scscp08.tst", 1 ); diff --git a/tst/scscp09.tst b/tst/scscp09.tst deleted file mode 100644 index 5174ff2..0000000 --- a/tst/scscp09.tst +++ /dev/null @@ -1,147 +0,0 @@ -# scscp, chapter 9 -# -# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! -# -# This file has been autogenerated with GAP. It contains examples -# extracted from the documentation. Each example is preceded by the -# comment which points to the location of its source. -# -gap> START_TEST( "scscp09.tst"); - -# doc/../lib/scscp.gd:429-439 -gap> PingSCSCPservice("localhost",26133); -true -gap> PingSCSCPservice("localhost",26140); -Error: rec( - message := "Connection refused", - number := 61 ) -fail - -# doc/../lib/scscp.gd:463-469 -gap> PingStatistic("localhost",26133,1000); -1000 packets transmitted, 1000 received, 0% packet loss, time 208ms -min/avg/max = [ 0, 26/125, 6 ] - -# doc/../lib/scscp.gd:33-53 -gap> SetInfoLevel(InfoSCSCP,2); -gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133); -#I Creating a socket ... -#I Connecting to a remote socket via TCP/IP ... -#I Got connection initiation message -#I -#I Requesting version 1.3 from the server ... -#I Server confirmed version 1.3 to the client ... -#I Request sent ... -#I Waiting for reply ... -#I -#I -#I Got back: object 3628800 with attributes -[ [ "call_id", "localhost:26133:286:JL6KRQeh" ] ] -rec( attributes := [ [ "call_id", "localhost:26133:286:JL6KRQeh" ] ], - object := 3628800 ) - -# doc/../lib/scscp.gd:56-63 -gap> SetInfoLevel(InfoSCSCP,0); -gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133); -rec( attributes := [ [ "call_id", "localhost:26133:286:jzjsp6th" ] ], - object := 3628800 ) - -# doc/../lib/scscp.gd:66-121 -gap> SetInfoLevel(InfoSCSCP,3); -gap> EvaluateBySCSCP( "WS_Factorial",[10],"localhost",26133); -#I Creating a socket ... -#I Connecting to a remote socket via TCP/IP ... -#I Got connection initiation message -#I -#I Requesting version 1.3 from the server ... -#I Server confirmed version 1.3 to the client ... -#I Composing procedure_call message: - - - - - - localhost:26133:286:Jok6cQAf - - - - - - - - 10 - - - - - -#I Total length 396 characters -#I Request sent ... -#I Waiting for reply ... -#I -#I Received message: - - - - - localhost:26133:286:Jok6cQAf - - - - 3628800 - - - -#I -#I Got back: object 3628800 with attributes -[ [ "call_id", "localhost:26133:286:Jok6cQAf" ] ] -rec( attributes := [ [ "call_id", "localhost:26133:286:Jok6cQAf" ] ], - object := 3628800 ) -gap> SetInfoLevel(InfoSCSCP,0); - -# doc/../lib/scscp.gd:149-160 -gap> SetInfoLevel(InfoMasterWorker,2); -gap> ParListWithSCSCP( List( [2..6], n -> SymmetricGroup(n)), "WS_IdGroup" ); -#I 1/5:master --> localhost:26133 -#I 2/5:master --> localhost:26134 -#I 3/5:master --> localhost:26133 -#I 4/5:master --> localhost:26134 -#I 5/5:master --> localhost:26133 -[ [ 2, 1 ], [ 6, 1 ], [ 24, 12 ], [ 120, 34 ], [ 720, 763 ] ] - -# doc/../lib/scscp.gd:163-170 -gap> SetInfoLevel(InfoSCSCP,0); -gap> SetInfoLevel(InfoMasterWorker,0); -gap> ParListWithSCSCP( List( [2..6], n -> SymmetricGroup(n)), "WS_IdGroup" ); -[ [ 2, 1 ], [ 6, 1 ], [ 24, 12 ], [ 120, 34 ], [ 720, 763 ] ] - -# doc/../lib/scscp.gd:173-190 -gap> SetInfoLevel(InfoMasterWorker,5); -gap> ParListWithSCSCP( List( [2..6], n -> SymmetricGroup(n)), "WS_IdGroup" ); -#I 1/5:master --> localhost:26133 : SymmetricGroup( [ 1 .. 2 ] ) -#I 2/5:master --> localhost:26134 : SymmetricGroup( [ 1 .. 3 ] ) -#I localhost:26133 --> 1/5:master : [ 2, 1 ] -#I 3/5:master --> localhost:26133 : SymmetricGroup( [ 1 .. 4 ] ) -#I localhost:26134 --> 2/5:master : [ 6, 1 ] -#I 4/5:master --> localhost:26134 : SymmetricGroup( [ 1 .. 5 ] ) -#I localhost:26133 --> 3/5:master : [ 24, 12 ] -#I 5/5:master --> localhost:26133 : SymmetricGroup( [ 1 .. 6 ] ) -#I localhost:26134 --> 4/5:master : [ 120, 34 ] -#I localhost:26133 --> 5/5:master : [ 720, 763 ] -[ [ 2, 1 ], [ 6, 1 ], [ 24, 12 ], [ 120, 34 ], [ 720, 763 ] ] -gap> SetInfoLevel(InfoMasterWorker,2); - -# doc/../lib/utils.g:202-207 -gap> f := IO_PickleToString( GF( 125 ) ); -"FFIEINTG\>15INTG\>13FAIL" - -# doc/../lib/utils.g:239-246 -gap> IO_UnpickleFromString( f ); -GF(5^3) -gap> f = IO_UnpickleFromString( IO_PickleToString( f ) ); -true - -# -gap> STOP_TEST("scscp09.tst", 1 ); diff --git a/tst/testall.g b/tst/testall.g index 7b6f81e..50d0b91 100644 --- a/tst/testall.g +++ b/tst/testall.g @@ -26,7 +26,7 @@ TestDirectory(DirectoriesPackageLibrary( "scscp", "tst" ), # Run test files which should have no diffs TestDirectory(DirectoriesPackageLibrary( "scscp", "tst" ), rec(exitGAP := true, - exclude := [ "scscp04.tst", "scscp05.tst", "scscp06.tst", "scscp07.tst", "scscp08.tst", "scscp09.tst" ], + exclude := [ "scscp01.tst", "scscp02.tst", "scscp03.tst", "scscp04.tst", "scscp05.tst", "scscp06.tst" ], testOptions := rec(compareFunction := "uptowhitespace") ) ); FORCE_QUIT_GAP(1); # if we ever get here, there was an error