Salome HOME
[EDF29576] : management of -x option
authorAnthony Geay <anthony.geay@edf.fr>
Mon, 26 Feb 2024 06:38:50 +0000 (07:38 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Mon, 26 Feb 2024 06:38:50 +0000 (07:38 +0100)
src/runtime/VisitorSalomeSaveState.hxx
src/runtime/VisitorSaveSalomeSchema.cxx
src/runtime/VisitorSaveSalomeSchema.hxx
src/runtime_swig/SALOMERuntime.i
src/yacsloader/driver.py

index 2306a72a03785f85b82780ce9384967d1fe63170..4c3a8e4302d370910ce5b4c815050977d9e616a0 100644 (file)
@@ -36,10 +36,10 @@ namespace YACS
       virtual void visitForEachLoop(ForEachLoop *node);
     };
 
-    YACSLIBENGINE_EXPORT void schemaSaveState(Proc* proc,
+    YACSRUNTIMESALOME_EXPORT void schemaSaveState(Proc* proc,
                                               Executor* exec,
                                               const std::string& xmlSchemaFile);
-    YACSLIBENGINE_EXPORT void schemaSaveStateUnsafe(Proc* proc, const std::string& xmlSchemaFile);
+    YACSRUNTIMESALOME_EXPORT void schemaSaveStateUnsafe(Proc* proc, const std::string& xmlSchemaFile);
   }
 }
 #endif // VISITORSALOMESAVESTATE_HXX
index 918539a6557ea1cf1d3099115dcf9c639569b959..b15638ce4470087893dbb16807fabb2833f080b2 100644 (file)
@@ -177,3 +177,11 @@ void VisitorSaveSalomeSchema::writeStudyOutNodeParameters(DataNode *node)
       _out << inp->getData() << "\"/>" << endl;
     }
 }
+
+void YACS::ENGINE::VisitorSaveSalomeSchemaUnsafe(ComposedNode* proc, const std::string& xmlSchema)
+{
+  VisitorSaveSalomeSchema vss(proc);
+  vss.openFileSchema(xmlSchema);
+  proc->accept(&vss);
+  vss.closeFileSchema();
+}
index c8e3b047bcce4916496b7084b4dc7847e1710bb8..3d817ff2e6a285e4bf51eeb0162ef0b27700bfc8 100644 (file)
@@ -42,6 +42,8 @@ namespace YACS
       virtual void writeOutNodeParameters(DataNode *node);
       virtual void writeStudyOutNodeParameters(DataNode *node);
     };
+
+    YACSRUNTIMESALOME_EXPORT void VisitorSaveSalomeSchemaUnsafe(ComposedNode* proc, const std::string& xmlSchema);
   }
 }
 
index 0c591c91917ad39bc042443c9adac3ea8632dceb..7e99d48278048d92ea91b2c73ca2d47c06b858d1 100644 (file)
@@ -163,6 +163,8 @@ namespace YACS
                          Executor* exec,
                          const std::string& xmlSchemaFile);
     void schemaSaveStateUnsafe(Proc* proc, const std::string& xmlSchemaFile);
+    
+    void VisitorSaveSalomeSchemaUnsafe(Proc* proc, const std::string& xmlSchema);
   }
 }
 
index 7a5675529e48350f8b1a758812c352447aa3f141..4b55a6f34a004eac9965ef242aa606d37ce22e52 100644 (file)
 
 # python3 /home/H87074/salome/990_CEA/SALOME-master-native-DB11-SRC/SOURCES/yacs/src/yacsloader/driver.py -v -kt micro_schema.xml
 # python3 /home/H87074/salome/990_CEA/SALOME-master-native-DB11-SRC/SOURCES/yacs/src/yacsloader/driver.py -d 3 -g 2 --stop-on-error --dump-on-error="popo.xml" -v -kt -ip "PyScript0.p1=7" --dump-final="tutu.xml" micro_schema2.xml
+# python3 /home/H87074/salome/990_CEA/SALOME-master-native-DB11-SRC/SOURCES/yacs/src/yacsloader/driver.py -g 2 --stop-on-error --dump-on-error="popo.xml" -v -kt -ip "PyScript0.p1=7" --dump-final="tutu.xml" micro_schema2.xml
+# python3 /home/H87074/salome/990_CEA/SALOME-master-native-DB11-SRC/SOURCES/yacs/src/yacsloader/driver.py -x -g 2 --stop-on-error --dump-on-error="popo.xml" -v -kt -ip "PyScript0.p1=7" --dump-final="tutu.xml" micro_schema2.xml
 
 import loader
-import SALOMERuntime
+#import SALOMERuntime
 import salome
 import logging
 
@@ -73,7 +75,7 @@ def loadGraph( xmlFileName ):
     p=l.load( xmlFileName )
     return p
 
-def patchGraph( proc, squeezeMemory, initPorts, loadStateXmlFile, reset, display):
+def patchGraph( proc, squeezeMemory, initPorts, xmlSchema, loadStateXmlFile, reset, display):
     """
     Args:
     -----
@@ -81,10 +83,12 @@ def patchGraph( proc, squeezeMemory, initPorts, loadStateXmlFile, reset, display
     proc ( SALOMERuntime.SalomeProc ) : YACS Proc instance to be evaluated
     squeezeMemory ( bool ) : squeezememory to be activated
     initPorts (list<string>) : list of bloc.node.port=value.
+    xmlSchema (string) :
     loadStateXmlFile (string) : file if any of state to be loaded inside proc
     reset (int) : 
     display (int) :
     """
+    import SALOMERuntime
     def parse_init_port(input):
       """
       Returns
@@ -110,6 +114,10 @@ def patchGraph( proc, squeezeMemory, initPorts, loadStateXmlFile, reset, display
         if init_state != value:
           raise RuntimeError(f"Error on initialization of {initPort}")
     #
+    if xmlSchema:
+      SALOMERuntime.VisitorSaveSalomeSchemaUnsafe(proc,xmlSchema)
+      pass
+    #
     if loadStateXmlFile:
       loader.loadState( proc, loadStateXmlFile )
       if reset > 0:
@@ -134,17 +142,6 @@ def prepareExecution(proc, isStop, dumpErrorFile):
     ex.setStopOnError( dumpErrorFile!="", dumpErrorFile )
   return ex
 
-def dumpState(proc):
-  import time
-  import pilot
-  state = proc.getEffectiveState()
-  while ( state != pilot.DONE ) and ( state != pilot.LOADFAILED ) and ( state != pilot.EXECFAILED ) and ( state != pilot.INTERNALERR ) and ( state != pilot.DISABLED ) and ( state != pilot.FAILED ) and ( state != pilot.ERROR ):
-    print("Waiting")
-    time.sleep(0)
-    time.sleep(2)
-    time.sleep(0)
-    state = proc.getEffectiveState()
-
 @SALOMEInitializationNeeded
 def executeGraph( executor, xmlfilename, proc, dump, finalDump, display ):
     """
@@ -209,8 +206,9 @@ if __name__ == "__main__":
     parser.add_argument("-g","--dump",dest="dump", type=int, const=60, default=0, nargs='?', help="dump state")
     parser.add_argument("-kt", "--kerneltrace", dest = "kerneltrace",help="Produce verbose of SALOME/KERNEL", action='store_true')
     parser.add_argument("-f","--dump-final", dest ="finalDump", type=str, const='finalDumpState.xml', default="", nargs='?', help="dump final state")
-    parser.add_argument("--load-state", dest="loadState", type=str, default="", help="Load State from a previous partial execution")
-    parser.add_argument("--shutdown", dest = 'shutdown', type=int , default=1, help="Shutdown the schema: 0=no shutdown to 3=full shutdown")
+    parser.add_argument("-l","--load-state", dest="loadState", type=str, default="", help="Load State from a previous partial execution")
+    parser.add_argument("-x","--save-xml-schema", dest="saveXMLSchema", type=str, const="saveSchema.xml", nargs='?', default="", help = "dump xml schema")
+    parser.add_argument("-t","--shutdown", dest = 'shutdown', type=int , default=1, help="Shutdown the schema: 0=no shutdown to 3=full shutdown")
     parser.add_argument("--reset", dest = "reset", type=int , default = 0, help="Reset the schema before execution: 0=nothing, 1=reset error nodes to ready state")
     parser.add_argument("-z","--donotsqueeze", dest = "donotsqueeze", help = "Desactivate squeeze memory optimization.", action='store_true')
     parser.add_argument("-ip","--init-port", dest = 'init_port', type=str, help="Initialisation value of a port, specified as bloc.node.port=value.")
@@ -223,7 +221,7 @@ if __name__ == "__main__":
       positionVerbosityOfLoggerRegardingState()
     #
     proc = loadGraph( args.xmlfilename )
-    patchGraph( proc, not args.donotsqueeze, args.init_port.split(","), args.loadState, args.reset, args.display)
+    patchGraph( proc, not args.donotsqueeze, args.init_port.split(","), args.saveXMLSchema, args.loadState, args.reset, args.display)
     executor = prepareExecution( proc, args.stop, args.dumpErrorFile)
     executeGraph( executor, args.xmlfilename, proc, args.dump, args.finalDump, args.display)
     destroyElementsGeneratedByExecutionOfGraph( proc, args.shutdown )