From 76026ba80664d268a1b145204de711df20365a19 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Mon, 29 May 2017 14:00:04 +0200 Subject: [PATCH 01/60] remove useless files not used in this build --- install_eclipse.sh | 37 ------------------------------------- runeclipse.sh | 15 --------------- 2 files changed, 52 deletions(-) delete mode 100755 install_eclipse.sh delete mode 100755 runeclipse.sh diff --git a/install_eclipse.sh b/install_eclipse.sh deleted file mode 100755 index 9ee9ca0..0000000 --- a/install_eclipse.sh +++ /dev/null @@ -1,37 +0,0 @@ -#! /bin/bash - -set -x - -if [ ! -f eclipse/eclipse ] ; then - if [ ! -f eclipse-platform-4.6.3-linux-gtk-x86_64.tar.gz ] ; then - wget --progress=dot:mega http://mirror.ibcp.fr/pub/eclipse//eclipse/downloads/drops4/R-4.6.3-201703010400/eclipse-platform-4.6.3-linux-gtk-x86_64.tar.gz -# wget http://mirror.ibcp.fr/pub/eclipse//eclipse/downloads/drops4/R-4.6.2-201611241400/eclipse-platform-4.6.2-linux-gtk-x86_64.tar.gz -# wget http://mirror.ibcp.fr/pub/eclipse//eclipse/downloads/drops4/R-4.5.2-201602121500/eclipse-platform-4.5.2-linux-gtk-x86_64.tar.gz -# wget http://mirror.ibcp.fr/pub/eclipse//eclipse/downloads/drops4/R-4.5.1-201509040015/eclipse-platform-4.5.1-linux-gtk-x86_64.tar.gz -# wget http://mirror.ibcp.fr/pub/eclipse//eclipse/downloads/drops4/R-4.4.2-201502041700/eclipse-platform-4.4.2-linux-gtk-x86_64.tar.gz - fi - - tar xzf eclipse-platform-*-linux-gtk-x86_64.tar.gz - rm eclipse-platform-*-linux-gtk-x86_64.tar.gz -fi - -cd eclipse - -# cleanup install -./eclipse \ --clean -purgeHistory \ --application org.eclipse.equinox.p2.director \ --noSplash \ --uninstallIUs fr.lip6.move.gal.feature.pnmcc.feature.group - - -# install -./eclipse \ --clean -purgeHistory \ --application org.eclipse.equinox.p2.director \ --noSplash \ --repository http://yanntm.github.io/Xtext-Light/,https://lip6.github.io/ITSTools \ --installIUs fr.lip6.move.gal.feature.pnmcc.feature.group - -#-repository http://download.eclipse.org/releases/neon,https://lip6.github.io/ITSTools \ - diff --git a/runeclipse.sh b/runeclipse.sh deleted file mode 100755 index a41c32e..0000000 --- a/runeclipse.sh +++ /dev/null @@ -1,15 +0,0 @@ -#! /bin/bash - -set -x - -ulimit -s 65536 - - -java -Dosgi.requiredJavaVersion=1.6 -Xss8m -Xms40m -Xmx8192m -Declipse.pde.launch=true -Dfile.encoding=UTF-8 -classpath $BINDIR/eclipse/plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar org.eclipse.equinox.launcher.Main -application fr.lip6.move.gal.application.pnmcc -data $BINDIR/workspace -os linux -ws gtk -arch x86_64 -nl en_US -consoleLog -pnfolder $1 -examination $2 -yices2path $BINDIR/yices/bin/yices ${@:3} -# -XX:MaxPermSize=512m -# -z3path $BINDIR/z3/bin/z3 -# -its -#-configuration file:/home/mcc/workspace/.metadata/.plugins/org.eclipse.pde.core/fr.lip6.move.gal.application/ -#-dev file:/data/ythierry/workspaces/luna2/.metadata/.plugins/org.eclipse.pde.core/fr.lip6.move.gal.application/dev.properties -# luna : org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar -# mars : org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar From 279f2a5d01d2dd7357fcb79b89a06e12e7fcb728 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Mon, 29 May 2017 14:00:46 +0200 Subject: [PATCH 02/60] remove deploy, install_eclipse --- .travis.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2dfdc09..be55fdf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,12 +18,6 @@ script : - zip -d fr.lip6.move.gal.itscl.product-macosx.cocoa.x86_64.zip '*its-*-win64' '*its-*-linux32' '*its-*-linux64' - zip -d fr.lip6.move.gal.itscl.product-win32.win32.x86_64.zip '*its-*-linux64' '*its-*-linux32' '*its-*-Darwin' - cd .. - - ./install_eclipse.sh - - cd eclipse/plugins/fr.lip6.move.gal.itstools.binaries_1.0.0.*/bin/ - - \rm *Darwin* *linux32* *win64* - - cd - - - tar czf itscl_linux.tgz eclipse/ runeclipse.sh - - mv itscl_linux.tgz website/ - ls -lah website/ deploy: @@ -34,6 +28,4 @@ deploy: on: branch: master -after_deploy: - - curl -s -X POST -H "Content-Type:application/json" -H "Accept:application/json" -H "Travis-API-Version:3" -H "Authorization:token $APITOKEN" -d '{"request":{"message":"Triggered by ITS Tools build.","branch":"master"}}' https://api.travis-ci.org/repo/yanntm%2FITS-Tools-pnmcc/requests - + From e7ed1df564eda61ad2a05944c27731e17bc552b9 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Mon, 29 May 2017 14:01:04 +0200 Subject: [PATCH 03/60] remove unneeded invocation --- .../src/fr/lip6/move/gal/itscl/application/Application.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 8638e43..4aa80c7 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -36,9 +36,6 @@ public Object start(IApplicationContext context) throws Exception { String [] args = (String[]) context.getArguments().get(APPARGS); - if (Arrays.asList(args).contains("-pnfolder")) { - return new fr.lip6.move.gal.application.Application().start(context); - } String inputff = null; String inputType = null; From 563cc06dc461312fb269f73bb5f932dfe2e45953 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Mon, 29 May 2017 14:23:05 +0200 Subject: [PATCH 04/60] no longer needed --- fr.lip6.move.gal.itscl.application/META-INF/MANIFEST.MF | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.application/META-INF/MANIFEST.MF index 6c4ce7e..d9e5352 100644 --- a/fr.lip6.move.gal.itscl.application/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.application/META-INF/MANIFEST.MF @@ -6,7 +6,6 @@ Bundle-Version: 1.0.0.qualifier Require-Bundle: org.eclipse.core.runtime, fr.lip6.move.gal, fr.lip6.move.gal.itstools.binaries, - org.antlr.runtime;bundle-version="[3.2.0,3.3.0]", - fr.lip6.move.gal.application.pnmcc;bundle-version="1.0.0" + org.antlr.runtime;bundle-version="[3.2.0,3.3.0]" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: UPMC/CNRS, LIP6 From 112a7afc1e48035593b7efcbbadc71c7246e6e6c Mon Sep 17 00:00:00 2001 From: akheireddine Date: Mon, 29 May 2017 14:24:21 +0200 Subject: [PATCH 05/60] ignore generated work folder --- fr.lip6.move.gal.itscl.application/test/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 fr.lip6.move.gal.itscl.application/test/.gitignore diff --git a/fr.lip6.move.gal.itscl.application/test/.gitignore b/fr.lip6.move.gal.itscl.application/test/.gitignore new file mode 100644 index 0000000..76b5fe4 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/test/.gitignore @@ -0,0 +1 @@ +/work/ From 4c7320e1800cf6749158c88b1f6b07d214d9705b Mon Sep 17 00:00:00 2001 From: akheireddine Date: Mon, 29 May 2017 14:25:21 +0200 Subject: [PATCH 06/60] test model --- .../test/model.gal | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 fr.lip6.move.gal.itscl.application/test/model.gal diff --git a/fr.lip6.move.gal.itscl.application/test/model.gal b/fr.lip6.move.gal.itscl.application/test/model.gal new file mode 100644 index 0000000..910f2ad --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/test/model.gal @@ -0,0 +1,96 @@ + +gal bridge($fastest=5, $fast=10, $slow=20, $slowest=25){ + typedef Torchid_t= 0..0 ; + typedef Soldierid_t= 0..3 ; + int glob_range_L = 0; + int glob_clock_time = 0; + /**Torch states [ 0=one, 1=S0, 2=free, 3=tw] */ + array [1]Torch_state = (2 ); + /**Soldier states [ 0=S0, 1=safe, 2=S1, 3=unsaf] */ + array [4]Soldier_state = (3, 3, 3, 3 ); + array [4]Soldier_delay = ($fastest, $fast, $slow, $slowest ); + array [4]Soldier_clock_y = (0, 0, 0, 0 ); + /** To represent channel take */ + transition chantake [ true ] { + self."Sendtake"; + self."Recvtake"; + } + /** To represent channel release */ + transition chanrelease [ true ] { + self."Sendrelease"; + self."Recvrelease"; + } + transition elapse [ true ] { + for ($Torchid : Torchid_t) { + self."passUrgentTorch"( $Torchid ); + } + for ($Soldierid : Soldierid_t) { + self."updateClockSoldiery"( $Soldierid ); + } + } + /** State one is not urgent. */ + transition passUrgentTorch_one(Torchid_t $Torchid) [ Torch_state[ $Torchid ] == 0 ] label "passUrgentTorch" ($Torchid){ + } + /** State free is not urgent. */ + transition passUrgentTorch_free(Torchid_t $Torchid) [ Torch_state[ $Torchid ] == 2 ] label "passUrgentTorch" ($Torchid){ + } + /** State two is not urgent. */ + transition passUrgentTorch_two(Torchid_t $Torchid) [ Torch_state[ $Torchid ] == 3 ] label "passUrgentTorch" ($Torchid){ + } + transition t1Torchfree_S0(Torchid_t $Torchid) [ Torch_state[ $Torchid ] == 2 ] label "Recvtake" { + Torch_state[ $Torchid ] = 1 ; + } + transition t2TorchS0_one(Torchid_t $Torchid) [ Torch_state[ $Torchid ] == 1 ] { + Torch_state[ $Torchid ] = 0 ; + } + transition t3TorchS0_two(Torchid_t $Torchid) [ Torch_state[ $Torchid ] == 1 ] label "Recvtake" { + Torch_state[ $Torchid ] = 3 ; + } + transition t4Torchone_free(Torchid_t $Torchid) [ Torch_state[ $Torchid ] == 0 ] label "Recvrelease" { + Torch_state[ $Torchid ] = 2 ; + glob_range_L = ( 1 - glob_range_L ) ; + } + transition t5Torchtwo_one(Torchid_t $Torchid) [ Torch_state[ $Torchid ] == 3 ] label "Recvrelease" { + Torch_state[ $Torchid ] = 0 ; + } + /** State S0 has a max tracking value. */ + transition updateClockSoldiery_S0(Soldierid_t $Soldierid) [ Soldier_state[ $Soldierid ] == 0 ] label "updateClockSoldiery" ($Soldierid){ + if (!Soldier_clock_y[ $Soldierid ] >= Soldier_delay[ $Soldierid ]) { + Soldier_clock_y[ $Soldierid ] += 1 ; + } + } + /** State Soldier safe is inactive. */ + transition updateClockSoldiery_safe(Soldierid_t $Soldierid) [ Soldier_state[ $Soldierid ] == 1 ] label "updateClockSoldiery" ($Soldierid){ + } + /** State S1 has a max tracking value. */ + transition updateClockSoldiery_S1(Soldierid_t $Soldierid) [ Soldier_state[ $Soldierid ] == 2 ] label "updateClockSoldiery" ($Soldierid){ + if (!Soldier_clock_y[ $Soldierid ] >= Soldier_delay[ $Soldierid ]) { + Soldier_clock_y[ $Soldierid ] += 1 ; + } + } + /** State Soldier unsafe is inactive. */ + transition updateClockSoldiery_unsafe(Soldierid_t $Soldierid) [ Soldier_state[ $Soldierid ] == 3 ] label "updateClockSoldiery" ($Soldierid){ + } + transition t1SoldierS0_safe(Soldierid_t $Soldierid) [ Soldier_state[ $Soldierid ] == 0 && Soldier_clock_y[ $Soldierid ] >= Soldier_delay[ $Soldierid ] ] label "Sendrelease" { + Soldier_state[ $Soldierid ] = 1 ; + Soldier_clock_y[ $Soldierid ] = 0 ; + } + transition t2Soldiersafe_S1(Soldierid_t $Soldierid) [ Soldier_state[ $Soldierid ] == 1 && glob_range_L == 1 ] label "Sendtake" { + Soldier_state[ $Soldierid ] = 2 ; + Soldier_clock_y[ $Soldierid ] = 0 ; + } + transition t3SoldierS1_unsafe(Soldierid_t $Soldierid) [ Soldier_state[ $Soldierid ] == 2 && Soldier_clock_y[ $Soldierid ] >= Soldier_delay[ $Soldierid ] ] label "Sendrelease" { + Soldier_state[ $Soldierid ] = 3 ; + Soldier_clock_y[ $Soldierid ] = 0 ; + } + transition t4Soldierunsafe_S0(Soldierid_t $Soldierid) [ Soldier_state[ $Soldierid ] == 3 && glob_range_L == 0 ] label "Sendtake" { + Soldier_state[ $Soldierid ] = 0 ; + Soldier_clock_y[ $Soldierid ] = 0 ; + } +} + + +property safe [reachable] : + Soldier_state[0]==1 && Soldier_state[1]==1 && Soldier_state[2]==1 && Soldier_state[3]==1 +; + From 0296bb77aad16b3b473966f840d8210edbf58e5f Mon Sep 17 00:00:00 2001 From: akheireddine Date: Wed, 31 May 2017 14:00:30 +0200 Subject: [PATCH 07/60] starting subj --- .../gal/itscl/application/Application.java | 57 ++++++++++++------- .../move/gal/itscl/application/ItsSolver.java | 7 +++ .../move/gal/itscl/application/Problem.java | 17 ++++++ .../gal/itscl/application/ResultProblem.java | 17 ++++++ .../move/gal/itscl/application/SolverSeq.java | 27 +++++++++ 5 files changed, 104 insertions(+), 21 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultProblem.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 4aa80c7..5baa433 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -21,7 +21,7 @@ import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; import fr.lip6.move.serialization.SerializationUtil; -public class Application implements IApplication { +public class Application implements IApplication, ItsSolver { private static final String APPARGS = "application.args"; private static final String INPUT_FILE = "-i"; private static final String INPUT_TYPE = "-t"; @@ -34,14 +34,26 @@ public class Application implements IApplication { */ public Object start(IApplicationContext context) throws Exception { + String [] args = (String[]) context.getArguments().get(APPARGS); + Problem p = loadModel(args); + SolverSeq s = (SolverSeq) new ItsSolver(); + ResultProblem res = s.solve(p); + System.out.println(res); + return IApplication.EXIT_OK; + } + + + public Problem loadModel(String[]args) throws IOException{ - String inputff = null; + String inputff = null; String inputType = null; - + Tool tool = Tool.reach; boolean doIts = false; + System.out.println("Hello world."); + for (int i=0; i < args.length ; i++) { if (INPUT_FILE.equals(args[i])) { inputff = args[++i]; @@ -56,15 +68,15 @@ public Object start(IApplicationContext context) throws Exception { } else if (LTL_EXAM.equals(args[i])) { tool = Tool.ltl; doIts = true; -// } else if (LTSMINPATH.equals(args[i])) { -// ltsminpath = args[++i]; -// doLTSmin = true; -// } else if (ITS.equals(args[i])) { -// doITS = true; -// } else if (disablePOR.equals(args[i])) { -// doPOR = false; -// } else if (ONLYGAL.equals(args[i])) { -// onlyGal = true; + // } else if (LTSMINPATH.equals(args[i])) { + // ltsminpath = args[++i]; + // doLTSmin = true; + // } else if (ITS.equals(args[i])) { + // doITS = true; + // } else if (disablePOR.equals(args[i])) { + // doPOR = false; + // } else if (ONLYGAL.equals(args[i])) { + // onlyGal = true; } } @@ -80,8 +92,9 @@ public Object start(IApplicationContext context) throws Exception { } String pwd = ff.getParent(); String modelName = ff.getName().replace(".gal", ""); + SerializationUtil.setStandalone(true); - + long time = System.currentTimeMillis(); Specification spec = SerializationUtil.fileToGalSystem(inputff); System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); @@ -93,7 +106,7 @@ public Object start(IApplicationContext context) throws Exception { System.err.println("Could not set up work folder in "+cwd); } } - + time = System.currentTimeMillis(); GALRewriter.flatten(spec, true); System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); @@ -101,9 +114,9 @@ public Object start(IApplicationContext context) throws Exception { time = System.currentTimeMillis(); String outpath = cwd+"/"+ modelName + ".gal"; outputGalFile(spec, outpath); - + CommandLine cl = buildCommandLine(outpath, tool); - + if (tool == Tool.reach) { spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof SafetyProp) ); String proppath = cwd + "/" +modelName +".prop"; @@ -129,13 +142,15 @@ public Object start(IApplicationContext context) throws Exception { if (cl != null) { cl.setWorkingDir(new File(cwd)); } - System.out.println("Built GAL and proeprty files in "+ (time - System.currentTimeMillis()) + " ms."); - - Runner.runTool(3500, cl, System.out, true); - - return IApplication.EXIT_OK; + System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); + + return new Problem(cl); } + + + + public void outputGalFile(Specification spec, String outpath) throws IOException { if (! spec.getProperties().isEmpty()) { List props = new ArrayList(spec.getProperties()); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java new file mode 100644 index 0000000..860adb0 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -0,0 +1,7 @@ +package fr.lip6.move.gal.itscl.application; + +public class ItsSolver e { + + public ResultProblem solve(Problem p); + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java new file mode 100644 index 0000000..2747c5d --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java @@ -0,0 +1,17 @@ +package fr.lip6.move.gal.itscl.application; + +import fr.lip6.move.gal.itstools.CommandLine; + +public class Problem { + + private final CommandLine cmd; + + Problem(CommandLine cmd){ + this.cmd=cmd; + } + + public CommandLine getCmd() { + return cmd; + } + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultProblem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultProblem.java new file mode 100644 index 0000000..fb7c8fb --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultProblem.java @@ -0,0 +1,17 @@ +package fr.lip6.move.gal.itscl.application; + +public class ResultProblem { + + final static short OK = 0; + final static short KO = 1; + final static short UNKNOWN = 2; + private final short res; + + ResultProblem(short res){ + this.res=res; + } + + public String toString(){ + return "DONE "+String.valueOf(res); + } +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java new file mode 100644 index 0000000..aed2d6a --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -0,0 +1,27 @@ +package fr.lip6.move.gal.itscl.application; + +import java.io.IOException; + +import org.eclipse.core.runtime.IStatus; + +import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; +import fr.lip6.move.gal.itstools.Runner; + +public class SolverSeq implements ItsSolver{ + + + synchronized public ResultProblem solve (Problem p){ + IStatus st=Status.; + try { + st = Runner.runTool(3500, p.getCmd(), System.out, true); + + } catch (IOException | TimeOutException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return new ResultProblem(st); + + } + +} From 1bedd534c40c5089e4c9946b8466e0bb12e48bff Mon Sep 17 00:00:00 2001 From: akheireddine Date: Wed, 31 May 2017 14:00:45 +0200 Subject: [PATCH 08/60] real version --- .../gal/itscl/application/Application1.java | 169 ++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java new file mode 100644 index 0000000..74987ae --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java @@ -0,0 +1,169 @@ +package fr.lip6.move.gal.itscl.application; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.eclipse.equinox.app.IApplication; +import org.eclipse.equinox.app.IApplicationContext; + +import fr.lip6.move.gal.CTLProp; +import fr.lip6.move.gal.LTLProp; +import fr.lip6.move.gal.Property; +import fr.lip6.move.gal.SafetyProp; +import fr.lip6.move.gal.Specification; +import fr.lip6.move.gal.instantiate.GALRewriter; +import fr.lip6.move.gal.itstools.CommandLine; +import fr.lip6.move.gal.itstools.CommandLineBuilder; +import fr.lip6.move.gal.itstools.Runner; +import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; +import fr.lip6.move.serialization.SerializationUtil; + +public class Application1 implements IApplication { + private static final String APPARGS = "application.args"; + private static final String INPUT_FILE = "-i"; + private static final String INPUT_TYPE = "-t"; + private static final String REACH_EXAM = "-reach"; + private static final String CTL_EXAM = "-ctl"; + private static final String LTL_EXAM = "-ltl"; + + /* (non-Javadoc) + * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) + */ + public Object start(IApplicationContext context) throws Exception { + + String [] args = (String[]) context.getArguments().get(APPARGS); + + System.out.println(" here we are "); + for(int i =0;i ! (p.getBody() instanceof SafetyProp) ); + String proppath = cwd + "/" +modelName +".prop"; + SerializationUtil.serializePropertiesForITSTools(outpath, spec.getProperties(), proppath); + cl.addArg("-reachable-file"); + cl.addArg(proppath); + // cl.addArg("--stats"); + } else if (tool == Tool.ctl) { + spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof CTLProp) ); + String proppath = cwd + "/" +modelName +".ctl"; + SerializationUtil.serializePropertiesForITSCTLTools(outpath, spec.getProperties(), proppath); + cl.addArg("-ctl"); + cl.addArg(proppath); + } else if (tool == Tool.ltl) { + spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof LTLProp) ); + String proppath = cwd + "/" +modelName +".ltl"; + SerializationUtil.serializePropertiesForITSLTLTools(outpath, spec.getProperties(), proppath); + cl.addArg("-LTL"); + cl.addArg(proppath); + cl.addArg("-c"); + cl.addArg("-stutter-deadlock"); + } + if (cl != null) { + cl.setWorkingDir(new File(cwd)); + } + System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); + + Runner.runTool(3500, cl, System.out, true); + + return IApplication.EXIT_OK; + } + + public void outputGalFile(Specification spec, String outpath) throws IOException { + if (! spec.getProperties().isEmpty()) { + List props = new ArrayList(spec.getProperties()); + spec.getProperties().clear(); + SerializationUtil.systemToFile(spec, outpath); + spec.getProperties().addAll(props); + } else { + SerializationUtil.systemToFile(spec, outpath); + } + } + + private CommandLine buildCommandLine(String modelff, Tool tool) throws IOException { + CommandLineBuilder cl = new CommandLineBuilder(tool); + cl.setModelFile(modelff); + cl.setModelType("CGAL"); + return cl.getCommandLine(); + } + + /* (non-Javadoc) + * @see org.eclipse.equinox.app.IApplication#stop() + */ + public void stop() { + } +} From fb16d8e3a8c0a245a12d86a44d49fb9b9b3897e7 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Thu, 1 Jun 2017 12:53:54 +0200 Subject: [PATCH 09/60] tst --- .../gal/itscl/application/Application.java | 29 ++++++++++++++----- .../gal/itscl/application/Application1.java | 5 +++- .../move/gal/itscl/application/ItsSolver.java | 8 +++-- .../move/gal/itscl/application/Problem.java | 22 +++++++++----- .../gal/itscl/application/ResolveProblem.java | 17 +++++++++++ .../gal/itscl/application/ResultProblem.java | 17 ----------- .../move/gal/itscl/application/SolverSeq.java | 14 ++++----- 7 files changed, 69 insertions(+), 43 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResolveProblem.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultProblem.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 5baa433..fdecbfa 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -21,7 +21,7 @@ import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; import fr.lip6.move.serialization.SerializationUtil; -public class Application implements IApplication, ItsSolver { +public class Application implements IApplication { private static final String APPARGS = "application.args"; private static final String INPUT_FILE = "-i"; private static final String INPUT_TYPE = "-t"; @@ -29,6 +29,7 @@ public class Application implements IApplication, ItsSolver { private static final String CTL_EXAM = "-ctl"; private static final String LTL_EXAM = "-ltl"; + private Tool tool = Tool.reach; /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ @@ -37,19 +38,20 @@ public Object start(IApplicationContext context) throws Exception { String [] args = (String[]) context.getArguments().get(APPARGS); Problem p = loadModel(args); - SolverSeq s = (SolverSeq) new ItsSolver(); - ResultProblem res = s.solve(p); + System.out.println("hallo"); + SolverSeq s = new SolverSeq(); + ResolveProblem res = s.solve(p); System.out.println(res); return IApplication.EXIT_OK; } + public Problem loadModel(String[]args) throws IOException{ String inputff = null; String inputType = null; - Tool tool = Tool.reach; boolean doIts = false; System.out.println("Hello world."); @@ -96,9 +98,17 @@ public Problem loadModel(String[]args) throws IOException{ SerializationUtil.setStandalone(true); long time = System.currentTimeMillis(); - Specification spec = SerializationUtil.fileToGalSystem(inputff); + //parse l'entrée + Specification spec = SerializationUtil.fileToGalSystem(inputff); + System.out.println("im here____________________k"); + for (Property p :spec.getProperties()) { + System.out.println(p.getName() + p.getBody().eClass().getName()); + } + System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); + + // Traitement du problème : transformations + simplifications String cwd = pwd + "/work"; File fcwd = new File(cwd); if (! fcwd.exists()) { @@ -106,6 +116,8 @@ public Problem loadModel(String[]args) throws IOException{ System.err.println("Could not set up work folder in "+cwd); } } + + time = System.currentTimeMillis(); GALRewriter.flatten(spec, true); @@ -113,8 +125,10 @@ public Problem loadModel(String[]args) throws IOException{ time = System.currentTimeMillis(); String outpath = cwd+"/"+ modelName + ".gal"; - outputGalFile(spec, outpath); - + + // On produit un fichier de modèle pour l'outil ligne de commande + outputGalFile(spec, outpath); + CommandLine cl = buildCommandLine(outpath, tool); if (tool == Tool.reach) { @@ -144,7 +158,6 @@ public Problem loadModel(String[]args) throws IOException{ } System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - return new Problem(cl); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java index 74987ae..6e21f49 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java @@ -75,6 +75,9 @@ public Object start(IApplicationContext context) throws Exception { } } + System.out.println("hi____________________"); + + if (inputff == null) { System.err.println("Please provide input file with -i option"); return null; @@ -100,7 +103,7 @@ public Object start(IApplicationContext context) throws Exception { System.err.println("Could not set up work folder in "+cwd); } } - + time = System.currentTimeMillis(); GALRewriter.flatten(spec, true); System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index 860adb0..b329575 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -1,7 +1,11 @@ package fr.lip6.move.gal.itscl.application; -public class ItsSolver e { +public class ItsSolver implements ISolver { - public ResultProblem solve(Problem p); + synchronized public ResolveProblem solve(Problem p){ + + return new ResolveProblem(ResolveProblem.UNKNOWN); + } + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java index 2747c5d..ba1225e 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java @@ -1,17 +1,23 @@ package fr.lip6.move.gal.itscl.application; -import fr.lip6.move.gal.itstools.CommandLine; +import fr.lip6.move.gal.Specification; +import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; -public class Problem { - - private final CommandLine cmd; +public class Problem{ + + private Specification spec; + private Tool tool; - Problem(CommandLine cmd){ - this.cmd=cmd; + public Problem(Specification spec, Tool tool) { + this.spec = spec; + this.tool = tool; } - public CommandLine getCmd() { - return cmd; + public Specification getSpec() { + return spec; } + public Tool getTool() { + return tool; + } } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResolveProblem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResolveProblem.java new file mode 100644 index 0000000..6ade741 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResolveProblem.java @@ -0,0 +1,17 @@ +package fr.lip6.move.gal.itscl.application; + +public class ResolveProblem { + + public final static int OK = 0; + public final static int KO = 1; + public final static int UNKNOWN = 2; + private final int res; + + public ResolveProblem(int res){ + this.res=res; + } + + public String toString(){ + return "DONE "+String.valueOf(res); + } +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultProblem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultProblem.java deleted file mode 100644 index fb7c8fb..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultProblem.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -public class ResultProblem { - - final static short OK = 0; - final static short KO = 1; - final static short UNKNOWN = 2; - private final short res; - - ResultProblem(short res){ - this.res=res; - } - - public String toString(){ - return "DONE "+String.valueOf(res); - } -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index aed2d6a..a4c6297 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -7,20 +7,20 @@ import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq implements ItsSolver{ +public class SolverSeq extends ItsSolver{ - synchronized public ResultProblem solve (Problem p){ - IStatus st=Status.; + synchronized public ResolveProblem solve(Problem p){ try { - st = Runner.runTool(3500, p.getCmd(), System.out, true); + IStatus st = Runner.runTool(3500, p.getCmd(), System.out, true); + if(st.isOK()) + return new ResolveProblem(ResolveProblem.OK); } catch (IOException | TimeOutException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + return new ResolveProblem(ResolveProblem.KO); } - return new ResultProblem(st); + return new ResolveProblem(ResolveProblem.UNKNOWN); } From 5539f967d936c517aa129a7ff7e12f711b29c7b0 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Thu, 1 Jun 2017 13:02:53 +0200 Subject: [PATCH 10/60] nthn --- fr.lip6.move.gal.itscl.application/.classpath | 3 +- .../gal/itscl/application/Application.java | 235 +++++++++--------- 2 files changed, 119 insertions(+), 119 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/.classpath b/fr.lip6.move.gal.itscl.application/.classpath index cf36b56..6133948 100644 --- a/fr.lip6.move.gal.itscl.application/.classpath +++ b/fr.lip6.move.gal.itscl.application/.classpath @@ -2,6 +2,7 @@ - + + diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index fdecbfa..683ee93 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -35,130 +35,129 @@ public class Application implements IApplication { */ public Object start(IApplicationContext context) throws Exception { - + System.out.println("hiiiii__"); String [] args = (String[]) context.getArguments().get(APPARGS); - Problem p = loadModel(args); - System.out.println("hallo"); - SolverSeq s = new SolverSeq(); - ResolveProblem res = s.solve(p); - System.out.println(res); +// Problem p = loadModel(args); +// SolverSeq s = new SolverSeq(); +// ResolveProblem res = s.solve(p); +// System.out.println(res); return IApplication.EXIT_OK; } - public Problem loadModel(String[]args) throws IOException{ - - String inputff = null; - String inputType = null; - - boolean doIts = false; - - System.out.println("Hello world."); - - for (int i=0; i < args.length ; i++) { - if (INPUT_FILE.equals(args[i])) { - inputff = args[++i]; - } else if (INPUT_TYPE.equals(args[i])) { - inputType = args[++i]; - } else if (REACH_EXAM.equals(args[i])) { - tool = Tool.reach; - doIts = true; - } else if (CTL_EXAM.equals(args[i])) { - tool = Tool.ctl; - doIts = true; - } else if (LTL_EXAM.equals(args[i])) { - tool = Tool.ltl; - doIts = true; - // } else if (LTSMINPATH.equals(args[i])) { - // ltsminpath = args[++i]; - // doLTSmin = true; - // } else if (ITS.equals(args[i])) { - // doITS = true; - // } else if (disablePOR.equals(args[i])) { - // doPOR = false; - // } else if (ONLYGAL.equals(args[i])) { - // onlyGal = true; - } - } - - if (inputff == null) { - System.err.println("Please provide input file with -i option"); - return null; - } - - File ff = new File(inputff); - if (! ff.exists()) { - System.err.println("Input file "+inputff +" does not exist"); - return null; - } - String pwd = ff.getParent(); - String modelName = ff.getName().replace(".gal", ""); - - SerializationUtil.setStandalone(true); - - long time = System.currentTimeMillis(); - //parse l'entrée - Specification spec = SerializationUtil.fileToGalSystem(inputff); - System.out.println("im here____________________k"); - for (Property p :spec.getProperties()) { - System.out.println(p.getName() + p.getBody().eClass().getName()); - } - - System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); - - - // Traitement du problème : transformations + simplifications - String cwd = pwd + "/work"; - File fcwd = new File(cwd); - if (! fcwd.exists()) { - if (! fcwd.mkdir()) { - System.err.println("Could not set up work folder in "+cwd); - } - } - - - - time = System.currentTimeMillis(); - GALRewriter.flatten(spec, true); - System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); - - time = System.currentTimeMillis(); - String outpath = cwd+"/"+ modelName + ".gal"; - - // On produit un fichier de modèle pour l'outil ligne de commande - outputGalFile(spec, outpath); - - CommandLine cl = buildCommandLine(outpath, tool); - - if (tool == Tool.reach) { - spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof SafetyProp) ); - String proppath = cwd + "/" +modelName +".prop"; - SerializationUtil.serializePropertiesForITSTools(outpath, spec.getProperties(), proppath); - cl.addArg("-reachable-file"); - cl.addArg(proppath); - // cl.addArg("--stats"); - } else if (tool == Tool.ctl) { - spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof CTLProp) ); - String proppath = cwd + "/" +modelName +".ctl"; - SerializationUtil.serializePropertiesForITSCTLTools(outpath, spec.getProperties(), proppath); - cl.addArg("-ctl"); - cl.addArg(proppath); - } else if (tool == Tool.ltl) { - spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof LTLProp) ); - String proppath = cwd + "/" +modelName +".ltl"; - SerializationUtil.serializePropertiesForITSLTLTools(outpath, spec.getProperties(), proppath); - cl.addArg("-LTL"); - cl.addArg(proppath); - cl.addArg("-c"); - cl.addArg("-stutter-deadlock"); - } - if (cl != null) { - cl.setWorkingDir(new File(cwd)); - } - System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - - } +// public Problem loadModel(String[]args) throws IOException{ +// +// String inputff = null; +// String inputType = null; +// +// boolean doIts = false; +// +// System.out.println("Hello world."); +// +// for (int i=0; i < args.length ; i++) { +// if (INPUT_FILE.equals(args[i])) { +// inputff = args[++i]; +// } else if (INPUT_TYPE.equals(args[i])) { +// inputType = args[++i]; +// } else if (REACH_EXAM.equals(args[i])) { +// tool = Tool.reach; +// doIts = true; +// } else if (CTL_EXAM.equals(args[i])) { +// tool = Tool.ctl; +// doIts = true; +// } else if (LTL_EXAM.equals(args[i])) { +// tool = Tool.ltl; +// doIts = true; +// // } else if (LTSMINPATH.equals(args[i])) { +// // ltsminpath = args[++i]; +// // doLTSmin = true; +// // } else if (ITS.equals(args[i])) { +// // doITS = true; +// // } else if (disablePOR.equals(args[i])) { +// // doPOR = false; +// // } else if (ONLYGAL.equals(args[i])) { +// // onlyGal = true; +// } +// } +// +// if (inputff == null) { +// System.err.println("Please provide input file with -i option"); +// return null; +// } +// +// File ff = new File(inputff); +// if (! ff.exists()) { +// System.err.println("Input file "+inputff +" does not exist"); +// return null; +// } +// String pwd = ff.getParent(); +// String modelName = ff.getName().replace(".gal", ""); +// +// SerializationUtil.setStandalone(true); +// +// long time = System.currentTimeMillis(); +// //parse l'entrée +// Specification spec = SerializationUtil.fileToGalSystem(inputff); +// System.out.println("im here____________________k"); +// for (Property p :spec.getProperties()) { +// System.out.println(p.getName() + p.getBody().eClass().getName()); +// } +// +// System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); +// +// +// // Traitement du problème : transformations + simplifications +// String cwd = pwd + "/work"; +// File fcwd = new File(cwd); +// if (! fcwd.exists()) { +// if (! fcwd.mkdir()) { +// System.err.println("Could not set up work folder in "+cwd); +// } +// } +// +// +// +// time = System.currentTimeMillis(); +// GALRewriter.flatten(spec, true); +// System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); +// +// time = System.currentTimeMillis(); +// String outpath = cwd+"/"+ modelName + ".gal"; +// +// // On produit un fichier de modèle pour l'outil ligne de commande +// outputGalFile(spec, outpath); +// +// CommandLine cl = buildCommandLine(outpath, tool); +// +// if (tool == Tool.reach) { +// spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof SafetyProp) ); +// String proppath = cwd + "/" +modelName +".prop"; +// SerializationUtil.serializePropertiesForITSTools(outpath, spec.getProperties(), proppath); +// cl.addArg("-reachable-file"); +// cl.addArg(proppath); +// // cl.addArg("--stats"); +// } else if (tool == Tool.ctl) { +// spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof CTLProp) ); +// String proppath = cwd + "/" +modelName +".ctl"; +// SerializationUtil.serializePropertiesForITSCTLTools(outpath, spec.getProperties(), proppath); +// cl.addArg("-ctl"); +// cl.addArg(proppath); +// } else if (tool == Tool.ltl) { +// spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof LTLProp) ); +// String proppath = cwd + "/" +modelName +".ltl"; +// SerializationUtil.serializePropertiesForITSLTLTools(outpath, spec.getProperties(), proppath); +// cl.addArg("-LTL"); +// cl.addArg(proppath); +// cl.addArg("-c"); +// cl.addArg("-stutter-deadlock"); +// } +// if (cl != null) { +// cl.setWorkingDir(new File(cwd)); +// } +// System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); +// +// } From 1b17d62c1c70d732228aab6ce0d5fc01feaedf66 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Thu, 1 Jun 2017 16:47:45 +0200 Subject: [PATCH 11/60] maj jeudi --- .../gal/itscl/application/Application.java | 249 +++++++++--------- .../gal/itscl/application/Application1.java | 4 - .../move/gal/itscl/application/ItsSolver.java | 16 +- .../move/gal/itscl/application/Problem.java | 10 +- .../move/gal/itscl/application/SolverSeq.java | 22 +- 5 files changed, 165 insertions(+), 136 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 683ee93..3bd446c 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -3,7 +3,6 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import org.eclipse.equinox.app.IApplication; @@ -17,7 +16,6 @@ import fr.lip6.move.gal.instantiate.GALRewriter; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.CommandLineBuilder; -import fr.lip6.move.gal.itstools.Runner; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; import fr.lip6.move.serialization.SerializationUtil; @@ -29,140 +27,147 @@ public class Application implements IApplication { private static final String CTL_EXAM = "-ctl"; private static final String LTL_EXAM = "-ltl"; - private Tool tool = Tool.reach; /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ + @SuppressWarnings("unused") public Object start(IApplicationContext context) throws Exception { - System.out.println("hiiiii__"); String [] args = (String[]) context.getArguments().get(APPARGS); -// Problem p = loadModel(args); -// SolverSeq s = new SolverSeq(); -// ResolveProblem res = s.solve(p); -// System.out.println(res); - return IApplication.EXIT_OK; - } + + String inputff = null; + String inputType = null; + + Tool tool = Tool.reach; + boolean doIts = false; + + for (int i=0; i < args.length ; i++) { + if (INPUT_FILE.equals(args[i])) { + inputff = args[++i]; + } else if (INPUT_TYPE.equals(args[i])) { + inputType = args[++i]; + } else if (REACH_EXAM.equals(args[i])) { + tool = Tool.reach; + doIts = true; + } else if (CTL_EXAM.equals(args[i])) { + tool = Tool.ctl; + doIts = true; + } else if (LTL_EXAM.equals(args[i])) { + tool = Tool.ltl; + doIts = true; +// } else if (LTSMINPATH.equals(args[i])) { +// ltsminpath = args[++i]; +// doLTSmin = true; +// } else if (ITS.equals(args[i])) { +// doITS = true; +// } else if (disablePOR.equals(args[i])) { +// doPOR = false; +// } else if (ONLYGAL.equals(args[i])) { +// onlyGal = true; + } + } + + + if (inputff == null) { + System.err.println("Please provide input file with -i option"); + return null; + } + + if(!doIts){ + System.err.println("Please provide tool (ex: reach, ctl, ltl...)"); + } + + File ff = new File(inputff); + if (! ff.exists()) { + System.err.println("Input file "+inputff +" does not exist"); + return null; + } + + String pwd = ff.getParent(); + String modelName = ff.getName().replace(".gal", ""); + SerializationUtil.setStandalone(true); + + //parse l'entrée + long time = System.currentTimeMillis(); + Specification spec = SerializationUtil.fileToGalSystem(inputff); + System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); + + + + time = System.currentTimeMillis(); + Problem p = loadModel(pwd, spec, tool); + System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); + + time = System.currentTimeMillis(); + CommandLine cl= getCmdLine(spec,p.getCwd(),modelName,tool); + System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); + + SolverSeq s = new SolverSeq(cl); + ResultP res = s.solve(p); + System.out.println("HIHIH___DONE"); + + System.out.println(res); + return IApplication.EXIT_OK; + } -// public Problem loadModel(String[]args) throws IOException{ -// -// String inputff = null; -// String inputType = null; -// -// boolean doIts = false; -// -// System.out.println("Hello world."); -// -// for (int i=0; i < args.length ; i++) { -// if (INPUT_FILE.equals(args[i])) { -// inputff = args[++i]; -// } else if (INPUT_TYPE.equals(args[i])) { -// inputType = args[++i]; -// } else if (REACH_EXAM.equals(args[i])) { -// tool = Tool.reach; -// doIts = true; -// } else if (CTL_EXAM.equals(args[i])) { -// tool = Tool.ctl; -// doIts = true; -// } else if (LTL_EXAM.equals(args[i])) { -// tool = Tool.ltl; -// doIts = true; -// // } else if (LTSMINPATH.equals(args[i])) { -// // ltsminpath = args[++i]; -// // doLTSmin = true; -// // } else if (ITS.equals(args[i])) { -// // doITS = true; -// // } else if (disablePOR.equals(args[i])) { -// // doPOR = false; -// // } else if (ONLYGAL.equals(args[i])) { -// // onlyGal = true; -// } -// } -// -// if (inputff == null) { -// System.err.println("Please provide input file with -i option"); -// return null; -// } -// -// File ff = new File(inputff); -// if (! ff.exists()) { -// System.err.println("Input file "+inputff +" does not exist"); -// return null; -// } -// String pwd = ff.getParent(); -// String modelName = ff.getName().replace(".gal", ""); -// -// SerializationUtil.setStandalone(true); -// -// long time = System.currentTimeMillis(); -// //parse l'entrée -// Specification spec = SerializationUtil.fileToGalSystem(inputff); -// System.out.println("im here____________________k"); -// for (Property p :spec.getProperties()) { -// System.out.println(p.getName() + p.getBody().eClass().getName()); -// } -// -// System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); -// -// -// // Traitement du problème : transformations + simplifications -// String cwd = pwd + "/work"; -// File fcwd = new File(cwd); -// if (! fcwd.exists()) { -// if (! fcwd.mkdir()) { -// System.err.println("Could not set up work folder in "+cwd); -// } -// } -// -// -// -// time = System.currentTimeMillis(); -// GALRewriter.flatten(spec, true); -// System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); -// -// time = System.currentTimeMillis(); -// String outpath = cwd+"/"+ modelName + ".gal"; -// -// // On produit un fichier de modèle pour l'outil ligne de commande -// outputGalFile(spec, outpath); -// -// CommandLine cl = buildCommandLine(outpath, tool); -// -// if (tool == Tool.reach) { -// spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof SafetyProp) ); -// String proppath = cwd + "/" +modelName +".prop"; -// SerializationUtil.serializePropertiesForITSTools(outpath, spec.getProperties(), proppath); -// cl.addArg("-reachable-file"); -// cl.addArg(proppath); -// // cl.addArg("--stats"); -// } else if (tool == Tool.ctl) { -// spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof CTLProp) ); -// String proppath = cwd + "/" +modelName +".ctl"; -// SerializationUtil.serializePropertiesForITSCTLTools(outpath, spec.getProperties(), proppath); -// cl.addArg("-ctl"); -// cl.addArg(proppath); -// } else if (tool == Tool.ltl) { -// spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof LTLProp) ); -// String proppath = cwd + "/" +modelName +".ltl"; -// SerializationUtil.serializePropertiesForITSLTLTools(outpath, spec.getProperties(), proppath); -// cl.addArg("-LTL"); -// cl.addArg(proppath); -// cl.addArg("-c"); -// cl.addArg("-stutter-deadlock"); -// } -// if (cl != null) { -// cl.setWorkingDir(new File(cwd)); -// } -// System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); -// -// } + // Traitement du problème : transformations + simplifications + public Problem loadModel(String pwd,Specification spec, Tool tool) throws IOException{ + + String cwd = pwd + "/work"; + File fcwd = new File(cwd); + if (! fcwd.exists()) { + if (! fcwd.mkdir()) { + System.err.println("Could not set up work folder in "+cwd); + } + } + + GALRewriter.flatten(spec, true); + return new Problem(spec,tool,cwd); + } + // On produit un fichier de modèle pour l'outil ligne de commande + public CommandLine getCmdLine(Specification spec, String cwd, String modelName,Tool tool) throws IOException{ + + String outpath = cwd+"/"+ modelName + ".gal"; + outputGalFile(spec, outpath); + + CommandLine cl = buildCommandLine(outpath, tool); + if (tool == Tool.reach) { + spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof SafetyProp) ); + String proppath = cwd + "/" +modelName +".prop"; + SerializationUtil.serializePropertiesForITSTools(outpath, spec.getProperties(), proppath); + cl.addArg("-reachable-file"); + cl.addArg(proppath); + // cl.addArg("--stats"); + } else if (tool == Tool.ctl) { + spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof CTLProp) ); + String proppath = cwd + "/" +modelName +".ctl"; + SerializationUtil.serializePropertiesForITSCTLTools(outpath, spec.getProperties(), proppath); + cl.addArg("-ctl"); + cl.addArg(proppath); + } else if (tool == Tool.ltl) { + spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof LTLProp) ); + String proppath = cwd + "/" +modelName +".ltl"; + SerializationUtil.serializePropertiesForITSLTLTools(outpath, spec.getProperties(), proppath); + cl.addArg("-LTL"); + cl.addArg(proppath); + cl.addArg("-c"); + cl.addArg("-stutter-deadlock"); + } + if (cl != null) { + cl.setWorkingDir(new File(cwd)); + } + + return cl; + + } + public void outputGalFile(Specification spec, String outpath) throws IOException { if (! spec.getProperties().isEmpty()) { List props = new ArrayList(spec.getProperties()); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java index 6e21f49..ae525a3 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java @@ -36,10 +36,6 @@ public Object start(IApplicationContext context) throws Exception { String [] args = (String[]) context.getArguments().get(APPARGS); - System.out.println(" here we are "); - for(int i =0;i Date: Thu, 1 Jun 2017 16:54:02 +0200 Subject: [PATCH 12/60] remove --- .../gal/itscl/application/ResolveProblem.java | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResolveProblem.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResolveProblem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResolveProblem.java deleted file mode 100644 index 6ade741..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResolveProblem.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -public class ResolveProblem { - - public final static int OK = 0; - public final static int KO = 1; - public final static int UNKNOWN = 2; - private final int res; - - public ResolveProblem(int res){ - this.res=res; - } - - public String toString(){ - return "DONE "+String.valueOf(res); - } -} From a8341b59c2e4d357df66084b5d8824dcbe2b724b Mon Sep 17 00:00:00 2001 From: akheireddine Date: Thu, 1 Jun 2017 16:54:51 +0200 Subject: [PATCH 13/60] first test --- fr.lip6.move.gal.itscl.application/.gitignore | 1 + fr.lip6.move.gal.itscl.application/.project | 6 ++++++ fr.lip6.move.gal.itscl.application/test/model.gal | 6 +++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/.gitignore b/fr.lip6.move.gal.itscl.application/.gitignore index 0f63015..565bfde 100644 --- a/fr.lip6.move.gal.itscl.application/.gitignore +++ b/fr.lip6.move.gal.itscl.application/.gitignore @@ -1,2 +1,3 @@ /target/ /bin/ +/src/ diff --git a/fr.lip6.move.gal.itscl.application/.project b/fr.lip6.move.gal.itscl.application/.project index 095b7a8..3a8943a 100644 --- a/fr.lip6.move.gal.itscl.application/.project +++ b/fr.lip6.move.gal.itscl.application/.project @@ -5,6 +5,11 @@ + + org.eclipse.xtext.ui.shared.xtextBuilder + + + org.eclipse.jdt.core.javabuilder @@ -30,5 +35,6 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature + org.eclipse.xtext.ui.shared.xtextNature diff --git a/fr.lip6.move.gal.itscl.application/test/model.gal b/fr.lip6.move.gal.itscl.application/test/model.gal index 910f2ad..ab3b313 100644 --- a/fr.lip6.move.gal.itscl.application/test/model.gal +++ b/fr.lip6.move.gal.itscl.application/test/model.gal @@ -90,7 +90,7 @@ gal bridge($fastest=5, $fast=10, $slow=20, $slowest=25){ } -property safe [reachable] : - Soldier_state[0]==1 && Soldier_state[1]==1 && Soldier_state[2]==1 && Soldier_state[3]==1 -; +//property safe [reachable] : +// Soldier_state[0]==1 && Soldier_state[1]==1 && Soldier_state[2]==1 && Soldier_state[3]==1 +//; From d9bd71fdd283d68c9cb3ea9d126b810d483b49bb Mon Sep 17 00:00:00 2001 From: akheireddine Date: Fri, 2 Jun 2017 10:44:56 +0200 Subject: [PATCH 14/60] maj thread --- .../gal/itscl/application/Application.java | 9 +++-- .../move/gal/itscl/application/ItsSolver.java | 31 ++++++++++++----- .../move/gal/itscl/application/SolverSeq.java | 34 +++++++++---------- .../test/model.gal | 6 ++-- 4 files changed, 50 insertions(+), 30 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 3bd446c..7abeed1 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -27,6 +27,8 @@ public class Application implements IApplication { private static final String CTL_EXAM = "-ctl"; private static final String LTL_EXAM = "-ltl"; + private Thread runnerSeq; + /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ @@ -103,8 +105,11 @@ public Object start(IApplicationContext context) throws Exception { CommandLine cl= getCmdLine(spec,p.getCwd(),modelName,tool); System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - SolverSeq s = new SolverSeq(cl); - ResultP res = s.solve(p); + SolverSeq s = new SolverSeq(p,cl); + runnerSeq= new Thread(s); + runnerSeq.start(); + runnerSeq.join(); + ResultP res = s.getResult(); System.out.println("HIHIH___DONE"); System.out.println(res); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index 3b38b28..e318081 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -4,20 +4,35 @@ public class ItsSolver implements ISolver { - private final CommandLine cmd; + private final CommandLine cl; + private final Problem p; + private ResultP result=new ResultP(ResultP.UNKNOWN); + + - public ItsSolver(CommandLine cmd){ - this.cmd=cmd; + public ItsSolver(Problem p,CommandLine cl){ + this.cl=cl; + this.p=p; } - synchronized public ResultP solve(Problem p){ - - return new ResultP(ResultP.UNKNOWN); - + public ResultP solve(Problem p){ + return result; } public CommandLine getCmd() { - return cmd; + return cl; + } + + public Problem getP() { + return p; + } + + public ResultP getResult() { + return result; } + public void setResult(ResultP res){ + result=res; + } + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index e22a9af..0fa3835 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -8,26 +8,26 @@ import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq extends ItsSolver{ +public class SolverSeq extends ItsSolver implements Runnable{ - - public SolverSeq(CommandLine cmd) { - super(cmd); + + + public SolverSeq(Problem p, CommandLine cl) { + super(p, cl); } - synchronized public ResultP solve(Problem p){ - try { - - IStatus st = Runner.runTool(3500, this.getCmd(), System.out, true); - if(st.isOK()) - return new ResultP(ResultP.OK); - - } catch (IOException | TimeOutException e) { - return new ResultP(ResultP.KO); - } - - return new ResultP(ResultP.UNKNOWN); - + public void run(){ + synchronized(getP()){ + try { + IStatus st = Runner.runTool(3500, getCmd(), System.out, true); + if(st.isOK()) + setResult(new ResultP(ResultP.OK)); + + } catch (IOException | TimeOutException e) { + setResult(new ResultP(ResultP.KO)); + } + + } } diff --git a/fr.lip6.move.gal.itscl.application/test/model.gal b/fr.lip6.move.gal.itscl.application/test/model.gal index ab3b313..910f2ad 100644 --- a/fr.lip6.move.gal.itscl.application/test/model.gal +++ b/fr.lip6.move.gal.itscl.application/test/model.gal @@ -90,7 +90,7 @@ gal bridge($fastest=5, $fast=10, $slow=20, $slowest=25){ } -//property safe [reachable] : -// Soldier_state[0]==1 && Soldier_state[1]==1 && Soldier_state[2]==1 && Soldier_state[3]==1 -//; +property safe [reachable] : + Soldier_state[0]==1 && Soldier_state[1]==1 && Soldier_state[2]==1 && Soldier_state[3]==1 +; From 6a224d48f138fa2fa38c2ea020118a8bf3afb4f6 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Fri, 2 Jun 2017 10:45:27 +0200 Subject: [PATCH 15/60] nthg --- fr.lip6.move.gal.itscl.application/test/model.gal | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/test/model.gal b/fr.lip6.move.gal.itscl.application/test/model.gal index 910f2ad..e448c46 100644 --- a/fr.lip6.move.gal.itscl.application/test/model.gal +++ b/fr.lip6.move.gal.itscl.application/test/model.gal @@ -91,6 +91,5 @@ gal bridge($fastest=5, $fast=10, $slow=20, $slowest=25){ property safe [reachable] : - Soldier_state[0]==1 && Soldier_state[1]==1 && Soldier_state[2]==1 && Soldier_state[3]==1 -; + Soldier_state[0]==1 && Soldier_state[1]==1 && Soldier_state[2]==1 && Soldier_state[3]==1; From be998ce8cfc98473b939df11b85cddc5fe6e02f9 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Fri, 2 Jun 2017 11:00:59 +0200 Subject: [PATCH 16/60] Revert "first test" This reverts commit a8341b59c2e4d357df66084b5d8824dcbe2b724b. --- fr.lip6.move.gal.itscl.application/.gitignore | 1 - fr.lip6.move.gal.itscl.application/.project | 6 ------ fr.lip6.move.gal.itscl.application/test/model.gal | 6 +++--- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/.gitignore b/fr.lip6.move.gal.itscl.application/.gitignore index 565bfde..0f63015 100644 --- a/fr.lip6.move.gal.itscl.application/.gitignore +++ b/fr.lip6.move.gal.itscl.application/.gitignore @@ -1,3 +1,2 @@ /target/ /bin/ -/src/ diff --git a/fr.lip6.move.gal.itscl.application/.project b/fr.lip6.move.gal.itscl.application/.project index 3a8943a..095b7a8 100644 --- a/fr.lip6.move.gal.itscl.application/.project +++ b/fr.lip6.move.gal.itscl.application/.project @@ -5,11 +5,6 @@ - - org.eclipse.xtext.ui.shared.xtextBuilder - - - org.eclipse.jdt.core.javabuilder @@ -35,6 +30,5 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature - org.eclipse.xtext.ui.shared.xtextNature diff --git a/fr.lip6.move.gal.itscl.application/test/model.gal b/fr.lip6.move.gal.itscl.application/test/model.gal index ab3b313..910f2ad 100644 --- a/fr.lip6.move.gal.itscl.application/test/model.gal +++ b/fr.lip6.move.gal.itscl.application/test/model.gal @@ -90,7 +90,7 @@ gal bridge($fastest=5, $fast=10, $slow=20, $slowest=25){ } -//property safe [reachable] : -// Soldier_state[0]==1 && Soldier_state[1]==1 && Soldier_state[2]==1 && Soldier_state[3]==1 -//; +property safe [reachable] : + Soldier_state[0]==1 && Soldier_state[1]==1 && Soldier_state[2]==1 && Soldier_state[3]==1 +; From 58c3b17abf5ccf6ffbd5aeff7c0444b0b93ea8b5 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Fri, 2 Jun 2017 11:01:34 +0200 Subject: [PATCH 17/60] add isolver and resultP --- .../move/gal/itscl/application/ISolver.java | 8 ++++++++ .../move/gal/itscl/application/ResultP.java | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java new file mode 100644 index 0000000..0f42ca5 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java @@ -0,0 +1,8 @@ +package fr.lip6.move.gal.itscl.application; + +public interface ISolver { + + public ResultP solve(Problem p); + + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java new file mode 100644 index 0000000..e25fff9 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java @@ -0,0 +1,17 @@ +package fr.lip6.move.gal.itscl.application; + +public class ResultP { + + public final static int OK = 0; + public final static int KO = 1; + public final static int UNKNOWN = 2; + private final int res; + + public ResultP(int res){ + this.res=res; + } + + public String toString(){ + return "DONE "+String.valueOf(res); + } +} From 4f164f7794b20b9a67f5462409c9a1b9b334db30 Mon Sep 17 00:00:00 2001 From: akheireddine Date: Fri, 2 Jun 2017 11:25:24 +0200 Subject: [PATCH 18/60] DON'T LOSE MODIF --- .../gal/itscl/application/Application.java | 11 ++++-- .../move/gal/itscl/application/ISolver.java | 4 +-- .../move/gal/itscl/application/ItsSolver.java | 29 ++++++++++++---- .../move/gal/itscl/application/SolverSeq.java | 34 +++++++++---------- 4 files changed, 49 insertions(+), 29 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 3bd446c..2620ade 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -27,6 +27,8 @@ public class Application implements IApplication { private static final String CTL_EXAM = "-ctl"; private static final String LTL_EXAM = "-ltl"; + private Thread runnerSeq; + /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ @@ -103,9 +105,12 @@ public Object start(IApplicationContext context) throws Exception { CommandLine cl= getCmdLine(spec,p.getCwd(),modelName,tool); System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - SolverSeq s = new SolverSeq(cl); - ResultP res = s.solve(p); - System.out.println("HIHIH___DONE"); + SolverSeq s = new SolverSeq(p,cl); + runnerSeq= new Thread(s); + runnerSeq.start(); + runnerSeq.join(); + ResultP res = s.getResult(); + System.out.println("YASS___DONE"); System.out.println(res); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java index 0f42ca5..70d7eff 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java @@ -2,7 +2,7 @@ public interface ISolver { - public ResultP solve(Problem p); - + public void solve(); + public ResultP getResult(); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index 3b38b28..0f68780 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -4,20 +4,35 @@ public class ItsSolver implements ISolver { - private final CommandLine cmd; + private final CommandLine cl; + private final Problem p; + private ResultP result=new ResultP(ResultP.UNKNOWN); + + - public ItsSolver(CommandLine cmd){ - this.cmd=cmd; + public ItsSolver(Problem p,CommandLine cl){ + this.cl=cl; + this.p=p; } - synchronized public ResultP solve(Problem p){ + public void solve(){ - return new ResultP(ResultP.UNKNOWN); - } public CommandLine getCmd() { - return cmd; + return cl; + } + + public Problem getP() { + return p; + } + + public ResultP getResult() { + return result; } + public void setResult(ResultP res){ + result=res; + } + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index e22a9af..0fa3835 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -8,26 +8,26 @@ import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq extends ItsSolver{ +public class SolverSeq extends ItsSolver implements Runnable{ - - public SolverSeq(CommandLine cmd) { - super(cmd); + + + public SolverSeq(Problem p, CommandLine cl) { + super(p, cl); } - synchronized public ResultP solve(Problem p){ - try { - - IStatus st = Runner.runTool(3500, this.getCmd(), System.out, true); - if(st.isOK()) - return new ResultP(ResultP.OK); - - } catch (IOException | TimeOutException e) { - return new ResultP(ResultP.KO); - } - - return new ResultP(ResultP.UNKNOWN); - + public void run(){ + synchronized(getP()){ + try { + IStatus st = Runner.runTool(3500, getCmd(), System.out, true); + if(st.isOK()) + setResult(new ResultP(ResultP.OK)); + + } catch (IOException | TimeOutException e) { + setResult(new ResultP(ResultP.KO)); + } + + } } From c67003f6b0d5cec2b52d1d7f70a7ff793b9c09e0 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 2 Jun 2017 17:54:28 +0200 Subject: [PATCH 19/60] version friday w. obs/ --- .../gal/itscl/application/Application.java | 13 ++++++---- .../move/gal/itscl/application/IProblem.java | 5 ++++ .../move/gal/itscl/application/IResultP.java | 5 ++++ .../move/gal/itscl/application/IRunner.java | 5 ++++ .../move/gal/itscl/application/ISolver.java | 2 +- .../itscl/application/ISolverObservable.java | 7 +++++ .../itscl/application/ISolverObserver.java | 7 +++++ .../gal/itscl/application/ISolverSeq.java | 5 ++++ .../move/gal/itscl/application/ItsSolver.java | 7 +---- .../move/gal/itscl/application/Problem.java | 12 ++++----- .../itscl/application/SolverObservable.java | 26 +++++++++++++++++++ .../move/gal/itscl/application/SolverSeq.java | 17 ++++++++++-- 12 files changed, 91 insertions(+), 20 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IResultP.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IRunner.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 7abeed1..33802b3 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -32,7 +32,6 @@ public class Application implements IApplication { /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ - @SuppressWarnings("unused") public Object start(IApplicationContext context) throws Exception { String [] args = (String[]) context.getArguments().get(APPARGS); @@ -102,17 +101,21 @@ public Object start(IApplicationContext context) throws Exception { System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); time = System.currentTimeMillis(); - CommandLine cl= getCmdLine(spec,p.getCwd(),modelName,tool); + CommandLine cl= getCmdLine(spec,p.getPwd(),modelName,tool); System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); SolverSeq s = new SolverSeq(p,cl); + s.attach(new ISolverObserver() { + + @Override + public void notifyResult(ResultP res) { + System.out.println(""); + } + }); runnerSeq= new Thread(s); runnerSeq.start(); runnerSeq.join(); - ResultP res = s.getResult(); - System.out.println("HIHIH___DONE"); - System.out.println(res); return IApplication.EXIT_OK; } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java new file mode 100644 index 0000000..096e9ef --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java @@ -0,0 +1,5 @@ +package fr.lip6.move.gal.itscl.application; + +public interface IProblem { + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IResultP.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IResultP.java new file mode 100644 index 0000000..21d476a --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IResultP.java @@ -0,0 +1,5 @@ +package fr.lip6.move.gal.itscl.application; + +public interface IResultP { + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IRunner.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IRunner.java new file mode 100644 index 0000000..8747e2f --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IRunner.java @@ -0,0 +1,5 @@ +package fr.lip6.move.gal.itscl.application; + +public interface IRunner { + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java index 70d7eff..83c0c86 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java @@ -2,7 +2,7 @@ public interface ISolver { - public void solve(); + public void solve(Problem p); public ResultP getResult(); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java new file mode 100644 index 0000000..f3af259 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java @@ -0,0 +1,7 @@ +package fr.lip6.move.gal.itscl.application; + +public interface ISolverObservable { + void attach(ISolverObserver obs) ; + void detach(ISolverObserver obs) ; + void notifyObservers(ResultP res); +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java new file mode 100644 index 0000000..908b741 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java @@ -0,0 +1,7 @@ +package fr.lip6.move.gal.itscl.application; + +public interface ISolverObserver { + + void notifyResult(ResultP res); + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java new file mode 100644 index 0000000..5231b32 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java @@ -0,0 +1,5 @@ +package fr.lip6.move.gal.itscl.application; + +public interface ISolverSeq extends ItsSolver { + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index f111491..e016672 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -2,7 +2,7 @@ import fr.lip6.move.gal.itstools.CommandLine; -public class ItsSolver implements ISolver { +public class ItsSolver extends SolverObservable implements ISolver { private final CommandLine cl; private final Problem p; @@ -15,13 +15,8 @@ public ItsSolver(Problem p,CommandLine cl){ this.p=p; } -<<<<<<< HEAD public ResultP solve(Problem p){ return result; -======= - public void solve(){ - ->>>>>>> refs/heads/test } public CommandLine getCmd() { diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java index 9b003ba..e5bb73a 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java @@ -3,17 +3,17 @@ import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; -public class Problem{ +public class Problem implements IProblem{ private Specification spec; private Tool tool; - private String cwd; + private String pwd; - public Problem(Specification spec, Tool tool,String cwd) { + public Problem(Specification spec, Tool tool,String pwd) { this.spec = spec; this.tool = tool; - this.cwd=cwd; + this.pwd=pwd; } public Specification getSpec() { @@ -24,8 +24,8 @@ public Tool getTool() { return tool; } - public String getCwd() { - return cwd; + public String getPwd() { + return pwd; } } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java new file mode 100644 index 0000000..6d73fff --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -0,0 +1,26 @@ +package fr.lip6.move.gal.itscl.application; + +import java.util.HashSet; +import java.util.Set; + +public class SolverObservable implements ISolverObservable { + private Set obs = new HashSet<>(); + + @Override + public void notifyObservers(ResultP res) { + for (ISolverObserver o : obs) { + o.notifyResult(res); + } + } + + @Override + public void attach(ISolverObserver o) { + obs.add(o); + } + + @Override + public void detach(ISolverObserver o) { + obs.remove(o); + } + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 0fa3835..9116154 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -1,5 +1,6 @@ package fr.lip6.move.gal.itscl.application; +import java.io.ByteArrayOutputStream; import java.io.IOException; import org.eclipse.core.runtime.IStatus; @@ -8,7 +9,7 @@ import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq extends ItsSolver implements Runnable{ +public class SolverSeq implements ISolverSeq, Runnable, ISolverObservable { @@ -19,7 +20,19 @@ public SolverSeq(Problem p, CommandLine cl) { public void run(){ synchronized(getP()){ try { - IStatus st = Runner.runTool(3500, getCmd(), System.out, true); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int timeout = 3500; + IStatus status = Runner.runTool(timeout , getCmd(), baos, true); + if (! status.isOK() && status.getCode() != 1) { + throw new RuntimeException("Unexpected exception when executing ltsmin :"+ ltsmin +"\n" +status); + } + boolean result ; + String output = baos.toString(); + ResultP res = output.contains(" A voir") ? new ResultP(1) : new ResultP(0); + // analyse + notifyObservers(res ); + IStatus st = Runner.runTool(3500, getCmd(), System.out, true); if(st.isOK()) setResult(new ResultP(ResultP.OK)); From de775329641a24573654f86752d47af13347db78 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 6 Jun 2017 11:58:52 +0200 Subject: [PATCH 20/60] maj mardi 11 --- .../gal/itscl/application/Application.java | 30 +++------ .../move/gal/itscl/application/ISolver.java | 3 +- .../gal/itscl/application/ISolverSeq.java | 2 +- .../move/gal/itscl/application/ItsSolver.java | 19 ++---- .../move/gal/itscl/application/Problem.java | 46 ++++++++++--- .../move/gal/itscl/application/ResultP.java | 7 +- .../move/gal/itscl/application/SolverSeq.java | 65 ++++++++++--------- 7 files changed, 95 insertions(+), 77 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 33802b3..eb1e14e 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -3,6 +3,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Hashtable; import java.util.List; import org.eclipse.equinox.app.IApplication; @@ -27,7 +28,7 @@ public class Application implements IApplication { private static final String CTL_EXAM = "-ctl"; private static final String LTL_EXAM = "-ltl"; - private Thread runnerSeq; + private Thread th1; /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) @@ -101,20 +102,19 @@ public Object start(IApplicationContext context) throws Exception { System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); time = System.currentTimeMillis(); - CommandLine cl= getCmdLine(spec,p.getPwd(),modelName,tool); + CommandLine cl= getCmdLine(spec,p.getFolder(),modelName,tool,p); System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - SolverSeq s = new SolverSeq(p,cl); + SolverSeq s = (SolverSeq) new ItsSolver(p,cl); s.attach(new ISolverObserver() { @Override public void notifyResult(ResultP res) { - System.out.println(""); + System.out.println("furst threeadd!"); } }); - runnerSeq= new Thread(s); - runnerSeq.start(); - runnerSeq.join(); + th1= s.solve(); + return IApplication.EXIT_OK; @@ -134,15 +134,15 @@ public Problem loadModel(String pwd,Specification spec, Tool tool) throws IOExce } GALRewriter.flatten(spec, true); - return new Problem(spec,tool,cwd); + return new Problem(spec,tool,3500,cwd); } // On produit un fichier de modèle pour l'outil ligne de commande - public CommandLine getCmdLine(Specification spec, String cwd, String modelName,Tool tool) throws IOException{ + public CommandLine getCmdLine(Specification spec, String cwd, String modelName,Tool tool,Problem pr) throws IOException{ String outpath = cwd+"/"+ modelName + ".gal"; - outputGalFile(spec, outpath); + pr.outputGalFile(spec, outpath); CommandLine cl = buildCommandLine(outpath, tool); @@ -176,16 +176,6 @@ public CommandLine getCmdLine(Specification spec, String cwd, String modelName,T } - public void outputGalFile(Specification spec, String outpath) throws IOException { - if (! spec.getProperties().isEmpty()) { - List props = new ArrayList(spec.getProperties()); - spec.getProperties().clear(); - SerializationUtil.systemToFile(spec, outpath); - spec.getProperties().addAll(props); - } else { - SerializationUtil.systemToFile(spec, outpath); - } - } private CommandLine buildCommandLine(String modelff, Tool tool) throws IOException { CommandLineBuilder cl = new CommandLineBuilder(tool); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java index 83c0c86..6752e53 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java @@ -2,7 +2,6 @@ public interface ISolver { - public void solve(Problem p); - public ResultP getResult(); + public Thread solve(); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java index 5231b32..d7144d5 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java @@ -1,5 +1,5 @@ package fr.lip6.move.gal.itscl.application; -public interface ISolverSeq extends ItsSolver { +public interface ISolverSeq { } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index e016672..26c100b 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -5,9 +5,7 @@ public class ItsSolver extends SolverObservable implements ISolver { private final CommandLine cl; - private final Problem p; - private ResultP result=new ResultP(ResultP.UNKNOWN); - + protected final Problem p; public ItsSolver(Problem p,CommandLine cl){ @@ -15,24 +13,17 @@ public ItsSolver(Problem p,CommandLine cl){ this.p=p; } - public ResultP solve(Problem p){ - return result; + public Thread solve(){ + return new Thread(); } public CommandLine getCmd() { return cl; } - - public Problem getP() { + + public Problem getProblem(){ return p; } - public ResultP getResult() { - return result; - } - - public void setResult(ResultP res){ - result=res; - } } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java index e5bb73a..cd7988c 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java @@ -1,31 +1,59 @@ package fr.lip6.move.gal.itscl.application; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import fr.lip6.move.gal.Property; import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; +import fr.lip6.move.serialization.SerializationUtil; public class Problem implements IProblem{ private Specification spec; - private Tool tool; - private String pwd; + private final Tool tool; + private int timeout; + private String folder; - public Problem(Specification spec, Tool tool,String pwd) { + public Problem(Specification spec, Tool tool,int timeout, String folder) { this.spec = spec; - this.tool = tool; - this.pwd=pwd; + this.tool= tool; + this.timeout= timeout; + this.folder= folder; } public Specification getSpec() { return spec; } + public String getFolder() { + return folder; + } + + public int getTimeout() { + return timeout; + } + public Tool getTool() { return tool; } - - public String getPwd() { - return pwd; + + + public void outputGalFile(Specification spec, String outpath) throws IOException { + if (! spec.getProperties().isEmpty()) { + List props = new ArrayList(spec.getProperties()); + spec.getProperties().clear(); + SerializationUtil.systemToFile(spec, outpath); + spec.getProperties().addAll(props); + } else { + SerializationUtil.systemToFile(spec, outpath); + } } + + + -} +} \ No newline at end of file diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java index e25fff9..182d88a 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java @@ -1,6 +1,6 @@ package fr.lip6.move.gal.itscl.application; -public class ResultP { +public class ResultP implements IResultP{ public final static int OK = 0; public final static int KO = 1; @@ -12,6 +12,9 @@ public ResultP(int res){ } public String toString(){ - return "DONE "+String.valueOf(res); + if(res==OK) + return "DONE "+String.valueOf(res); + else + return "Error :"+String.valueOf(res); } } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 9116154..7be87f3 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -9,40 +9,47 @@ import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq implements ISolverSeq, Runnable, ISolverObservable { - - +public class SolverSeq extends ItsSolver implements ISolverSeq, ISolverObserver { public SolverSeq(Problem p, CommandLine cl) { super(p, cl); } - public void run(){ - synchronized(getP()){ - try { - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - int timeout = 3500; - IStatus status = Runner.runTool(timeout , getCmd(), baos, true); - if (! status.isOK() && status.getCode() != 1) { - throw new RuntimeException("Unexpected exception when executing ltsmin :"+ ltsmin +"\n" +status); - } - boolean result ; - String output = baos.toString(); - ResultP res = output.contains(" A voir") ? new ResultP(1) : new ResultP(0); - // analyse - notifyObservers(res ); - IStatus st = Runner.runTool(3500, getCmd(), System.out, true); - if(st.isOK()) - setResult(new ResultP(ResultP.OK)); + + public Thread solve(){ + + Thread runnerTh = new Thread(new Runnable (){ + + public void run(){ + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + IStatus status = Runner.runTool(p.getTimeout() , getCmd(), baos, true); + if (! status.isOK() && status.getCode() != 1) { + throw new RuntimeException("Unexpected exception when executing ltsmin :"+ ltsmin +"\n" +status); + } + boolean result ; + String output = baos.toString(); + ResultP res = output.contains("Problem ?") ? new ResultP(ResultP.KO) : new ResultP(ResultP.OK); + // analyse + notifyObservers(res ); + + } catch (IOException | TimeOutException e) { + notifyObservers(new ResultP(ResultP.KO)); + } - } catch (IOException | TimeOutException e) { - setResult(new ResultP(ResultP.KO)); - } - - } + } + }); + + runnerTh.start(); + return runnerTh; + + } + + + @Override + public void notifyResult(ResultP res) { + // TODO Auto-generated method stub + } - - - } + From 2d1c93004c32ec46a92ec4e2dddb36462cf50969 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 6 Jun 2017 12:53:35 +0200 Subject: [PATCH 21/60] almost done? --- .../gal/itscl/application/Application.java | 14 +++------- .../itscl/application/ISolverObservable.java | 2 +- .../itscl/application/ISolverObserver.java | 3 ++- .../move/gal/itscl/application/ItsSolver.java | 9 +++++-- .../move/gal/itscl/application/ResultP.java | 4 +++ .../itscl/application/SolverObservable.java | 14 +++++++--- .../move/gal/itscl/application/SolverSeq.java | 27 +++++++++++-------- 7 files changed, 45 insertions(+), 28 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index eb1e14e..e7f9c26 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -104,16 +104,10 @@ public Object start(IApplicationContext context) throws Exception { time = System.currentTimeMillis(); CommandLine cl= getCmdLine(spec,p.getFolder(),modelName,tool,p); System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - - SolverSeq s = (SolverSeq) new ItsSolver(p,cl); - s.attach(new ISolverObserver() { - - @Override - public void notifyResult(ResultP res) { - System.out.println("furst threeadd!"); - } - }); - th1= s.solve(); + SolverObservable obs= new SolverObservable(); + SolverSeq s = (SolverSeq) new ItsSolver(p,cl,obs); + obs.attach(s); + th1=s.solve(); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java index f3af259..2f647bc 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java @@ -3,5 +3,5 @@ public interface ISolverObservable { void attach(ISolverObserver obs) ; void detach(ISolverObserver obs) ; - void notifyObservers(ResultP res); + void notifyObservers(ResultP res,ISolverObserver solver); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java index 908b741..edb553f 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java @@ -2,6 +2,7 @@ public interface ISolverObserver { - void notifyResult(ResultP res); + public void notifyResult(ResultP res); + public void problemIsSolved(); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index 26c100b..2e1e576 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -6,11 +6,12 @@ public class ItsSolver extends SolverObservable implements ISolver { private final CommandLine cl; protected final Problem p; + protected final SolverObservable obs; - - public ItsSolver(Problem p,CommandLine cl){ + public ItsSolver(Problem p,CommandLine cl, SolverObservable so){ this.cl=cl; this.p=p; + this.obs=so; } public Thread solve(){ @@ -25,5 +26,9 @@ public Problem getProblem(){ return p; } + public SolverObservable getObs() { + return obs; + } + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java index 182d88a..13a4a8b 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java @@ -17,4 +17,8 @@ public String toString(){ else return "Error :"+String.valueOf(res); } + + public boolean isOK(){ + return (res==OK)?true:false; + } } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index 6d73fff..48ec8d9 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -7,10 +7,18 @@ public class SolverObservable implements ISolverObservable { private Set obs = new HashSet<>(); @Override - public void notifyObservers(ResultP res) { - for (ISolverObserver o : obs) { - o.notifyResult(res); + public void notifyObservers(ResultP res,ISolverObserver solver) { + solver.notifyResult(res); + + if (res.isOK()){ + for (ISolverObserver o : obs) { + o.problemIsSolved(); + } + } + else{ + this.detach(solver); } + } @Override diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 7be87f3..7f37218 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -11,30 +11,32 @@ public class SolverSeq extends ItsSolver implements ISolverSeq, ISolverObserver { - public SolverSeq(Problem p, CommandLine cl) { - super(p, cl); + private Thread runnerTh; + public SolverSeq(Problem p, CommandLine cl,SolverObservable obs) { + super(p, cl,obs); } public Thread solve(){ + ISolverObserver here=this; - Thread runnerTh = new Thread(new Runnable (){ + runnerTh = new Thread(new Runnable (){ public void run(){ try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); IStatus status = Runner.runTool(p.getTimeout() , getCmd(), baos, true); if (! status.isOK() && status.getCode() != 1) { - throw new RuntimeException("Unexpected exception when executing ltsmin :"+ ltsmin +"\n" +status); + throw new RuntimeException("Unexpected exception when executing commandline :"+ getCmd() +"\n" +status); } boolean result ; String output = baos.toString(); ResultP res = output.contains("Problem ?") ? new ResultP(ResultP.KO) : new ResultP(ResultP.OK); // analyse - notifyObservers(res ); + obs.notifyObservers(res,here); } catch (IOException | TimeOutException e) { - notifyObservers(new ResultP(ResultP.KO)); + notifyObservers(new ResultP(ResultP.KO),here); } } @@ -44,12 +46,15 @@ public void run(){ return runnerTh; } - - - @Override + public void notifyResult(ResultP res) { - // TODO Auto-generated method stub - + System.out.println("furst threeadd! exit :"+res); } + + public void problemIsSolved(){ + runnerTh.interrupt(); + } + + } From 86706dced97f54573f93415e4a1758b98c72a2da Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Wed, 7 Jun 2017 16:12:03 +0200 Subject: [PATCH 22/60] update interfaces --- .../src/fr/lip6/move/gal/itscl/application/ISolver.java | 4 +++- .../fr/lip6/move/gal/itscl/application/ISolverObserver.java | 3 ++- .../src/fr/lip6/move/gal/itscl/application/ISolverSeq.java | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java index 6752e53..8d741ad 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java @@ -1,7 +1,9 @@ package fr.lip6.move.gal.itscl.application; +import fr.lip6.move.gal.application.Ender; + public interface ISolver { - public Thread solve(); + public void solve(Ender obs); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java index edb553f..caf7374 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java @@ -3,6 +3,7 @@ public interface ISolverObserver { public void notifyResult(ResultP res); - public void problemIsSolved(); + public void interrupt(); + public void join() throws InterruptedException; } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java index d7144d5..fe21b25 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java @@ -1,5 +1,5 @@ package fr.lip6.move.gal.itscl.application; -public interface ISolverSeq { +public interface ISolverSeq extends ISolver{ } From e468defded76a4228bd7bc533d7759e438b6da08 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Wed, 7 Jun 2017 16:16:08 +0200 Subject: [PATCH 23/60] maj obs et homogeneite avec les nouveaux runners --- .../move/gal/itscl/application/ItsSolver.java | 14 ++++------ .../itscl/application/SolverObservable.java | 21 +++++++++++--- .../move/gal/itscl/application/SolverSeq.java | 28 +++++++++++-------- 3 files changed, 39 insertions(+), 24 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index 2e1e576..fe572e2 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -1,21 +1,19 @@ package fr.lip6.move.gal.itscl.application; +import fr.lip6.move.gal.application.Ender; import fr.lip6.move.gal.itstools.CommandLine; -public class ItsSolver extends SolverObservable implements ISolver { +public class ItsSolver implements ISolver { private final CommandLine cl; protected final Problem p; - protected final SolverObservable obs; - public ItsSolver(Problem p,CommandLine cl, SolverObservable so){ + public ItsSolver(Problem p,CommandLine cl){ this.cl=cl; this.p=p; - this.obs=so; } - public Thread solve(){ - return new Thread(); + public void solve(Ender obs){ } public CommandLine getCmd() { @@ -26,9 +24,7 @@ public Problem getProblem(){ return p; } - public SolverObservable getObs() { - return obs; - } + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index 48ec8d9..ef342bd 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -3,17 +3,18 @@ import java.util.HashSet; import java.util.Set; -public class SolverObservable implements ISolverObservable { +import fr.lip6.move.gal.application.Ender; + +public class SolverObservable implements ISolverObservable,Ender { private Set obs = new HashSet<>(); @Override public void notifyObservers(ResultP res,ISolverObserver solver) { + solver.notifyResult(res); if (res.isOK()){ - for (ISolverObserver o : obs) { - o.problemIsSolved(); - } + killAll(); } else{ this.detach(solver); @@ -31,4 +32,16 @@ public void detach(ISolverObserver o) { obs.remove(o); } + @Override + public void killAll() { + for (ISolverObserver o : obs) { + o.interrupt(); + try { + o.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 7f37218..0ec983e 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -5,6 +5,7 @@ import org.eclipse.core.runtime.IStatus; +import fr.lip6.move.gal.application.Ender; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; @@ -12,12 +13,13 @@ public class SolverSeq extends ItsSolver implements ISolverSeq, ISolverObserver { private Thread runnerTh; - public SolverSeq(Problem p, CommandLine cl,SolverObservable obs) { - super(p, cl,obs); + + public SolverSeq(Problem p, CommandLine cl) { + super(p, cl); } - public Thread solve(){ + public void solve(Ender obs){ ISolverObserver here=this; runnerTh = new Thread(new Runnable (){ @@ -29,32 +31,36 @@ public void run(){ if (! status.isOK() && status.getCode() != 1) { throw new RuntimeException("Unexpected exception when executing commandline :"+ getCmd() +"\n" +status); } - boolean result ; String output = baos.toString(); ResultP res = output.contains("Problem ?") ? new ResultP(ResultP.KO) : new ResultP(ResultP.OK); // analyse obs.notifyObservers(res,here); } catch (IOException | TimeOutException e) { - notifyObservers(new ResultP(ResultP.KO),here); + obs.notifyObservers(new ResultP(ResultP.KO),here); } } }); runnerTh.start(); - return runnerTh; - + } public void notifyResult(ResultP res) { System.out.println("furst threeadd! exit :"+res); } - public void problemIsSolved(){ - runnerTh.interrupt(); + public void interrupt(){ + if(runnerTh != null) + runnerTh.interrupt(); } - - + + public void join() throws InterruptedException{ + if(runnerTh != null) + runnerTh.join(); + } + + } From f985568aed0a08af12a445c282c447f94fc98a42 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Wed, 7 Jun 2017 16:16:21 +0200 Subject: [PATCH 24/60] adapter Cegar --- .../gal/itscl/application/AdapterCegar.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java new file mode 100644 index 0000000..f2362e4 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java @@ -0,0 +1,22 @@ +package fr.lip6.move.gal.itscl.application; + +import fr.lip6.move.gal.application.CegarRunner; +import fr.lip6.move.gal.application.Ender; + +public class AdapterCegar implements ISolverSeq{ + + private final CegarRunner cegRunner; + + public AdapterCegar(CegarRunner ceg){ + this.cegRunner=ceg; + } + + + public void solve(Ender obs) { + cegRunner.runCegar( cegRunner.getSpec(), cegRunner.getFolder(), obs); + } + + + + +} From bf50ef59ebf2fc668c2cbf25662602b0075c203a Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Wed, 7 Jun 2017 16:22:49 +0200 Subject: [PATCH 25/60] fix application --- .../gal/itscl/application/Application.java | 38 ++++++++++--------- .../move/gal/itscl/application/Problem.java | 18 ++------- 2 files changed, 25 insertions(+), 31 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index e7f9c26..04cea7e 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -6,14 +6,11 @@ import java.util.Hashtable; import java.util.List; +import org.eclipse.emf.common.util.EList; import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; -import fr.lip6.move.gal.CTLProp; -import fr.lip6.move.gal.LTLProp; -import fr.lip6.move.gal.Property; -import fr.lip6.move.gal.SafetyProp; -import fr.lip6.move.gal.Specification; + import fr.lip6.move.gal.instantiate.GALRewriter; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.CommandLineBuilder; @@ -28,8 +25,7 @@ public class Application implements IApplication { private static final String CTL_EXAM = "-ctl"; private static final String LTL_EXAM = "-ltl"; - private Thread th1; - + /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ @@ -95,22 +91,19 @@ public Object start(IApplicationContext context) throws Exception { Specification spec = SerializationUtil.fileToGalSystem(inputff); System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); - - time = System.currentTimeMillis(); Problem p = loadModel(pwd, spec, tool); System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); time = System.currentTimeMillis(); - CommandLine cl= getCmdLine(spec,p.getFolder(),modelName,tool,p); + CommandLine cl= getCmdLine(spec,p.getFolder(),modelName,tool); System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); + SolverObservable obs= new SolverObservable(); - SolverSeq s = (SolverSeq) new ItsSolver(p,cl,obs); + SolverSeq s = new SolverSeq(p,cl); obs.attach(s); - th1=s.solve(); + s.solve(obs); - - return IApplication.EXIT_OK; } @@ -128,15 +121,15 @@ public Problem loadModel(String pwd,Specification spec, Tool tool) throws IOExce } GALRewriter.flatten(spec, true); - return new Problem(spec,tool,3500,cwd); + return new Problem(spec,tool,3500,cwd,spec.getProperties()); } // On produit un fichier de modèle pour l'outil ligne de commande - public CommandLine getCmdLine(Specification spec, String cwd, String modelName,Tool tool,Problem pr) throws IOException{ + public CommandLine getCmdLine(Specification spec, String cwd, String modelName,Tool tool) throws IOException{ String outpath = cwd+"/"+ modelName + ".gal"; - pr.outputGalFile(spec, outpath); + outputGalFile(spec, outpath); CommandLine cl = buildCommandLine(outpath, tool); @@ -171,6 +164,17 @@ public CommandLine getCmdLine(Specification spec, String cwd, String modelName,T } + public void outputGalFile(Specification spec, String outpath) throws IOException { + if (! spec.getProperties().isEmpty()) { + List props = new ArrayList(spec.getProperties()); + spec.getProperties().clear(); + SerializationUtil.systemToFile(spec, outpath); + spec.getProperties().addAll(props); + } else { + SerializationUtil.systemToFile(spec, outpath); + } + } + private CommandLine buildCommandLine(String modelff, Tool tool) throws IOException { CommandLineBuilder cl = new CommandLineBuilder(tool); cl.setModelFile(modelff); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java index cd7988c..7c8f8d4 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java @@ -1,14 +1,12 @@ package fr.lip6.move.gal.itscl.application; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; + +import org.eclipse.emf.common.util.EList; import fr.lip6.move.gal.Property; import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; -import fr.lip6.move.serialization.SerializationUtil; public class Problem implements IProblem{ @@ -40,18 +38,10 @@ public int getTimeout() { public Tool getTool() { return tool; } + + - public void outputGalFile(Specification spec, String outpath) throws IOException { - if (! spec.getProperties().isEmpty()) { - List props = new ArrayList(spec.getProperties()); - spec.getProperties().clear(); - SerializationUtil.systemToFile(spec, outpath); - spec.getProperties().addAll(props); - } else { - SerializationUtil.systemToFile(spec, outpath); - } - } From 7bbc925af7907d0b32df6c276979f6a0f1ea5190 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Wed, 7 Jun 2017 17:21:52 +0200 Subject: [PATCH 26/60] cast observer (ender to ISolverObservable) --- .../gal/itscl/application/SolverObservable.java | 13 ++----------- .../lip6/move/gal/itscl/application/SolverSeq.java | 10 ++++++---- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index ef342bd..59486e7 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -8,31 +8,22 @@ public class SolverObservable implements ISolverObservable,Ender { private Set obs = new HashSet<>(); - @Override public void notifyObservers(ResultP res,ISolverObserver solver) { - solver.notifyResult(res); - - if (res.isOK()){ + if (res.isOK()) killAll(); - } - else{ + else this.detach(solver); - } - } - @Override public void attach(ISolverObserver o) { obs.add(o); } - @Override public void detach(ISolverObserver o) { obs.remove(o); } - @Override public void killAll() { for (ISolverObserver o : obs) { o.interrupt(); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 0ec983e..1009af8 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -2,6 +2,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.concurrent.Callable; import org.eclipse.core.runtime.IStatus; @@ -10,7 +11,7 @@ import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq extends ItsSolver implements ISolverSeq, ISolverObserver { +public class SolverSeq extends ItsSolver implements ISolverSeq, ISolverObserver{ private Thread runnerTh; @@ -18,7 +19,8 @@ public SolverSeq(Problem p, CommandLine cl) { super(p, cl); } - + + public void solve(Ender obs){ ISolverObserver here=this; @@ -34,10 +36,10 @@ public void run(){ String output = baos.toString(); ResultP res = output.contains("Problem ?") ? new ResultP(ResultP.KO) : new ResultP(ResultP.OK); // analyse - obs.notifyObservers(res,here); + ((ISolverObservable) obs).notifyObservers(res,here); } catch (IOException | TimeOutException e) { - obs.notifyObservers(new ResultP(ResultP.KO),here); + ((ISolverObservable) obs).notifyObservers(new ResultP(ResultP.KO),here); } } From fc37b72bcee67749ef90f3b63e8b2a1bb91829e5 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 9 Jun 2017 12:11:13 +0200 Subject: [PATCH 27/60] replace Observable to chiefrunner --- .../gal/itscl/application/ChiefRunners.java | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java new file mode 100644 index 0000000..90a0ba0 --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java @@ -0,0 +1,91 @@ +package fr.lip6.move.gal.itscl.application; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.CompletionService; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorCompletionService; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + + +public class ChiefRunners implements Callable , ISolverObservable { + + private Set obs = new HashSet<>(); + private List > fsolvers=null; + private ExecutorService executor= Executors.newCachedThreadPool(); + private int timeout; + private TimeUnit unit; + + + public void attach(ISolver o) { + obs.add(o); + + } + + public void detach(ISolver o) { + obs.remove(o); + } + + public void setTimeout(int timeout,TimeUnit u){ + this.timeout=timeout; + unit=u; + } + + + + public boolean taskDone(int result){ + if(result==0) + return true; + return false; + } + + + public void killAll() { + List notFinished = executor.shutdownNow(); // savoir qui a fini ? + for (Future o : fsolvers){ + if(o.isDone()){ + //celui qui a fini + }else if(!o.isCancelled()){ + //Erreur un thread n'a pas ete shutdown + o.cancel(true); + } + + } + } + + + + public Boolean call(){ + try{ + for(ISolver o : obs){ + fsolvers.add(executor.submit(o)); + } + int stillSolver=obs.size(), i=0; + CompletionService completionService = new ExecutorCompletionService(executor); + + do{ + Future solverDone=completionService.poll(timeout,unit); + if (solverDone.isDone() && taskDone(solverDone.get())){ + killAll(); + return true; + } + i++; + + }while(i Date: Fri, 9 Jun 2017 12:13:06 +0200 Subject: [PATCH 28/60] maj application w\ new struct using interface callable --- .../move/gal/itscl/application/Application.java | 17 ++++++++++++++--- .../gal/itscl/application/Application1.java | 7 ++----- .../move/gal/itscl/application/ResultP.java | 1 + 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 04cea7e..931f4f1 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -5,6 +5,8 @@ import java.util.ArrayList; import java.util.Hashtable; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import org.eclipse.emf.common.util.EList; import org.eclipse.equinox.app.IApplication; @@ -16,6 +18,8 @@ import fr.lip6.move.gal.itstools.CommandLineBuilder; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; import fr.lip6.move.serialization.SerializationUtil; +import java.util.concurrent.TimeUnit; + public class Application implements IApplication { private static final String APPARGS = "application.args"; @@ -29,6 +33,7 @@ public class Application implements IApplication { /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ + @Override public Object start(IApplicationContext context) throws Exception { String [] args = (String[]) context.getArguments().get(APPARGS); @@ -99,10 +104,15 @@ public Object start(IApplicationContext context) throws Exception { CommandLine cl= getCmdLine(spec,p.getFolder(),modelName,tool); System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - SolverObservable obs= new SolverObservable(); + ChiefRunners superRunner= new ChiefRunners(); + ExecutorService exec = Executors.newSingleThreadExecutor(); + SolverSeq s = new SolverSeq(p,cl); - obs.attach(s); - s.solve(obs); + superRunner.attach(s); + //run les solvers + superRunner.setTimeout(3500,TimeUnit.MILLISECONDS); + exec.submit(superRunner); + return IApplication.EXIT_OK; } @@ -185,6 +195,7 @@ private CommandLine buildCommandLine(String modelff, Tool tool) throws IOExcepti /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#stop() */ + @Override public void stop() { } } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java index ae525a3..90342a4 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java @@ -9,11 +9,6 @@ import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; -import fr.lip6.move.gal.CTLProp; -import fr.lip6.move.gal.LTLProp; -import fr.lip6.move.gal.Property; -import fr.lip6.move.gal.SafetyProp; -import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.instantiate.GALRewriter; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.CommandLineBuilder; @@ -32,6 +27,7 @@ public class Application1 implements IApplication { /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ + @Override public Object start(IApplicationContext context) throws Exception { String [] args = (String[]) context.getArguments().get(APPARGS); @@ -163,6 +159,7 @@ private CommandLine buildCommandLine(String modelff, Tool tool) throws IOExcepti /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#stop() */ + @Override public void stop() { } } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java index 13a4a8b..6668f75 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java @@ -11,6 +11,7 @@ public ResultP(int res){ this.res=res; } + @Override public String toString(){ if(res==OK) return "DONE "+String.valueOf(res); From 2c49d51bfd162b88788d914b3ebf9cf31688fc34 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 9 Jun 2017 12:13:39 +0200 Subject: [PATCH 29/60] maj interfaces --- .../fr/lip6/move/gal/itscl/application/IProblem.java | 1 + .../fr/lip6/move/gal/itscl/application/ISolver.java | 7 ++++--- .../move/gal/itscl/application/ISolverObservable.java | 11 +++++++---- .../move/gal/itscl/application/ISolverObserver.java | 7 +++---- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java index 096e9ef..5cc4e8f 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java @@ -2,4 +2,5 @@ public interface IProblem { + public Specification getSpec(); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java index 8d741ad..bf5f481 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java @@ -1,9 +1,10 @@ package fr.lip6.move.gal.itscl.application; -import fr.lip6.move.gal.application.Ender; +import java.util.concurrent.Callable; -public interface ISolver { +public interface ISolver extends Callable { - public void solve(Ender obs); + public void currentState(); + public int isComplete(); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java index 2f647bc..190f8ac 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java @@ -1,7 +1,10 @@ package fr.lip6.move.gal.itscl.application; -public interface ISolverObservable { - void attach(ISolverObserver obs) ; - void detach(ISolverObserver obs) ; - void notifyObservers(ResultP res,ISolverObserver solver); + +import fr.lip6.move.gal.application.Ender; + +public interface ISolverObservable extends Ender { + void attach(ISolver obs) ; + void detach(ISolver obs) ; + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java index caf7374..d8c1732 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java @@ -1,9 +1,8 @@ package fr.lip6.move.gal.itscl.application; -public interface ISolverObserver { +import java.util.concurrent.Callable; + +public interface ISolverObserver extends ISolver, Callable{ - public void notifyResult(ResultP res); - public void interrupt(); - public void join() throws InterruptedException; } From ffcfc80c54dc5655540a353a812d57617ab04805 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 9 Jun 2017 12:14:53 +0200 Subject: [PATCH 30/60] maj solver, itssolver nd cleanup --- .../gal/itscl/application/ChiefRunners.java | 4 ++ .../move/gal/itscl/application/ItsSolver.java | 12 ++-- .../move/gal/itscl/application/Problem.java | 4 +- .../itscl/application/SolverObservable.java | 38 ---------- .../move/gal/itscl/application/SolverSeq.java | 72 +++++++++---------- 5 files changed, 46 insertions(+), 84 deletions(-) delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java index 90a0ba0..ec1d41f 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java @@ -22,11 +22,13 @@ public class ChiefRunners implements Callable , ISolverObservable { private TimeUnit unit; + @Override public void attach(ISolver o) { obs.add(o); } + @Override public void detach(ISolver o) { obs.remove(o); } @@ -45,6 +47,7 @@ public boolean taskDone(int result){ } + @Override public void killAll() { List notFinished = executor.shutdownNow(); // savoir qui a fini ? for (Future o : fsolvers){ @@ -60,6 +63,7 @@ public void killAll() { + @Override public Boolean call(){ try{ for(ISolver o : obs){ diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index fe572e2..d47f033 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -1,9 +1,10 @@ package fr.lip6.move.gal.itscl.application; -import fr.lip6.move.gal.application.Ender; + + import fr.lip6.move.gal.itstools.CommandLine; -public class ItsSolver implements ISolver { +public class ItsSolver { private final CommandLine cl; protected final Problem p; @@ -13,9 +14,6 @@ public ItsSolver(Problem p,CommandLine cl){ this.p=p; } - public void solve(Ender obs){ - } - public CommandLine getCmd() { return cl; } @@ -23,8 +21,8 @@ public CommandLine getCmd() { public Problem getProblem(){ return p; } - - + + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java index 7c8f8d4..1c67bde 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java @@ -4,8 +4,6 @@ import org.eclipse.emf.common.util.EList; -import fr.lip6.move.gal.Property; -import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; public class Problem implements IProblem{ @@ -14,6 +12,7 @@ public class Problem implements IProblem{ private final Tool tool; private int timeout; private String folder; + private Object Props; public Problem(Specification spec, Tool tool,int timeout, String folder) { @@ -23,6 +22,7 @@ public Problem(Specification spec, Tool tool,int timeout, String folder) { this.folder= folder; } + @Override public Specification getSpec() { return spec; } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java deleted file mode 100644 index 59486e7..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ /dev/null @@ -1,38 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -import java.util.HashSet; -import java.util.Set; - -import fr.lip6.move.gal.application.Ender; - -public class SolverObservable implements ISolverObservable,Ender { - private Set obs = new HashSet<>(); - - public void notifyObservers(ResultP res,ISolverObserver solver) { - solver.notifyResult(res); - if (res.isOK()) - killAll(); - else - this.detach(solver); - } - - public void attach(ISolverObserver o) { - obs.add(o); - } - - public void detach(ISolverObserver o) { - obs.remove(o); - } - - public void killAll() { - for (ISolverObserver o : obs) { - o.interrupt(); - try { - o.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 1009af8..b0d0905 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -2,6 +2,8 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.Callable; import org.eclipse.core.runtime.IStatus; @@ -11,57 +13,53 @@ import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq extends ItsSolver implements ISolverSeq, ISolverObserver{ - - private Thread runnerTh; +public class SolverSeq extends ItsSolver implements ISolver, Callable{ + + private ByteArrayOutputStream baos = new ByteArrayOutputStream(); + private String output; + public SolverSeq(Problem p, CommandLine cl) { super(p, cl); } - + + @Override + public Integer call(){ - public void solve(Ender obs){ - ISolverObserver here=this; - - runnerTh = new Thread(new Runnable (){ - - public void run(){ - try { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - IStatus status = Runner.runTool(p.getTimeout() , getCmd(), baos, true); - if (! status.isOK() && status.getCode() != 1) { - throw new RuntimeException("Unexpected exception when executing commandline :"+ getCmd() +"\n" +status); - } - String output = baos.toString(); - ResultP res = output.contains("Problem ?") ? new ResultP(ResultP.KO) : new ResultP(ResultP.OK); - // analyse - ((ISolverObservable) obs).notifyObservers(res,here); - - } catch (IOException | TimeOutException e) { - ((ISolverObservable) obs).notifyObservers(new ResultP(ResultP.KO),here); - } + try { + IStatus status; + status = Runner.runTool(p.getTimeout() , getCmd(), baos, true); + + if (! status.isOK() && status.getCode() != 1) { + throw new RuntimeException("Unexpected exception when executing commandline :"+ getCmd() +"\n" +status); + } + output= baos.toString(); + + return isComplete(); + + } catch (IOException | TimeOutException e) { + e.printStackTrace(); + return -1; } - }); - - runnerTh.start(); - + } + - public void notifyResult(ResultP res) { - System.out.println("furst threeadd! exit :"+res); + @Override + public void currentState(){ + System.out.println(baos.toString()); } - public void interrupt(){ - if(runnerTh != null) - runnerTh.interrupt(); + @Override + public int isComplete(){ + return output.contains("Error")? 1 : 0; } + + + - public void join() throws InterruptedException{ - if(runnerTh != null) - runnerTh.join(); - } } From 933bea7b336364ce03c87ccb15f210fa1cb718e4 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 9 Jun 2017 15:00:28 +0200 Subject: [PATCH 31/60] adapter cegar lts --- .../gal/itscl/application/AdapterCegar.java | 27 ++++++++++++++-- .../gal/itscl/application/AdapterLTSmin.java | 31 +++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterLTSmin.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java index f2362e4..769711d 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java @@ -1,7 +1,7 @@ package fr.lip6.move.gal.itscl.application; +import fr.lip6.move.gal.Property; import fr.lip6.move.gal.application.CegarRunner; -import fr.lip6.move.gal.application.Ender; public class AdapterCegar implements ISolverSeq{ @@ -12,8 +12,29 @@ public AdapterCegar(CegarRunner ceg){ } - public void solve(Ender obs) { - cegRunner.runCegar( cegRunner.getSpec(), cegRunner.getFolder(), obs); + + public void currentState() { + + } + + + public int isComplete() { + for (Property prop : cegRunner.getSpec().getProperties()) { + if (! cegRunner.getDoneProps().contains(prop.getName())) { + // still some work to do + return 1; + } + } + return 0; + } + + + public Integer call() throws Exception { + + cegRunner.solve(); + + return isComplete(); + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterLTSmin.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterLTSmin.java new file mode 100644 index 0000000..babf60b --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterLTSmin.java @@ -0,0 +1,31 @@ +package fr.lip6.move.gal.itscl.application; + +import fr.lip6.move.gal.application.LTSminRunner; + +public class AdapterLTSmin implements ISolverSeq{ + + private final LTSminRunner ltsRunner; + + + public AdapterLTSmin(LTSminRunner lts){ + ltsRunner=lts; + } + + @Override + public void currentState() { + // TODO Auto-generated method stub + + } + + @Override + public int isComplete() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Integer call() throws Exception { + ltsRunner.solve(); + return null; + } +} From 5e5d970b3d2099787505bff0c5224e6dad3acae3 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 9 Jun 2017 15:00:43 +0200 Subject: [PATCH 32/60] last maj application --- .../gal/itscl/application/Application.java | 24 ++++++++++++------- .../gal/itscl/application/ChiefRunners.java | 7 ++---- .../move/gal/itscl/application/IProblem.java | 2 ++ .../move/gal/itscl/application/Problem.java | 3 +-- .../move/gal/itscl/application/SolverSeq.java | 8 +------ 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 931f4f1..1e32108 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -12,7 +12,11 @@ import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; - +import fr.lip6.move.gal.CTLProp; +import fr.lip6.move.gal.LTLProp; +import fr.lip6.move.gal.Property; +import fr.lip6.move.gal.SafetyProp; +import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.instantiate.GALRewriter; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.CommandLineBuilder; @@ -29,6 +33,8 @@ public class Application implements IApplication { private static final String CTL_EXAM = "-ctl"; private static final String LTL_EXAM = "-ltl"; + + private ExecutorService exec; /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) @@ -105,7 +111,7 @@ public Object start(IApplicationContext context) throws Exception { System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); ChiefRunners superRunner= new ChiefRunners(); - ExecutorService exec = Executors.newSingleThreadExecutor(); + exec = Executors.newSingleThreadExecutor(); SolverSeq s = new SolverSeq(p,cl); superRunner.attach(s); @@ -131,7 +137,7 @@ public Problem loadModel(String pwd,Specification spec, Tool tool) throws IOExce } GALRewriter.flatten(spec, true); - return new Problem(spec,tool,3500,cwd,spec.getProperties()); + return new Problem(spec,tool,3500,cwd); } @@ -191,11 +197,13 @@ private CommandLine buildCommandLine(String modelff, Tool tool) throws IOExcepti cl.setModelType("CGAL"); return cl.getCommandLine(); } - - /* (non-Javadoc) - * @see org.eclipse.equinox.app.IApplication#stop() - */ - @Override + + + public void stop() { + exec.shutdown(); + if (!exec.isShutdown()) + System.out.println("Problem to shutdown executor of runners"); } + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java index ec1d41f..70b5e4b 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java @@ -22,13 +22,11 @@ public class ChiefRunners implements Callable , ISolverObservable { private TimeUnit unit; - @Override public void attach(ISolver o) { obs.add(o); } - @Override public void detach(ISolver o) { obs.remove(o); } @@ -50,8 +48,9 @@ public boolean taskDone(int result){ @Override public void killAll() { List notFinished = executor.shutdownNow(); // savoir qui a fini ? + for (Future o : fsolvers){ - if(o.isDone()){ + if(o.isDone()){ //pas vraiment celle qui a fini //celui qui a fini }else if(!o.isCancelled()){ //Erreur un thread n'a pas ete shutdown @@ -62,8 +61,6 @@ public void killAll() { } - - @Override public Boolean call(){ try{ for(ISolver o : obs){ diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java index 5cc4e8f..d330ec8 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java @@ -1,5 +1,7 @@ package fr.lip6.move.gal.itscl.application; +import fr.lip6.move.gal.Specification; + public interface IProblem { public Specification getSpec(); diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java index 1c67bde..829c48c 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java @@ -2,8 +2,8 @@ -import org.eclipse.emf.common.util.EList; +import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; public class Problem implements IProblem{ @@ -12,7 +12,6 @@ public class Problem implements IProblem{ private final Tool tool; private int timeout; private String folder; - private Object Props; public Problem(Specification spec, Tool tool,int timeout, String folder) { diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index b0d0905..8fff14b 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -2,18 +2,14 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.Callable; import org.eclipse.core.runtime.IStatus; -import fr.lip6.move.gal.application.Ender; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq extends ItsSolver implements ISolver, Callable{ +public class SolverSeq extends ItsSolver implements ISolverSeq{ private ByteArrayOutputStream baos = new ByteArrayOutputStream(); @@ -47,12 +43,10 @@ public Integer call(){ } - @Override public void currentState(){ System.out.println(baos.toString()); } - @Override public int isComplete(){ return output.contains("Error")? 1 : 0; } From ecf55cda73096eaf04ced4e01de6f15a0710a446 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Mon, 12 Jun 2017 11:23:10 +0200 Subject: [PATCH 33/60] update listener appl --- .../gal/itscl/application/Application.java | 14 +- .../gal/itscl/application/Application1.java | 165 ------------------ .../gal/itscl/application/ChiefRunners.java | 9 +- .../{IRunner.java => IListener.java} | 2 +- .../move/gal/itscl/application/ISolver.java | 1 + .../itscl/application/ISolverObservable.java | 10 +- .../move/gal/itscl/application/Listener.java | 7 + .../move/gal/itscl/application/SolverSeq.java | 27 +-- 8 files changed, 45 insertions(+), 190 deletions(-) delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java rename fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/{IRunner.java => IListener.java} (62%) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Listener.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 1e32108..198598a 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -3,12 +3,10 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.Hashtable; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import org.eclipse.emf.common.util.EList; import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; @@ -24,7 +22,7 @@ import fr.lip6.move.serialization.SerializationUtil; import java.util.concurrent.TimeUnit; - + public class Application implements IApplication { private static final String APPARGS = "application.args"; private static final String INPUT_FILE = "-i"; @@ -35,7 +33,6 @@ public class Application implements IApplication { private ExecutorService exec; - /* (non-Javadoc) * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ @@ -101,15 +98,14 @@ public Object start(IApplicationContext context) throws Exception { long time = System.currentTimeMillis(); Specification spec = SerializationUtil.fileToGalSystem(inputff); System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); - + time = System.currentTimeMillis(); Problem p = loadModel(pwd, spec, tool); System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); - + time = System.currentTimeMillis(); CommandLine cl= getCmdLine(spec,p.getFolder(),modelName,tool); System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - ChiefRunners superRunner= new ChiefRunners(); exec = Executors.newSingleThreadExecutor(); @@ -117,6 +113,8 @@ public Object start(IApplicationContext context) throws Exception { superRunner.attach(s); //run les solvers superRunner.setTimeout(3500,TimeUnit.MILLISECONDS); + Listener lst= new Listener(); + superRunner.configureListener(lst); exec.submit(superRunner); @@ -135,8 +133,8 @@ public Problem loadModel(String pwd,Specification spec, Tool tool) throws IOExce System.err.println("Could not set up work folder in "+cwd); } } - GALRewriter.flatten(spec, true); + return new Problem(spec,tool,3500,cwd); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java deleted file mode 100644 index 90342a4..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application1.java +++ /dev/null @@ -1,165 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.eclipse.equinox.app.IApplication; -import org.eclipse.equinox.app.IApplicationContext; - -import fr.lip6.move.gal.instantiate.GALRewriter; -import fr.lip6.move.gal.itstools.CommandLine; -import fr.lip6.move.gal.itstools.CommandLineBuilder; -import fr.lip6.move.gal.itstools.Runner; -import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; -import fr.lip6.move.serialization.SerializationUtil; - -public class Application1 implements IApplication { - private static final String APPARGS = "application.args"; - private static final String INPUT_FILE = "-i"; - private static final String INPUT_TYPE = "-t"; - private static final String REACH_EXAM = "-reach"; - private static final String CTL_EXAM = "-ctl"; - private static final String LTL_EXAM = "-ltl"; - - /* (non-Javadoc) - * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) - */ - @Override - public Object start(IApplicationContext context) throws Exception { - - String [] args = (String[]) context.getArguments().get(APPARGS); - - - String inputff = null; - String inputType = null; - - Tool tool = Tool.reach; - boolean doIts = false; - - System.out.println("Hello world."); - - for (int i=0; i < args.length ; i++) { - if (INPUT_FILE.equals(args[i])) { - inputff = args[++i]; - } else if (INPUT_TYPE.equals(args[i])) { - inputType = args[++i]; - } else if (REACH_EXAM.equals(args[i])) { - tool = Tool.reach; - doIts = true; - } else if (CTL_EXAM.equals(args[i])) { - tool = Tool.ctl; - doIts = true; - } else if (LTL_EXAM.equals(args[i])) { - tool = Tool.ltl; - doIts = true; -// } else if (LTSMINPATH.equals(args[i])) { -// ltsminpath = args[++i]; -// doLTSmin = true; -// } else if (ITS.equals(args[i])) { -// doITS = true; -// } else if (disablePOR.equals(args[i])) { -// doPOR = false; -// } else if (ONLYGAL.equals(args[i])) { -// onlyGal = true; - } - } - - System.out.println("hi____________________"); - - - if (inputff == null) { - System.err.println("Please provide input file with -i option"); - return null; - } - - File ff = new File(inputff); - if (! ff.exists()) { - System.err.println("Input file "+inputff +" does not exist"); - return null; - } - String pwd = ff.getParent(); - String modelName = ff.getName().replace(".gal", ""); - SerializationUtil.setStandalone(true); - - long time = System.currentTimeMillis(); - Specification spec = SerializationUtil.fileToGalSystem(inputff); - System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); - - String cwd = pwd + "/work"; - File fcwd = new File(cwd); - if (! fcwd.exists()) { - if (! fcwd.mkdir()) { - System.err.println("Could not set up work folder in "+cwd); - } - } - - time = System.currentTimeMillis(); - GALRewriter.flatten(spec, true); - System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); - - time = System.currentTimeMillis(); - String outpath = cwd+"/"+ modelName + ".gal"; - outputGalFile(spec, outpath); - - CommandLine cl = buildCommandLine(outpath, tool); - - if (tool == Tool.reach) { - spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof SafetyProp) ); - String proppath = cwd + "/" +modelName +".prop"; - SerializationUtil.serializePropertiesForITSTools(outpath, spec.getProperties(), proppath); - cl.addArg("-reachable-file"); - cl.addArg(proppath); - // cl.addArg("--stats"); - } else if (tool == Tool.ctl) { - spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof CTLProp) ); - String proppath = cwd + "/" +modelName +".ctl"; - SerializationUtil.serializePropertiesForITSCTLTools(outpath, spec.getProperties(), proppath); - cl.addArg("-ctl"); - cl.addArg(proppath); - } else if (tool == Tool.ltl) { - spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof LTLProp) ); - String proppath = cwd + "/" +modelName +".ltl"; - SerializationUtil.serializePropertiesForITSLTLTools(outpath, spec.getProperties(), proppath); - cl.addArg("-LTL"); - cl.addArg(proppath); - cl.addArg("-c"); - cl.addArg("-stutter-deadlock"); - } - if (cl != null) { - cl.setWorkingDir(new File(cwd)); - } - System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - - Runner.runTool(3500, cl, System.out, true); - - return IApplication.EXIT_OK; - } - - public void outputGalFile(Specification spec, String outpath) throws IOException { - if (! spec.getProperties().isEmpty()) { - List props = new ArrayList(spec.getProperties()); - spec.getProperties().clear(); - SerializationUtil.systemToFile(spec, outpath); - spec.getProperties().addAll(props); - } else { - SerializationUtil.systemToFile(spec, outpath); - } - } - - private CommandLine buildCommandLine(String modelff, Tool tool) throws IOException { - CommandLineBuilder cl = new CommandLineBuilder(tool); - cl.setModelFile(modelff); - cl.setModelType("CGAL"); - return cl.getCommandLine(); - } - - /* (non-Javadoc) - * @see org.eclipse.equinox.app.IApplication#stop() - */ - @Override - public void stop() { - } -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java index 70b5e4b..3c2ccc2 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java @@ -3,7 +3,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorCompletionService; @@ -13,7 +12,7 @@ import java.util.concurrent.TimeUnit; -public class ChiefRunners implements Callable , ISolverObservable { +public class ChiefRunners implements ISolverObservable { private Set obs = new HashSet<>(); private List > fsolvers=null; @@ -86,6 +85,12 @@ public Boolean call(){ return false; } + + public void configureListener(Listener lst) { + for(ISolver o: obs){ + o.configListener(lst); + } + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IRunner.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IListener.java similarity index 62% rename from fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IRunner.java rename to fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IListener.java index 8747e2f..2957368 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IRunner.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IListener.java @@ -1,5 +1,5 @@ package fr.lip6.move.gal.itscl.application; -public interface IRunner { +public interface IListener { } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java index bf5f481..2a31ab5 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java @@ -6,5 +6,6 @@ public interface ISolver extends Callable { public void currentState(); public int isComplete(); + public void configListener(IListener lst); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java index 190f8ac..c8eb9eb 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java @@ -1,10 +1,14 @@ package fr.lip6.move.gal.itscl.application; +import java.util.concurrent.Callable; +import java.util.concurrent.TimeUnit; + import fr.lip6.move.gal.application.Ender; -public interface ISolverObservable extends Ender { - void attach(ISolver obs) ; - void detach(ISolver obs) ; +public interface ISolverObservable extends Callable ,Ender { + public void attach(ISolver obs) ; + public void detach(ISolver obs) ; + public void setTimeout(int timeout,TimeUnit u); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Listener.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Listener.java new file mode 100644 index 0000000..a0d45ab --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Listener.java @@ -0,0 +1,7 @@ +package fr.lip6.move.gal.itscl.application; + +public class Listener implements IListener{ + + + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 8fff14b..96753ec 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -14,18 +14,33 @@ public class SolverSeq extends ItsSolver implements ISolverSeq{ private ByteArrayOutputStream baos = new ByteArrayOutputStream(); private String output; + private IListener lst; + public SolverSeq(Problem p, CommandLine cl) { super(p, cl); } + public void currentState(){ + System.out.println(baos.toString()); + } + + public int isComplete(){ + return output.contains("Error")? 1 : 0; + } + + public void configListener(IListener lst){ + this.lst=lst; + } + + @Override public Integer call(){ try { IStatus status; - status = Runner.runTool(p.getTimeout() , getCmd(), baos, true); + status = Runner.runTool(p.getTimeout() , getCmd(), baos, true,lst); if (! status.isOK() && status.getCode() != 1) { throw new RuntimeException("Unexpected exception when executing commandline :"+ getCmd() +"\n" +status); @@ -42,16 +57,6 @@ public Integer call(){ } - - public void currentState(){ - System.out.println(baos.toString()); - } - - public int isComplete(){ - return output.contains("Error")? 1 : 0; - } - - From 87d72905fe661b45f3fc5b629c29f5d309f4b6fd Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 13 Jun 2017 09:27:26 +0200 Subject: [PATCH 34/60] creation of concurrent package --- .../gal/itscl/application/AdapterCegar.java | 43 -------- .../gal/itscl/application/AdapterLTSmin.java | 31 ------ .../gal/itscl/application/Application.java | 19 ++-- .../gal/itscl/application/ChiefRunners.java | 97 ------------------- .../move/gal/itscl/application/IListener.java | 5 - .../move/gal/itscl/application/IProblem.java | 8 -- .../move/gal/itscl/application/IResultP.java | 5 - .../move/gal/itscl/application/ISolver.java | 11 --- .../itscl/application/ISolverObservable.java | 14 --- .../itscl/application/ISolverObserver.java | 8 -- .../gal/itscl/application/ISolverSeq.java | 5 - .../move/gal/itscl/application/Listener.java | 7 -- .../move/gal/itscl/application/Problem.java | 4 - .../move/gal/itscl/application/ResultP.java | 25 ----- .../move/gal/itscl/application/SolverSeq.java | 8 +- fr.lip6.move.gal.itscl.concurrent/.classpath | 7 ++ fr.lip6.move.gal.itscl.concurrent/.gitignore | 1 + fr.lip6.move.gal.itscl.concurrent/.project | 28 ++++++ .../.settings/org.eclipse.jdt.core.prefs | 7 ++ .../META-INF/MANIFEST.MF | 11 +++ .../bin/.gitignore | 1 + .../build.properties | 4 + fr.lip6.move.gal.itscl.concurrent/pom.xml | 16 +++ fr.lip6.move.gal.itscl.parent/.project | 11 +++ fr.lip6.move.gal.itscl.parent/pom.xml | 1 + 25 files changed, 101 insertions(+), 276 deletions(-) delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterLTSmin.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IListener.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IProblem.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/IResultP.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolver.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Listener.java delete mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/.classpath create mode 100644 fr.lip6.move.gal.itscl.concurrent/.gitignore create mode 100644 fr.lip6.move.gal.itscl.concurrent/.project create mode 100644 fr.lip6.move.gal.itscl.concurrent/.settings/org.eclipse.jdt.core.prefs create mode 100644 fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF create mode 100644 fr.lip6.move.gal.itscl.concurrent/bin/.gitignore create mode 100644 fr.lip6.move.gal.itscl.concurrent/build.properties create mode 100644 fr.lip6.move.gal.itscl.concurrent/pom.xml create mode 100644 fr.lip6.move.gal.itscl.parent/.project diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java deleted file mode 100644 index 769711d..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterCegar.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -import fr.lip6.move.gal.Property; -import fr.lip6.move.gal.application.CegarRunner; - -public class AdapterCegar implements ISolverSeq{ - - private final CegarRunner cegRunner; - - public AdapterCegar(CegarRunner ceg){ - this.cegRunner=ceg; - } - - - - public void currentState() { - - } - - - public int isComplete() { - for (Property prop : cegRunner.getSpec().getProperties()) { - if (! cegRunner.getDoneProps().contains(prop.getName())) { - // still some work to do - return 1; - } - } - return 0; - } - - - public Integer call() throws Exception { - - cegRunner.solve(); - - return isComplete(); - - } - - - - -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterLTSmin.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterLTSmin.java deleted file mode 100644 index babf60b..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/AdapterLTSmin.java +++ /dev/null @@ -1,31 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -import fr.lip6.move.gal.application.LTSminRunner; - -public class AdapterLTSmin implements ISolverSeq{ - - private final LTSminRunner ltsRunner; - - - public AdapterLTSmin(LTSminRunner lts){ - ltsRunner=lts; - } - - @Override - public void currentState() { - // TODO Auto-generated method stub - - } - - @Override - public int isComplete() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public Integer call() throws Exception { - ltsRunner.solve(); - return null; - } -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 198598a..b068f5e 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.FutureTask; import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; @@ -112,13 +113,17 @@ public Object start(IApplicationContext context) throws Exception { SolverSeq s = new SolverSeq(p,cl); superRunner.attach(s); //run les solvers - superRunner.setTimeout(3500,TimeUnit.MILLISECONDS); - Listener lst= new Listener(); - superRunner.configureListener(lst); - exec.submit(superRunner); - +// Listener lst= new Listener(); +// superRunner.configureListener(lst); + FutureTask executeRunner=new FutureTask<>(superRunner); + Thread futureTh= new Thread(executeRunner); +// exec.submit(superRunner); + futureTh.start(); + Boolean result = executeRunner.get(); + System.out.println("Operation reussi ? "+result); + - return IApplication.EXIT_OK; + return result?IApplication.EXIT_OK:1; } @@ -135,7 +140,7 @@ public Problem loadModel(String pwd,Specification spec, Tool tool) throws IOExce } GALRewriter.flatten(spec, true); - return new Problem(spec,tool,3500,cwd); + return new Problem(spec,tool,35000,cwd); } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java deleted file mode 100644 index 3c2ccc2..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ChiefRunners.java +++ /dev/null @@ -1,97 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.concurrent.CompletionService; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorCompletionService; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; - - -public class ChiefRunners implements ISolverObservable { - - private Set obs = new HashSet<>(); - private List > fsolvers=null; - private ExecutorService executor= Executors.newCachedThreadPool(); - private int timeout; - private TimeUnit unit; - - - public void attach(ISolver o) { - obs.add(o); - - } - - public void detach(ISolver o) { - obs.remove(o); - } - - public void setTimeout(int timeout,TimeUnit u){ - this.timeout=timeout; - unit=u; - } - - - - public boolean taskDone(int result){ - if(result==0) - return true; - return false; - } - - - @Override - public void killAll() { - List notFinished = executor.shutdownNow(); // savoir qui a fini ? - - for (Future o : fsolvers){ - if(o.isDone()){ //pas vraiment celle qui a fini - //celui qui a fini - }else if(!o.isCancelled()){ - //Erreur un thread n'a pas ete shutdown - o.cancel(true); - } - - } - } - - - public Boolean call(){ - try{ - for(ISolver o : obs){ - fsolvers.add(executor.submit(o)); - } - int stillSolver=obs.size(), i=0; - CompletionService completionService = new ExecutorCompletionService(executor); - - do{ - Future solverDone=completionService.poll(timeout,unit); - if (solverDone.isDone() && taskDone(solverDone.get())){ - killAll(); - return true; - } - i++; - - }while(i { - - public void currentState(); - public int isComplete(); - public void configListener(IListener lst); - -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java deleted file mode 100644 index c8eb9eb..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java +++ /dev/null @@ -1,14 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - - -import java.util.concurrent.Callable; -import java.util.concurrent.TimeUnit; - -import fr.lip6.move.gal.application.Ender; - -public interface ISolverObservable extends Callable ,Ender { - public void attach(ISolver obs) ; - public void detach(ISolver obs) ; - public void setTimeout(int timeout,TimeUnit u); - -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java deleted file mode 100644 index d8c1732..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java +++ /dev/null @@ -1,8 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -import java.util.concurrent.Callable; - -public interface ISolverObserver extends ISolver, Callable{ - - -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java deleted file mode 100644 index fe21b25..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java +++ /dev/null @@ -1,5 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -public interface ISolverSeq extends ISolver{ - -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Listener.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Listener.java deleted file mode 100644 index a0d45ab..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Listener.java +++ /dev/null @@ -1,7 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -public class Listener implements IListener{ - - - -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java index 829c48c..33dde2b 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java @@ -1,8 +1,5 @@ package fr.lip6.move.gal.itscl.application; - - - import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; @@ -21,7 +18,6 @@ public Problem(Specification spec, Tool tool,int timeout, String folder) { this.folder= folder; } - @Override public Specification getSpec() { return spec; } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java deleted file mode 100644 index 6668f75..0000000 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ResultP.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -public class ResultP implements IResultP{ - - public final static int OK = 0; - public final static int KO = 1; - public final static int UNKNOWN = 2; - private final int res; - - public ResultP(int res){ - this.res=res; - } - - @Override - public String toString(){ - if(res==OK) - return "DONE "+String.valueOf(res); - else - return "Error :"+String.valueOf(res); - } - - public boolean isOK(){ - return (res==OK)?true:false; - } -} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 96753ec..880a1a9 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -14,7 +14,6 @@ public class SolverSeq extends ItsSolver implements ISolverSeq{ private ByteArrayOutputStream baos = new ByteArrayOutputStream(); private String output; - private IListener lst; public SolverSeq(Problem p, CommandLine cl) { @@ -29,10 +28,7 @@ public void currentState(){ public int isComplete(){ return output.contains("Error")? 1 : 0; } - - public void configListener(IListener lst){ - this.lst=lst; - } + @Override @@ -40,7 +36,7 @@ public Integer call(){ try { IStatus status; - status = Runner.runTool(p.getTimeout() , getCmd(), baos, true,lst); + status = Runner.runTool(p.getTimeout() , getCmd(), baos, true); if (! status.isOK() && status.getCode() != 1) { throw new RuntimeException("Unexpected exception when executing commandline :"+ getCmd() +"\n" +status); diff --git a/fr.lip6.move.gal.itscl.concurrent/.classpath b/fr.lip6.move.gal.itscl.concurrent/.classpath new file mode 100644 index 0000000..eca7bdb --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fr.lip6.move.gal.itscl.concurrent/.gitignore b/fr.lip6.move.gal.itscl.concurrent/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/fr.lip6.move.gal.itscl.concurrent/.project b/fr.lip6.move.gal.itscl.concurrent/.project new file mode 100644 index 0000000..e7f36dc --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/.project @@ -0,0 +1,28 @@ + + + fr.lip6.move.gal.itscl.concurrent + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.lip6.move.gal.itscl.concurrent/.settings/org.eclipse.jdt.core.prefs b/fr.lip6.move.gal.itscl.concurrent/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF new file mode 100644 index 0000000..1592477 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF @@ -0,0 +1,11 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Concurrent Support for Portfolio +Bundle-SymbolicName: fr.lip6.move.gal.itscl.concurrent +Bundle-Version: 1.0.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-Vendor: LIP6 +Export-Package: fr.lip6.move.gal.itscl.adapter, + fr.lip6.move.gal.itscl.application +Import-Package: fr.lip6.move.gal, + fr.lip6.move.gal.application diff --git a/fr.lip6.move.gal.itscl.concurrent/bin/.gitignore b/fr.lip6.move.gal.itscl.concurrent/bin/.gitignore new file mode 100644 index 0000000..44fde90 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/bin/.gitignore @@ -0,0 +1 @@ +/fr/ diff --git a/fr.lip6.move.gal.itscl.concurrent/build.properties b/fr.lip6.move.gal.itscl.concurrent/build.properties new file mode 100644 index 0000000..34d2e4d --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/fr.lip6.move.gal.itscl.concurrent/pom.xml b/fr.lip6.move.gal.itscl.concurrent/pom.xml new file mode 100644 index 0000000..72a6754 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/pom.xml @@ -0,0 +1,16 @@ + + 4.0.0 + + + fr.lip6.move.gal + fr.lip6.move.gal.parent + 1.0.0-SNAPSHOT + ../../fr.lip6.move.gal.parent/pom.xml + + + fr.lip6.move.gal.itscl.concurrent + eclipse-plugin + Extensions :: Concurent Features for Portfolio + Portfolio support classes and interfaces. + + diff --git a/fr.lip6.move.gal.itscl.parent/.project b/fr.lip6.move.gal.itscl.parent/.project new file mode 100644 index 0000000..6154c28 --- /dev/null +++ b/fr.lip6.move.gal.itscl.parent/.project @@ -0,0 +1,11 @@ + + + fr.lip6.move.gal.itscl.parent + + + + + + + + diff --git a/fr.lip6.move.gal.itscl.parent/pom.xml b/fr.lip6.move.gal.itscl.parent/pom.xml index a553392..3ae3e7b 100644 --- a/fr.lip6.move.gal.itscl.parent/pom.xml +++ b/fr.lip6.move.gal.itscl.parent/pom.xml @@ -18,6 +18,7 @@ Command-line interaction with code built for Eclipse + ../fr.lip6.move.gal.itscl.concurrent ../fr.lip6.move.gal.itscl.application From 378629985a0ce997a1e5ad1440d5acc47c9918e9 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 13 Jun 2017 15:00:09 +0200 Subject: [PATCH 35/60] stuffs --- fr.lip6.move.gal.itscl.adaptors/.classpath | 7 +++++ fr.lip6.move.gal.itscl.adaptors/.project | 28 +++++++++++++++++++ .../.settings/org.eclipse.jdt.core.prefs | 7 +++++ .../META-INF/MANIFEST.MF | 10 +++++++ .../build.properties | 4 +++ fr.lip6.move.gal.itscl.adaptors/pom.xml | 16 +++++++++++ .../.classpath | 7 +++++ .../.project | 28 +++++++++++++++++++ .../.settings/org.eclipse.jdt.core.prefs | 7 +++++ .../META-INF/MANIFEST.MF | 7 +++++ .../build.properties | 4 +++ fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml | 16 +++++++++++ 12 files changed, 141 insertions(+) create mode 100644 fr.lip6.move.gal.itscl.adaptors/.classpath create mode 100644 fr.lip6.move.gal.itscl.adaptors/.project create mode 100644 fr.lip6.move.gal.itscl.adaptors/.settings/org.eclipse.jdt.core.prefs create mode 100644 fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF create mode 100644 fr.lip6.move.gal.itscl.adaptors/build.properties create mode 100644 fr.lip6.move.gal.itscl.adaptors/pom.xml create mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/.classpath create mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/.project create mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/.settings/org.eclipse.jdt.core.prefs create mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF create mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/build.properties create mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml diff --git a/fr.lip6.move.gal.itscl.adaptors/.classpath b/fr.lip6.move.gal.itscl.adaptors/.classpath new file mode 100644 index 0000000..eca7bdb --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fr.lip6.move.gal.itscl.adaptors/.project b/fr.lip6.move.gal.itscl.adaptors/.project new file mode 100644 index 0000000..0f542cc --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/.project @@ -0,0 +1,28 @@ + + + fr.lip6.move.gal.itscl.adaptors + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.lip6.move.gal.itscl.adaptors/.settings/org.eclipse.jdt.core.prefs b/fr.lip6.move.gal.itscl.adaptors/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF new file mode 100644 index 0000000..f9f5f73 --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Adapters +Bundle-SymbolicName: fr.lip6.move.gal.itscl.adaptors +Bundle-Version: 1.0.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-Vendor: LIP6 +Require-Bundle: fr.lip6.move.gal.itscl.pnmcc.adaptors;bundle-version="1.0.0", + fr.lip6.move.gal.itscl.concurrent;bundle-version="1.0.0" +Import-Package: fr.lip6.move.gal diff --git a/fr.lip6.move.gal.itscl.adaptors/build.properties b/fr.lip6.move.gal.itscl.adaptors/build.properties new file mode 100644 index 0000000..34d2e4d --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/fr.lip6.move.gal.itscl.adaptors/pom.xml b/fr.lip6.move.gal.itscl.adaptors/pom.xml new file mode 100644 index 0000000..9bea3b5 --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/pom.xml @@ -0,0 +1,16 @@ + + 4.0.0 + + + fr.lip6.move.gal + fr.lip6.move.gal.parent + 1.0.0-SNAPSHOT + ../../fr.lip6.move.gal.parent/pom.xml + + + fr.lip6.move.gal.itscl.adapters + eclipse-plugin + Extensions :: Concurrent Adapter Features for Portfolio + Portfolio support Adapter classes. + + diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.classpath b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.classpath new file mode 100644 index 0000000..eca7bdb --- /dev/null +++ b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project new file mode 100644 index 0000000..e117045 --- /dev/null +++ b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project @@ -0,0 +1,28 @@ + + + fr.lip6.move.gal.itscl.pnmcc.adaptors + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.settings/org.eclipse.jdt.core.prefs b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF new file mode 100644 index 0000000..2c72528 --- /dev/null +++ b/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Adapter +Bundle-SymbolicName: fr.lip6.move.gal.itscl.pnmcc.adaptors +Bundle-Version: 1.0.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Import-Package: fr.lip6.move.gal diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/build.properties b/fr.lip6.move.gal.itscl.pnmcc.adaptors/build.properties new file mode 100644 index 0000000..34d2e4d --- /dev/null +++ b/fr.lip6.move.gal.itscl.pnmcc.adaptors/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml b/fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml new file mode 100644 index 0000000..7a1679d --- /dev/null +++ b/fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml @@ -0,0 +1,16 @@ + + 4.0.0 + + + fr.lip6.move.gal + fr.lip6.move.gal.parent + 1.0.0-SNAPSHOT + ../../fr.lip6.move.gal.parent/pom.xml + + + fr.lip6.move.gal.itscl.pnmcc.adapter + eclipse-plugin + Extensions :: Concurent Features for Portfolio + Portfolio support classes and interfaces. + + From 8861d3853a3ee7e060344dd8ceda1371ace1fc23 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 13 Jun 2017 15:02:52 +0200 Subject: [PATCH 36/60] update adaptors and first application with new packages adaptors --- .../META-INF/MANIFEST.MF | 4 +- .../src/adapter/Adapter.java | 11 +++ .../src/adapter/AdapterCegar.java | 36 ++++++++++ .../src/adapter/AdapterITS.java | 32 +++++++++ .../src/adapter/AdapterLTSmin.java | 33 +++++++++ .../src/adapter/AdapterSMTR.java | 33 +++++++++ .../src/operations/adaptation/IRunner.java | 21 ++++++ .../adaptation/InteractApplication.java | 24 +++++++ .../META-INF/MANIFEST.MF | 3 +- .../gal/itscl/application/Application.java | 4 +- .../META-INF/MANIFEST.MF | 8 +-- .../move/gal/itscl/application/IListener.java | 5 ++ .../move/gal/itscl/application/IProblem.java | 8 +++ .../move/gal/itscl/application/IResultP.java | 5 ++ .../move/gal/itscl/application/ISolver.java | 10 +++ .../itscl/application/ISolverObservable.java | 11 +++ .../itscl/application/ISolverObserver.java | 7 ++ .../gal/itscl/application/ISolverSeq.java | 5 ++ .../move/gal/itscl/application/Listener.java | 7 ++ .../move/gal/itscl/application/ResultP.java | 25 +++++++ .../itscl/application/SolverObservable.java | 71 +++++++++++++++++++ fr.lip6.move.gal.itscl.parent/pom.xml | 6 +- 22 files changed, 358 insertions(+), 11 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java create mode 100644 fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java create mode 100644 fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java create mode 100644 fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java create mode 100644 fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java create mode 100644 fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/IRunner.java create mode 100644 fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolver.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java diff --git a/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF index f9f5f73..a05f2c1 100644 --- a/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF @@ -5,6 +5,6 @@ Bundle-SymbolicName: fr.lip6.move.gal.itscl.adaptors Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 -Require-Bundle: fr.lip6.move.gal.itscl.pnmcc.adaptors;bundle-version="1.0.0", - fr.lip6.move.gal.itscl.concurrent;bundle-version="1.0.0" +Require-Bundle: fr.lip6.move.gal.itscl.concurrent;bundle-version="1.0.0" Import-Package: fr.lip6.move.gal +Export-Package: operations.adaptation diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java new file mode 100644 index 0000000..017cffb --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java @@ -0,0 +1,11 @@ +package adapter; + +import operations.adaptation.IRunner; + +public class Adapter { + + protected IRunner runner; + + + +} diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java new file mode 100644 index 0000000..99fc5b9 --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java @@ -0,0 +1,36 @@ +package adapter; + + +import fr.lip6.move.gal.itscl.application.ISolverSeq; +import operations.adaptation.IRunner; + +public class AdapterCegar extends Adapter implements ISolverSeq{ + + + public AdapterCegar(IRunner ceg){ + runner=ceg; + } + + + + public void currentState() { + + } + + public int isComplete() { + return runner.taskDone()?0:1; + } + + + public Integer call() throws Exception { + + runner.solve(); + + return isComplete(); + + } + + + + +} diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java new file mode 100644 index 0000000..8116e76 --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java @@ -0,0 +1,32 @@ +package adapter; + + +import fr.lip6.move.gal.itscl.application.ISolverSeq; +import operations.adaptation.IRunner; + +public class AdapterITS implements ISolverSeq{ + + + private IRunner itsRunner; + + public AdapterITS(IRunner its) { + itsRunner=its; + } + @Override + public void currentState() { + // TODO Auto-generated method stub + + } + + @Override + public int isComplete() { + return itsRunner.taskDone()?0:1; + + } + + @Override + public Integer call() throws Exception { + itsRunner.solve(); + return isComplete(); + } +} diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java new file mode 100644 index 0000000..24400f4 --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java @@ -0,0 +1,33 @@ +package adapter; + + +import fr.lip6.move.gal.itscl.application.ISolverSeq; +import operations.adaptation.IRunner; + +public class AdapterLTSmin implements ISolverSeq{ + + private final IRunner ltsRunner; + + + public AdapterLTSmin(IRunner lts){ + ltsRunner=lts; + } + + @Override + public void currentState() { + // TODO Auto-generated method stub + + } + + @Override + public int isComplete() { + return ltsRunner.taskDone()?0:1; + } + + @Override + public Integer call() throws Exception { + ltsRunner.solve(); + return isComplete(); + } + +} diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java new file mode 100644 index 0000000..84e308c --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java @@ -0,0 +1,33 @@ +package adapter; + + +import fr.lip6.move.gal.itscl.application.ISolverSeq; +import operations.adaptation.IRunner; + +public class AdapterSMTR implements ISolverSeq{ + + + private IRunner smtRunner; + + public AdapterSMTR(IRunner smt){ + smtRunner=smt; + } + + public void currentState() { + // TODO Auto-generated method stub + + } + + @Override + public int isComplete() { + return smtRunner.taskDone()?0:1; + } + + @Override + public Integer call() throws Exception { + smtRunner.solve(); + return null; + } + + +} diff --git a/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/IRunner.java b/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/IRunner.java new file mode 100644 index 0000000..f39e073 --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/IRunner.java @@ -0,0 +1,21 @@ +package operations.adaptation; + +import java.io.IOException; +import java.util.Set; + +import fr.lip6.move.gal.Specification; + + +public interface IRunner { + + + void configure(Specification z3Spec, Set doneProps) throws IOException; + + void solve(); + + Specification getSpec(); + + Set doneProps(); + Boolean taskDone(); + +} diff --git a/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java b/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java new file mode 100644 index 0000000..39d1a93 --- /dev/null +++ b/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java @@ -0,0 +1,24 @@ +package operations.adaptation; + +import fr.lip6.move.gal.itscl.application.SolverObservable; + +public class InteractApplication { + + private SolverObservable sobs; + + public InteractApplication(){ + super(); + sobs = new SolverObservable(); + } + + public void add(IRunner r){ + sobs.attach(r); + } + + public void remove(IRunner r){ + sobs.detach(r); + } + + + +} diff --git a/fr.lip6.move.gal.itscl.application/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.application/META-INF/MANIFEST.MF index d9e5352..47c1689 100644 --- a/fr.lip6.move.gal.itscl.application/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.application/META-INF/MANIFEST.MF @@ -6,6 +6,7 @@ Bundle-Version: 1.0.0.qualifier Require-Bundle: org.eclipse.core.runtime, fr.lip6.move.gal, fr.lip6.move.gal.itstools.binaries, - org.antlr.runtime;bundle-version="[3.2.0,3.3.0]" + org.antlr.runtime;bundle-version="[3.2.0,3.3.0]", + fr.lip6.move.gal.itscl.concurrent;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: UPMC/CNRS, LIP6 diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index b068f5e..79ec93f 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -21,7 +21,6 @@ import fr.lip6.move.gal.itstools.CommandLineBuilder; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; import fr.lip6.move.serialization.SerializationUtil; -import java.util.concurrent.TimeUnit; public class Application implements IApplication { @@ -43,6 +42,7 @@ public Object start(IApplicationContext context) throws Exception { String [] args = (String[]) context.getArguments().get(APPARGS); String inputff = null; + @SuppressWarnings("unused") String inputType = null; Tool tool = Tool.reach; @@ -107,7 +107,7 @@ public Object start(IApplicationContext context) throws Exception { time = System.currentTimeMillis(); CommandLine cl= getCmdLine(spec,p.getFolder(),modelName,tool); System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - ChiefRunners superRunner= new ChiefRunners(); + SolverObservable superRunner= new SolverObservable(); exec = Executors.newSingleThreadExecutor(); SolverSeq s = new SolverSeq(p,cl); diff --git a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF index 1592477..1925a21 100644 --- a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF @@ -2,10 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Concurrent Support for Portfolio Bundle-SymbolicName: fr.lip6.move.gal.itscl.concurrent -Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 -Export-Package: fr.lip6.move.gal.itscl.adapter, - fr.lip6.move.gal.itscl.application -Import-Package: fr.lip6.move.gal, - fr.lip6.move.gal.application +Export-Package: fr.lip6.move.gal.itscl.application +Import-Package: fr.lip6.move.gal +Bundle-Version: 1.0.0.qualifier diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java new file mode 100644 index 0000000..2957368 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java @@ -0,0 +1,5 @@ +package fr.lip6.move.gal.itscl.application; + +public interface IListener { + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java new file mode 100644 index 0000000..d330ec8 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java @@ -0,0 +1,8 @@ +package fr.lip6.move.gal.itscl.application; + +import fr.lip6.move.gal.Specification; + +public interface IProblem { + + public Specification getSpec(); +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java new file mode 100644 index 0000000..21d476a --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java @@ -0,0 +1,5 @@ +package fr.lip6.move.gal.itscl.application; + +public interface IResultP { + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolver.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolver.java new file mode 100644 index 0000000..bf5f481 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolver.java @@ -0,0 +1,10 @@ +package fr.lip6.move.gal.itscl.application; + +import java.util.concurrent.Callable; + +public interface ISolver extends Callable { + + public void currentState(); + public int isComplete(); + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java new file mode 100644 index 0000000..41de046 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java @@ -0,0 +1,11 @@ +package fr.lip6.move.gal.itscl.application; + + +import java.util.concurrent.Callable; + +public interface ISolverObservable extends Callable { + public void attach(ISolver obs) ; + public void detach(ISolver obs) ; + public void killAll(); + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java new file mode 100644 index 0000000..b749d13 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java @@ -0,0 +1,7 @@ +package fr.lip6.move.gal.itscl.application; + + +public interface ISolverObserver extends ISolver{ + + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java new file mode 100644 index 0000000..fe21b25 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java @@ -0,0 +1,5 @@ +package fr.lip6.move.gal.itscl.application; + +public interface ISolverSeq extends ISolver{ + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java new file mode 100644 index 0000000..a0d45ab --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java @@ -0,0 +1,7 @@ +package fr.lip6.move.gal.itscl.application; + +public class Listener implements IListener{ + + + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java new file mode 100644 index 0000000..6668f75 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java @@ -0,0 +1,25 @@ +package fr.lip6.move.gal.itscl.application; + +public class ResultP implements IResultP{ + + public final static int OK = 0; + public final static int KO = 1; + public final static int UNKNOWN = 2; + private final int res; + + public ResultP(int res){ + this.res=res; + } + + @Override + public String toString(){ + if(res==OK) + return "DONE "+String.valueOf(res); + else + return "Error :"+String.valueOf(res); + } + + public boolean isOK(){ + return (res==OK)?true:false; + } +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java new file mode 100644 index 0000000..5214559 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -0,0 +1,71 @@ +package fr.lip6.move.gal.itscl.application; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.CompletionService; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorCompletionService; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +public class SolverObservable implements ISolverObservable { + + private Set obs = new HashSet<>(); + private List> fsolvers = null; + private ExecutorService executor = Executors.newCachedThreadPool(); + + public void attach(ISolver o) { + obs.add(o); + + } + + public void detach(ISolver o) { + obs.remove(o); + } + + @Override + public void killAll() { + @SuppressWarnings("unused") + List notFinished = executor.shutdownNow(); // savoir qui a + // fini ? + + for (Future o : fsolvers) { + if (!o.isCancelled() || !o.isDone()) { + // Erreur un thread n'a pas ete shutdown + o.cancel(true); + } + + } + } + + public Boolean call() { + for (ISolver o : obs) { + fsolvers.add(executor.submit(o)); + } + int nbSolver = obs.size(), i = 0; + CompletionService completionService = new ExecutorCompletionService(executor); + + do { + try { + + Future solverDone = completionService.take(); + if (solverDone.isDone() && solverDone.get() == 0) { + System.out.println("Solved by : " + solverDone.getClass()); + killAll(); + return true; + } + } catch (InterruptedException e) { + e.printStackTrace(); + } catch( ExecutionException ee){ + ee.printStackTrace(); + return false; + } + } while (++i < nbSolver); + + System.out.println("Problem not solved"); + return false; + } + +} diff --git a/fr.lip6.move.gal.itscl.parent/pom.xml b/fr.lip6.move.gal.itscl.parent/pom.xml index 3ae3e7b..2b09d13 100644 --- a/fr.lip6.move.gal.itscl.parent/pom.xml +++ b/fr.lip6.move.gal.itscl.parent/pom.xml @@ -18,7 +18,11 @@ Command-line interaction with code built for Eclipse + ../fr.lip6.move.gal.itscl.concurrent + ../fr.lip6.move.gal.itscl.adaptors + ../fr.lip6.move.gal.itscl.pnmcc.adaptors + ../fr.lip6.move.gal.itscl.application @@ -125,7 +129,7 @@ org.eclipse.jdt.core - + eclipse-plugin From 439b0c0f241dd60c887667d4d00590345323dff9 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 13 Jun 2017 16:09:50 +0200 Subject: [PATCH 37/60] mv irunner to package concurrent --- .../src/fr/lip6/move/gal/itscl/application}/IRunner.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation => fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application}/IRunner.java (100%) diff --git a/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java similarity index 100% rename from fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/IRunner.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java From 45d3079abe29388db1c688b538868e2267f06f9a Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 13 Jun 2017 16:12:29 +0200 Subject: [PATCH 38/60] dependence fixed between adaptors and application --- .../META-INF/MANIFEST.MF | 3 +- .../src/adapter/Adapter.java | 29 +++++++++++++++---- .../src/adapter/AdapterCegar.java | 24 ++------------- .../src/adapter/AdapterITS.java | 26 +++-------------- .../src/adapter/AdapterLTSmin.java | 26 ++--------------- .../src/adapter/AdapterSMTR.java | 25 ++-------------- .../adaptation/InteractApplication.java | 17 ++++------- 7 files changed, 43 insertions(+), 107 deletions(-) diff --git a/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF index a05f2c1..8b12290 100644 --- a/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF @@ -5,6 +5,7 @@ Bundle-SymbolicName: fr.lip6.move.gal.itscl.adaptors Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 -Require-Bundle: fr.lip6.move.gal.itscl.concurrent;bundle-version="1.0.0" +Require-Bundle: fr.lip6.move.gal.itscl.concurrent;bundle-version="1.0.0", + fr.lip6.move.gal.application.pnmcc;bundle-version="1.0.0" Import-Package: fr.lip6.move.gal Export-Package: operations.adaptation diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java index 017cffb..e0ebbbc 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java @@ -1,11 +1,30 @@ package adapter; -import operations.adaptation.IRunner; +import fr.lip6.move.gal.itscl.application.IRunner; +import fr.lip6.move.gal.itscl.application.ISolverSeq; + +public class Adapter implements ISolverSeq { -public class Adapter { - protected IRunner runner; - - + + public Adapter(IRunner r) { + this.runner = r; + } + + public void currentState() { + + } + + public int isComplete() { + return runner.taskDone() ? 0 : 1; + } + + public Integer call() throws Exception { + + runner.solve(); + + return isComplete(); + + } } diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java index 99fc5b9..3a601f5 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java @@ -1,10 +1,9 @@ package adapter; -import fr.lip6.move.gal.itscl.application.ISolverSeq; -import operations.adaptation.IRunner; +import fr.lip6.move.gal.itscl.application.IRunner; -public class AdapterCegar extends Adapter implements ISolverSeq{ +public class AdapterCegar extends Adapter{ public AdapterCegar(IRunner ceg){ @@ -12,25 +11,6 @@ public AdapterCegar(IRunner ceg){ } - - public void currentState() { - - } - - public int isComplete() { - return runner.taskDone()?0:1; - } - - - public Integer call() throws Exception { - - runner.solve(); - - return isComplete(); - - } - - } diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java index 8116e76..bf8c677 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java @@ -1,32 +1,14 @@ package adapter; -import fr.lip6.move.gal.itscl.application.ISolverSeq; -import operations.adaptation.IRunner; +import fr.lip6.move.gal.itscl.application.IRunner; -public class AdapterITS implements ISolverSeq{ +public class AdapterITS extends Adapter{ - private IRunner itsRunner; public AdapterITS(IRunner its) { - itsRunner=its; - } - @Override - public void currentState() { - // TODO Auto-generated method stub - - } - - @Override - public int isComplete() { - return itsRunner.taskDone()?0:1; - - } - - @Override - public Integer call() throws Exception { - itsRunner.solve(); - return isComplete(); + runner=its; } + } diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java index 24400f4..cce0e78 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java @@ -1,33 +1,13 @@ package adapter; -import fr.lip6.move.gal.itscl.application.ISolverSeq; -import operations.adaptation.IRunner; +import fr.lip6.move.gal.itscl.application.IRunner; -public class AdapterLTSmin implements ISolverSeq{ +public class AdapterLTSmin extends Adapter{ - private final IRunner ltsRunner; - public AdapterLTSmin(IRunner lts){ - ltsRunner=lts; - } - - @Override - public void currentState() { - // TODO Auto-generated method stub - - } - - @Override - public int isComplete() { - return ltsRunner.taskDone()?0:1; - } - - @Override - public Integer call() throws Exception { - ltsRunner.solve(); - return isComplete(); + runner=lts; } } diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java index 84e308c..427e6db 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java +++ b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java @@ -1,32 +1,13 @@ package adapter; -import fr.lip6.move.gal.itscl.application.ISolverSeq; -import operations.adaptation.IRunner; +import fr.lip6.move.gal.itscl.application.IRunner; -public class AdapterSMTR implements ISolverSeq{ +public class AdapterSMTR extends Adapter{ - private IRunner smtRunner; - public AdapterSMTR(IRunner smt){ - smtRunner=smt; - } - - public void currentState() { - // TODO Auto-generated method stub - - } - - @Override - public int isComplete() { - return smtRunner.taskDone()?0:1; - } - - @Override - public Integer call() throws Exception { - smtRunner.solve(); - return null; + runner=smt; } diff --git a/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java b/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java index 39d1a93..cdbca2e 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java +++ b/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java @@ -1,23 +1,16 @@ package operations.adaptation; -import fr.lip6.move.gal.itscl.application.SolverObservable; +import adapter.Adapter; +import fr.lip6.move.gal.itscl.application.IRunner; +import fr.lip6.move.gal.itscl.application.ISolver; public class InteractApplication { - private SolverObservable sobs; - public InteractApplication(){ - super(); - sobs = new SolverObservable(); + public static ISolver add(IRunner r){ + return new Adapter(r); } - public void add(IRunner r){ - sobs.attach(r); - } - - public void remove(IRunner r){ - sobs.detach(r); - } From eda97a42e93667120aa7a1e5dadcbb76eb62507a Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 13 Jun 2017 16:13:04 +0200 Subject: [PATCH 39/60] dependence pnmcc fixed --- .../src/fr/lip6/move/gal/itscl/application/IRunner.java | 2 +- fr.lip6.move.gal.itscl.pnmcc.adaptors/.project | 2 +- fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java index f39e073..915ee61 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java @@ -1,4 +1,4 @@ -package operations.adaptation; +package fr.lip6.move.gal.itscl.application; import java.io.IOException; import java.util.Set; diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project index e117045..48c580e 100644 --- a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project +++ b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project @@ -1,6 +1,6 @@ - fr.lip6.move.gal.itscl.pnmcc.adaptors + fr.lip6.move.gal.itscl.interprete.application diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF index 2c72528..89a4951 100644 --- a/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF @@ -1,7 +1,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Adapter -Bundle-SymbolicName: fr.lip6.move.gal.itscl.pnmcc.adaptors +Bundle-SymbolicName: fr.lip6.move.gal.itscl.interprete.application Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: fr.lip6.move.gal +Export-Package: fr.lip6.move.gal.itscl.adaptors.irunner From c24c4cc62c3bde2e29357431296bccf7a844663a Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 13 Jun 2017 16:32:26 +0200 Subject: [PATCH 40/60] up final packages rearrange --- .../META-INF/MANIFEST.MF | 1 - .../src/adapter/AdapterITS.java | 14 -------------- .../src/adapter/AdapterLTSmin.java | 13 ------------- .../META-INF/MANIFEST.MF | 3 ++- .../adaptapplication}/InteractApplication.java | 4 ++-- .../fr/lip6/move/gal/itscl/adaptor}/Adapter.java | 2 +- .../lip6/move/gal/itscl/adaptor}/AdapterCegar.java | 4 ++-- .../fr/lip6/move/gal/itscl/adaptor/AdapterITS.java | 11 +++++++++++ .../lip6/move/gal/itscl/adaptor/AdapterLTSmin.java | 11 +++++++++++ .../lip6/move/gal/itscl/adaptor}/AdapterSMTR.java | 4 ++-- 10 files changed, 31 insertions(+), 36 deletions(-) delete mode 100644 fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java delete mode 100644 fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java rename {fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation => fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication}/InteractApplication.java (69%) rename {fr.lip6.move.gal.itscl.adaptors/src/adapter => fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor}/Adapter.java (91%) rename {fr.lip6.move.gal.itscl.adaptors/src/adapter => fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor}/AdapterCegar.java (73%) create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterITS.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java rename {fr.lip6.move.gal.itscl.adaptors/src/adapter => fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor}/AdapterSMTR.java (72%) diff --git a/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF index 8b12290..4097ab5 100644 --- a/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF @@ -8,4 +8,3 @@ Bundle-Vendor: LIP6 Require-Bundle: fr.lip6.move.gal.itscl.concurrent;bundle-version="1.0.0", fr.lip6.move.gal.application.pnmcc;bundle-version="1.0.0" Import-Package: fr.lip6.move.gal -Export-Package: operations.adaptation diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java deleted file mode 100644 index bf8c677..0000000 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterITS.java +++ /dev/null @@ -1,14 +0,0 @@ -package adapter; - - -import fr.lip6.move.gal.itscl.application.IRunner; - -public class AdapterITS extends Adapter{ - - - - public AdapterITS(IRunner its) { - runner=its; - } - -} diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java b/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java deleted file mode 100644 index cce0e78..0000000 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterLTSmin.java +++ /dev/null @@ -1,13 +0,0 @@ -package adapter; - - -import fr.lip6.move.gal.itscl.application.IRunner; - -public class AdapterLTSmin extends Adapter{ - - - public AdapterLTSmin(IRunner lts){ - runner=lts; - } - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF index 1925a21..82ee635 100644 --- a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF @@ -4,6 +4,7 @@ Bundle-Name: Concurrent Support for Portfolio Bundle-SymbolicName: fr.lip6.move.gal.itscl.concurrent Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 -Export-Package: fr.lip6.move.gal.itscl.application +Export-Package: fr.lip6.move.gal.itscl.adaptapplication, + fr.lip6.move.gal.itscl.application Import-Package: fr.lip6.move.gal Bundle-Version: 1.0.0.qualifier diff --git a/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java similarity index 69% rename from fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java index cdbca2e..fb79b7f 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/operations/adaptation/InteractApplication.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java @@ -1,6 +1,6 @@ -package operations.adaptation; +package fr.lip6.move.gal.itscl.adaptapplication; -import adapter.Adapter; +import fr.lip6.move.gal.itscl.adaptor.Adapter; import fr.lip6.move.gal.itscl.application.IRunner; import fr.lip6.move.gal.itscl.application.ISolver; diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java similarity index 91% rename from fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java index e0ebbbc..c284687 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/Adapter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java @@ -1,4 +1,4 @@ -package adapter; +package fr.lip6.move.gal.itscl.adaptor; import fr.lip6.move.gal.itscl.application.IRunner; import fr.lip6.move.gal.itscl.application.ISolverSeq; diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java similarity index 73% rename from fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java index 3a601f5..c01eaaf 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterCegar.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java @@ -1,4 +1,4 @@ -package adapter; +package fr.lip6.move.gal.itscl.adaptor; import fr.lip6.move.gal.itscl.application.IRunner; @@ -7,7 +7,7 @@ public class AdapterCegar extends Adapter{ public AdapterCegar(IRunner ceg){ - runner=ceg; + super(ceg); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterITS.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterITS.java new file mode 100644 index 0000000..8cae896 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterITS.java @@ -0,0 +1,11 @@ +package fr.lip6.move.gal.itscl.adaptor; + +import fr.lip6.move.gal.itscl.application.IRunner; + +public class AdapterITS extends Adapter { + + public AdapterITS(IRunner its) { + super(its); + } + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java new file mode 100644 index 0000000..90aecbf --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java @@ -0,0 +1,11 @@ +package fr.lip6.move.gal.itscl.adaptor; + +import fr.lip6.move.gal.itscl.application.IRunner; + +public class AdapterLTSmin extends Adapter { + + public AdapterLTSmin(IRunner lts) { + super(lts); + } + +} diff --git a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java similarity index 72% rename from fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java index 427e6db..d66331d 100644 --- a/fr.lip6.move.gal.itscl.adaptors/src/adapter/AdapterSMTR.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java @@ -1,4 +1,4 @@ -package adapter; +package fr.lip6.move.gal.itscl.adaptor; import fr.lip6.move.gal.itscl.application.IRunner; @@ -7,7 +7,7 @@ public class AdapterSMTR extends Adapter{ public AdapterSMTR(IRunner smt){ - runner=smt; + super(smt); } From b70c5f56b5ea2f11737b9b3a546e1aad9c40ab79 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 13 Jun 2017 17:17:47 +0200 Subject: [PATCH 41/60] nullpointeurexception fixed --- .../fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java | 1 + .../move/gal/itscl/application/SolverObservable.java | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java index 90aecbf..f65218e 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java @@ -5,6 +5,7 @@ public class AdapterLTSmin extends Adapter { public AdapterLTSmin(IRunner lts) { + super(lts); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index 5214559..ed7bc08 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -1,5 +1,6 @@ package fr.lip6.move.gal.itscl.application; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -13,7 +14,7 @@ public class SolverObservable implements ISolverObservable { private Set obs = new HashSet<>(); - private List> fsolvers = null; + private List> fsolvers = new ArrayList>(); private ExecutorService executor = Executors.newCachedThreadPool(); public void attach(ISolver o) { @@ -41,11 +42,13 @@ public void killAll() { } public Boolean call() { + CompletionService completionService = new ExecutorCompletionService(executor); + for (ISolver o : obs) { - fsolvers.add(executor.submit(o)); + fsolvers.add(completionService.submit(o)); } + int nbSolver = obs.size(), i = 0; - CompletionService completionService = new ExecutorCompletionService(executor); do { try { @@ -58,7 +61,7 @@ public Boolean call() { } } catch (InterruptedException e) { e.printStackTrace(); - } catch( ExecutionException ee){ + } catch (ExecutionException ee) { ee.printStackTrace(); return false; } From e8d339b33fb3d07bca49f577ae7b575ff261ff19 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Wed, 14 Jun 2017 10:56:32 +0200 Subject: [PATCH 42/60] last maj befor adding problem to application --- fr.lip6.move.gal.itscl.adaptors/.classpath | 7 --- fr.lip6.move.gal.itscl.adaptors/.project | 28 ----------- .../.settings/org.eclipse.jdt.core.prefs | 7 --- .../META-INF/MANIFEST.MF | 10 ---- .../build.properties | 4 -- fr.lip6.move.gal.itscl.adaptors/pom.xml | 16 ------ .../move/gal/itscl/application/SolverSeq.java | 50 ++++++++----------- .../adaptapplication/InteractApplication.java | 10 ++-- .../lip6/move/gal/itscl/adaptor/Adapter.java | 6 +-- .../move/gal/itscl/adaptor/AdapterCegar.java | 10 +--- .../move/gal/itscl/adaptor/AdapterLTSmin.java | 2 +- .../move/gal/itscl/adaptor/AdapterSMTR.java | 7 +-- .../move/gal/itscl/application/Ender.java | 14 ++++++ .../move/gal/itscl/application/IRunner.java | 17 +++---- .../move/gal/itscl/application/ISolver.java | 10 ---- .../itscl/application/ISolverObservable.java | 12 ++--- .../itscl/application/ISolverObserver.java | 7 --- .../gal/itscl/application/ISolverSeq.java | 6 ++- .../move/gal/itscl/application/ResultP.java | 24 ++++----- .../itscl/application/SolverObservable.java | 8 +-- .../.classpath | 7 --- .../.project | 28 ----------- .../.settings/org.eclipse.jdt.core.prefs | 7 --- .../META-INF/MANIFEST.MF | 8 --- .../build.properties | 4 -- fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml | 16 ------ 26 files changed, 79 insertions(+), 246 deletions(-) delete mode 100644 fr.lip6.move.gal.itscl.adaptors/.classpath delete mode 100644 fr.lip6.move.gal.itscl.adaptors/.project delete mode 100644 fr.lip6.move.gal.itscl.adaptors/.settings/org.eclipse.jdt.core.prefs delete mode 100644 fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF delete mode 100644 fr.lip6.move.gal.itscl.adaptors/build.properties delete mode 100644 fr.lip6.move.gal.itscl.adaptors/pom.xml create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Ender.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolver.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java delete mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/.classpath delete mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/.project delete mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/.settings/org.eclipse.jdt.core.prefs delete mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF delete mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/build.properties delete mode 100644 fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml diff --git a/fr.lip6.move.gal.itscl.adaptors/.classpath b/fr.lip6.move.gal.itscl.adaptors/.classpath deleted file mode 100644 index eca7bdb..0000000 --- a/fr.lip6.move.gal.itscl.adaptors/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/fr.lip6.move.gal.itscl.adaptors/.project b/fr.lip6.move.gal.itscl.adaptors/.project deleted file mode 100644 index 0f542cc..0000000 --- a/fr.lip6.move.gal.itscl.adaptors/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - fr.lip6.move.gal.itscl.adaptors - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - - diff --git a/fr.lip6.move.gal.itscl.adaptors/.settings/org.eclipse.jdt.core.prefs b/fr.lip6.move.gal.itscl.adaptors/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 0c68a61..0000000 --- a/fr.lip6.move.gal.itscl.adaptors/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,7 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF deleted file mode 100644 index 4097ab5..0000000 --- a/fr.lip6.move.gal.itscl.adaptors/META-INF/MANIFEST.MF +++ /dev/null @@ -1,10 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Adapters -Bundle-SymbolicName: fr.lip6.move.gal.itscl.adaptors -Bundle-Version: 1.0.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Bundle-Vendor: LIP6 -Require-Bundle: fr.lip6.move.gal.itscl.concurrent;bundle-version="1.0.0", - fr.lip6.move.gal.application.pnmcc;bundle-version="1.0.0" -Import-Package: fr.lip6.move.gal diff --git a/fr.lip6.move.gal.itscl.adaptors/build.properties b/fr.lip6.move.gal.itscl.adaptors/build.properties deleted file mode 100644 index 34d2e4d..0000000 --- a/fr.lip6.move.gal.itscl.adaptors/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - . diff --git a/fr.lip6.move.gal.itscl.adaptors/pom.xml b/fr.lip6.move.gal.itscl.adaptors/pom.xml deleted file mode 100644 index 9bea3b5..0000000 --- a/fr.lip6.move.gal.itscl.adaptors/pom.xml +++ /dev/null @@ -1,16 +0,0 @@ - - 4.0.0 - - - fr.lip6.move.gal - fr.lip6.move.gal.parent - 1.0.0-SNAPSHOT - ../../fr.lip6.move.gal.parent/pom.xml - - - fr.lip6.move.gal.itscl.adapters - eclipse-plugin - Extensions :: Concurrent Adapter Features for Portfolio - Portfolio support Adapter classes. - - diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 880a1a9..77ecad5 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -9,53 +9,43 @@ import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq extends ItsSolver implements ISolverSeq{ - - +public class SolverSeq extends ItsSolver implements ISolverSeq { + private ByteArrayOutputStream baos = new ByteArrayOutputStream(); private String output; - public SolverSeq(Problem p, CommandLine cl) { super(p, cl); } - - public void currentState(){ + public void currentState() { System.out.println(baos.toString()); } - - public int isComplete(){ - return output.contains("Error")? 1 : 0; + + public int isComplete() { + return output.contains("Error") ? 1 : 0; } + @Override + public Integer call() { + try { + IStatus status; + status = Runner.runTool(p.getTimeout(), getCmd(), baos, true); + + if (!status.isOK() && status.getCode() != 1) { + throw new RuntimeException( + "Unexpected exception when executing commandline :" + getCmd() + "\n" + status); + } + output = baos.toString(); + + return isComplete(); - @Override - public Integer call(){ - - try { - IStatus status; - status = Runner.runTool(p.getTimeout() , getCmd(), baos, true); - - if (! status.isOK() && status.getCode() != 1) { - throw new RuntimeException("Unexpected exception when executing commandline :"+ getCmd() +"\n" +status); - } - output= baos.toString(); - - return isComplete(); - - } catch (IOException | TimeOutException e) { e.printStackTrace(); return -1; } - - } + } - - - } - diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java index fb79b7f..98f4959 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java @@ -2,16 +2,12 @@ import fr.lip6.move.gal.itscl.adaptor.Adapter; import fr.lip6.move.gal.itscl.application.IRunner; -import fr.lip6.move.gal.itscl.application.ISolver; +import fr.lip6.move.gal.itscl.application.ISolverSeq; public class InteractApplication { - - public static ISolver add(IRunner r){ + public static ISolverSeq add(IRunner r) { return new Adapter(r); } - - - - + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java index c284687..274b079 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java @@ -11,11 +11,9 @@ public Adapter(IRunner r) { this.runner = r; } - public void currentState() { - - } - public int isComplete() { + System.out.println("Solved by :"+this.getClass().getName()); + return runner.taskDone() ? 0 : 1; } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java index c01eaaf..8e3450e 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java @@ -1,16 +1,10 @@ package fr.lip6.move.gal.itscl.adaptor; - import fr.lip6.move.gal.itscl.application.IRunner; -public class AdapterCegar extends Adapter{ +public class AdapterCegar extends Adapter { - - public AdapterCegar(IRunner ceg){ + public AdapterCegar(IRunner ceg) { super(ceg); } - - - - } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java index f65218e..c5a91d1 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java @@ -5,7 +5,7 @@ public class AdapterLTSmin extends Adapter { public AdapterLTSmin(IRunner lts) { - + super(lts); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java index d66331d..013f440 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java @@ -1,14 +1,11 @@ package fr.lip6.move.gal.itscl.adaptor; - import fr.lip6.move.gal.itscl.application.IRunner; -public class AdapterSMTR extends Adapter{ +public class AdapterSMTR extends Adapter { - - public AdapterSMTR(IRunner smt){ + public AdapterSMTR(IRunner smt) { super(smt); } - } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Ender.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Ender.java new file mode 100644 index 0000000..93e7050 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Ender.java @@ -0,0 +1,14 @@ +package fr.lip6.move.gal.itscl.application; + +/** + * Something you tell when it's time to end it. + * + */ +public interface Ender { + /** + * It's over, kill them all. + * Called by a solver that has solved all problem instances. + */ + void killAll(); + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java index 915ee61..54f6fc1 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java @@ -5,17 +5,16 @@ import fr.lip6.move.gal.Specification; - public interface IRunner { + public void configure(Specification z3Spec, Set doneProps) throws IOException; + + public void solve(); + + public Specification getSpec(); + + public Set doneProps(); - void configure(Specification z3Spec, Set doneProps) throws IOException; + public Boolean taskDone(); - void solve(); - - Specification getSpec(); - - Set doneProps(); - Boolean taskDone(); - } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolver.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolver.java deleted file mode 100644 index bf5f481..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolver.java +++ /dev/null @@ -1,10 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - -import java.util.concurrent.Callable; - -public interface ISolver extends Callable { - - public void currentState(); - public int isComplete(); - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java index 41de046..e440a58 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java @@ -1,11 +1,11 @@ package fr.lip6.move.gal.itscl.application; - import java.util.concurrent.Callable; -public interface ISolverObservable extends Callable { - public void attach(ISolver obs) ; - public void detach(ISolver obs) ; - public void killAll(); - +public interface ISolverObservable extends Callable, Ender { + + public void attach(ISolverSeq obs); + + public void detach(ISolverSeq obs); + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java deleted file mode 100644 index b749d13..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObserver.java +++ /dev/null @@ -1,7 +0,0 @@ -package fr.lip6.move.gal.itscl.application; - - -public interface ISolverObserver extends ISolver{ - - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java index fe21b25..a2c1fb0 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java @@ -1,5 +1,9 @@ package fr.lip6.move.gal.itscl.application; -public interface ISolverSeq extends ISolver{ +import java.util.concurrent.Callable; + +public interface ISolverSeq extends Callable { + + public int isComplete(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java index 6668f75..2a76229 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java @@ -1,25 +1,25 @@ package fr.lip6.move.gal.itscl.application; -public class ResultP implements IResultP{ +public class ResultP implements IResultP { public final static int OK = 0; public final static int KO = 1; public final static int UNKNOWN = 2; private final int res; - - public ResultP(int res){ - this.res=res; + + public ResultP(int res) { + this.res = res; } - + @Override - public String toString(){ - if(res==OK) - return "DONE "+String.valueOf(res); + public String toString() { + if (res == OK) + return "DONE " + String.valueOf(res); else - return "Error :"+String.valueOf(res); + return "Error :" + String.valueOf(res); } - - public boolean isOK(){ - return (res==OK)?true:false; + + public boolean isOK() { + return (res == OK) ? true : false; } } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index ed7bc08..d7a8c91 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -13,16 +13,16 @@ public class SolverObservable implements ISolverObservable { - private Set obs = new HashSet<>(); + private Set obs = new HashSet<>(); private List> fsolvers = new ArrayList>(); private ExecutorService executor = Executors.newCachedThreadPool(); - public void attach(ISolver o) { + public void attach(ISolverSeq o) { obs.add(o); } - public void detach(ISolver o) { + public void detach(ISolverSeq o) { obs.remove(o); } @@ -44,7 +44,7 @@ public void killAll() { public Boolean call() { CompletionService completionService = new ExecutorCompletionService(executor); - for (ISolver o : obs) { + for (ISolverSeq o : obs) { fsolvers.add(completionService.submit(o)); } diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.classpath b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.classpath deleted file mode 100644 index eca7bdb..0000000 --- a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project deleted file mode 100644 index 48c580e..0000000 --- a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - fr.lip6.move.gal.itscl.interprete.application - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - - diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.settings/org.eclipse.jdt.core.prefs b/fr.lip6.move.gal.itscl.pnmcc.adaptors/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 0c68a61..0000000 --- a/fr.lip6.move.gal.itscl.pnmcc.adaptors/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,7 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF deleted file mode 100644 index 89a4951..0000000 --- a/fr.lip6.move.gal.itscl.pnmcc.adaptors/META-INF/MANIFEST.MF +++ /dev/null @@ -1,8 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Adapter -Bundle-SymbolicName: fr.lip6.move.gal.itscl.interprete.application -Bundle-Version: 1.0.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Import-Package: fr.lip6.move.gal -Export-Package: fr.lip6.move.gal.itscl.adaptors.irunner diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/build.properties b/fr.lip6.move.gal.itscl.pnmcc.adaptors/build.properties deleted file mode 100644 index 34d2e4d..0000000 --- a/fr.lip6.move.gal.itscl.pnmcc.adaptors/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - . diff --git a/fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml b/fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml deleted file mode 100644 index 7a1679d..0000000 --- a/fr.lip6.move.gal.itscl.pnmcc.adaptors/pom.xml +++ /dev/null @@ -1,16 +0,0 @@ - - 4.0.0 - - - fr.lip6.move.gal - fr.lip6.move.gal.parent - 1.0.0-SNAPSHOT - ../../fr.lip6.move.gal.parent/pom.xml - - - fr.lip6.move.gal.itscl.pnmcc.adapter - eclipse-plugin - Extensions :: Concurent Features for Portfolio - Portfolio support classes and interfaces. - - From 35f66cd189d884b05f0cca293df0f632cb114924 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Wed, 14 Jun 2017 16:30:03 +0200 Subject: [PATCH 43/60] last modif concurrent --- .../gal/itscl/application/Application.java | 161 +++++++++--------- .../move/gal/itscl/application/ItsSolver.java | 23 +-- .../{Problem.java => ProblemSS.java} | 36 ++-- .../move/gal/itscl/application/SolverSeq.java | 9 +- .../META-INF/MANIFEST.MF | 1 + .../lip6/move/gal/itscl/adaptor/Adapter.java | 2 - .../move/gal/itscl/application/IProblem.java | 3 + .../move/gal/itscl/application/Problem.java | 17 ++ .../itscl/application/SolverObservable.java | 16 +- 9 files changed, 134 insertions(+), 134 deletions(-) rename fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/{Problem.java => ProblemSS.java} (54%) create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Problem.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 79ec93f..2fd8caf 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -22,7 +22,6 @@ import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; import fr.lip6.move.serialization.SerializationUtil; - public class Application implements IApplication { private static final String APPARGS = "application.args"; private static final String INPUT_FILE = "-i"; @@ -30,30 +29,32 @@ public class Application implements IApplication { private static final String REACH_EXAM = "-reach"; private static final String CTL_EXAM = "-ctl"; private static final String LTL_EXAM = "-ltl"; - - + private ExecutorService exec; - /* (non-Javadoc) - * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) + + /* + * (non-Javadoc) + * + * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app. + * IApplicationContext) */ @Override public Object start(IApplicationContext context) throws Exception { - - String [] args = (String[]) context.getArguments().get(APPARGS); - + + String[] args = (String[]) context.getArguments().get(APPARGS); + String inputff = null; @SuppressWarnings("unused") String inputType = null; Tool tool = Tool.reach; boolean doIts = false; - - - for (int i=0; i < args.length ; i++) { + + for (int i = 0; i < args.length; i++) { if (INPUT_FILE.equals(args[i])) { inputff = args[++i]; } else if (INPUT_TYPE.equals(args[i])) { - inputType = args[++i]; + inputType = args[++i]; } else if (REACH_EXAM.equals(args[i])) { tool = Tool.reach; doIts = true; @@ -63,128 +64,126 @@ public Object start(IApplicationContext context) throws Exception { } else if (LTL_EXAM.equals(args[i])) { tool = Tool.ltl; doIts = true; -// } else if (LTSMINPATH.equals(args[i])) { -// ltsminpath = args[++i]; -// doLTSmin = true; -// } else if (ITS.equals(args[i])) { -// doITS = true; -// } else if (disablePOR.equals(args[i])) { -// doPOR = false; -// } else if (ONLYGAL.equals(args[i])) { -// onlyGal = true; + // } else if (LTSMINPATH.equals(args[i])) { + // ltsminpath = args[++i]; + // doLTSmin = true; + // } else if (ITS.equals(args[i])) { + // doITS = true; + // } else if (disablePOR.equals(args[i])) { + // doPOR = false; + // } else if (ONLYGAL.equals(args[i])) { + // onlyGal = true; } } - - + if (inputff == null) { System.err.println("Please provide input file with -i option"); return null; } - - if(!doIts){ + + if (!doIts) { System.err.println("Please provide tool (ex: reach, ctl, ltl...)"); } - + File ff = new File(inputff); - if (! ff.exists()) { - System.err.println("Input file "+inputff +" does not exist"); + if (!ff.exists()) { + System.err.println("Input file " + inputff + " does not exist"); return null; } - + String pwd = ff.getParent(); String modelName = ff.getName().replace(".gal", ""); SerializationUtil.setStandalone(true); - - //parse l'entrée + + // parse l'entrée long time = System.currentTimeMillis(); - Specification spec = SerializationUtil.fileToGalSystem(inputff); - System.out.println("Successfully read input file : " + inputff +" in " + (time - System.currentTimeMillis()) + " ms."); + Specification spec = SerializationUtil.fileToGalSystem(inputff); + System.out.println( + "Successfully read input file : " + inputff + " in " + (time - System.currentTimeMillis()) + " ms."); time = System.currentTimeMillis(); - Problem p = loadModel(pwd, spec, tool); + ProblemSS p = loadModel(pwd, spec, tool); System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); time = System.currentTimeMillis(); - CommandLine cl= getCmdLine(spec,p.getFolder(),modelName,tool); - System.out.println("Built GAL and property files in "+ (time - System.currentTimeMillis()) + " ms."); - SolverObservable superRunner= new SolverObservable(); + CommandLine cl = getCmdLine(spec, p.getFolder(), modelName, tool); + System.out.println("Built GAL and property files in " + (time - System.currentTimeMillis()) + " ms."); + SolverObservable superRunner = new SolverObservable(); exec = Executors.newSingleThreadExecutor(); - - SolverSeq s = new SolverSeq(p,cl); + + SolverSeq s = new SolverSeq(p, cl); superRunner.attach(s); - //run les solvers -// Listener lst= new Listener(); -// superRunner.configureListener(lst); - FutureTask executeRunner=new FutureTask<>(superRunner); - Thread futureTh= new Thread(executeRunner); -// exec.submit(superRunner); + // run les solvers + // Listener lst= new Listener(); + // superRunner.configureListener(lst); + FutureTask executeRunner = new FutureTask<>(superRunner); + Thread futureTh = new Thread(executeRunner); + // exec.submit(superRunner); futureTh.start(); Boolean result = executeRunner.get(); - System.out.println("Operation reussi ? "+result); - - - return result?IApplication.EXIT_OK:1; + if (futureTh != null) + futureTh.join(); + System.out.println("Operation reussi ? " + result); + return result ? IApplication.EXIT_OK : 1; } - - - + // Traitement du problème : transformations + simplifications - public Problem loadModel(String pwd,Specification spec, Tool tool) throws IOException{ - + public ProblemSS loadModel(String pwd, Specification spec, Tool tool) throws IOException { + String cwd = pwd + "/work"; File fcwd = new File(cwd); - if (! fcwd.exists()) { - if (! fcwd.mkdir()) { - System.err.println("Could not set up work folder in "+cwd); + if (!fcwd.exists()) { + if (!fcwd.mkdir()) { + System.err.println("Could not set up work folder in " + cwd); } - } + } GALRewriter.flatten(spec, true); + ProblemSS p = new ProblemSS(tool, cwd); + p.configure(spec, 35000); - return new Problem(spec,tool,35000,cwd); + return p; } - - + // On produit un fichier de modèle pour l'outil ligne de commande - public CommandLine getCmdLine(Specification spec, String cwd, String modelName,Tool tool) throws IOException{ - - String outpath = cwd+"/"+ modelName + ".gal"; - outputGalFile(spec, outpath); - + public CommandLine getCmdLine(Specification spec, String cwd, String modelName, Tool tool) throws IOException { + + String outpath = cwd + "/" + modelName + ".gal"; + outputGalFile(spec, outpath); + CommandLine cl = buildCommandLine(outpath, tool); - + if (tool == Tool.reach) { - spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof SafetyProp) ); - String proppath = cwd + "/" +modelName +".prop"; + spec.getProperties().removeIf((p) -> !(p.getBody() instanceof SafetyProp)); + String proppath = cwd + "/" + modelName + ".prop"; SerializationUtil.serializePropertiesForITSTools(outpath, spec.getProperties(), proppath); cl.addArg("-reachable-file"); cl.addArg(proppath); // cl.addArg("--stats"); } else if (tool == Tool.ctl) { - spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof CTLProp) ); - String proppath = cwd + "/" +modelName +".ctl"; + spec.getProperties().removeIf((p) -> !(p.getBody() instanceof CTLProp)); + String proppath = cwd + "/" + modelName + ".ctl"; SerializationUtil.serializePropertiesForITSCTLTools(outpath, spec.getProperties(), proppath); cl.addArg("-ctl"); cl.addArg(proppath); } else if (tool == Tool.ltl) { - spec.getProperties().removeIf( (p) -> ! (p.getBody() instanceof LTLProp) ); - String proppath = cwd + "/" +modelName +".ltl"; + spec.getProperties().removeIf((p) -> !(p.getBody() instanceof LTLProp)); + String proppath = cwd + "/" + modelName + ".ltl"; SerializationUtil.serializePropertiesForITSLTLTools(outpath, spec.getProperties(), proppath); cl.addArg("-LTL"); - cl.addArg(proppath); + cl.addArg(proppath); cl.addArg("-c"); cl.addArg("-stutter-deadlock"); } if (cl != null) { cl.setWorkingDir(new File(cwd)); } - + return cl; } - - + public void outputGalFile(Specification spec, String outpath) throws IOException { - if (! spec.getProperties().isEmpty()) { + if (!spec.getProperties().isEmpty()) { List props = new ArrayList(spec.getProperties()); spec.getProperties().clear(); SerializationUtil.systemToFile(spec, outpath); @@ -193,7 +192,7 @@ public void outputGalFile(Specification spec, String outpath) throws IOException SerializationUtil.systemToFile(spec, outpath); } } - + private CommandLine buildCommandLine(String modelff, Tool tool) throws IOException { CommandLineBuilder cl = new CommandLineBuilder(tool); cl.setModelFile(modelff); @@ -201,12 +200,10 @@ private CommandLine buildCommandLine(String modelff, Tool tool) throws IOExcepti return cl.getCommandLine(); } - - public void stop() { exec.shutdown(); if (!exec.isShutdown()) System.out.println("Problem to shutdown executor of runners"); } - + } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index d47f033..7b707e6 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -1,28 +1,23 @@ package fr.lip6.move.gal.itscl.application; - - import fr.lip6.move.gal.itstools.CommandLine; -public class ItsSolver { - +public abstract class ItsSolver implements ISolverSeq { + private final CommandLine cl; - protected final Problem p; - - public ItsSolver(Problem p,CommandLine cl){ - this.cl=cl; - this.p=p; + protected final ProblemSS p; + + public ItsSolver(ProblemSS p, CommandLine cl) { + this.cl = cl; + this.p = p; } public CommandLine getCmd() { return cl; } - - public Problem getProblem(){ + + public ProblemSS getProblem() { return p; } - - - } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java similarity index 54% rename from fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java rename to fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java index 33dde2b..e53ed67 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Problem.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java @@ -3,25 +3,26 @@ import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; -public class Problem implements IProblem{ +public class ProblemSS extends Problem { - private Specification spec; - private final Tool tool; - private int timeout; + private Tool tool; private String folder; + private int timeout; + + public ProblemSS(Tool tool, String folder) { + this.tool = tool; + this.folder = folder; + } - - public Problem(Specification spec, Tool tool,int timeout, String folder) { + public void configure(Specification spec, int timeout) { this.spec = spec; - this.tool= tool; - this.timeout= timeout; - this.folder= folder; + this.timeout = timeout; } - public Specification getSpec() { - return spec; + public Tool getTool() { + return tool; } - + public String getFolder() { return folder; } @@ -30,15 +31,4 @@ public int getTimeout() { return timeout; } - public Tool getTool() { - return tool; - } - - - - - - - - } \ No newline at end of file diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 77ecad5..58e66d3 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -9,24 +9,19 @@ import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; -public class SolverSeq extends ItsSolver implements ISolverSeq { +public class SolverSeq extends ItsSolver { private ByteArrayOutputStream baos = new ByteArrayOutputStream(); private String output; - public SolverSeq(Problem p, CommandLine cl) { + public SolverSeq(ProblemSS p, CommandLine cl) { super(p, cl); } - public void currentState() { - System.out.println(baos.toString()); - } - public int isComplete() { return output.contains("Error") ? 1 : 0; } - @Override public Integer call() { try { diff --git a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF index 82ee635..d6b9974 100644 --- a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF @@ -5,6 +5,7 @@ Bundle-SymbolicName: fr.lip6.move.gal.itscl.concurrent Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 Export-Package: fr.lip6.move.gal.itscl.adaptapplication, + fr.lip6.move.gal.itscl.adaptor, fr.lip6.move.gal.itscl.application Import-Package: fr.lip6.move.gal Bundle-Version: 1.0.0.qualifier diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java index 274b079..104f927 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java @@ -12,8 +12,6 @@ public Adapter(IRunner r) { } public int isComplete() { - System.out.println("Solved by :"+this.getClass().getName()); - return runner.taskDone() ? 0 : 1; } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java index d330ec8..b578262 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java @@ -5,4 +5,7 @@ public interface IProblem { public Specification getSpec(); + + public void configure(Specification spec); + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Problem.java new file mode 100644 index 0000000..ff86250 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Problem.java @@ -0,0 +1,17 @@ +package fr.lip6.move.gal.itscl.application; + +import fr.lip6.move.gal.Specification; + +public abstract class Problem implements IProblem { + + protected Specification spec; + + public void configure(Specification spec) { + this.spec = spec; + } + + public Specification getSpec() { + return spec; + } + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index d7a8c91..e82d44f 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -26,24 +26,29 @@ public void detach(ISolverSeq o) { obs.remove(o); } - @Override public void killAll() { - @SuppressWarnings("unused") - List notFinished = executor.shutdownNow(); // savoir qui a - // fini ? + List notFinished = executor.shutdownNow(); // savoir qui a fini + for (Runnable r : notFinished) { + System.out.println(r); + + } for (Future o : fsolvers) { if (!o.isCancelled() || !o.isDone()) { // Erreur un thread n'a pas ete shutdown o.cancel(true); + System.out.println("i pass hiiieree why soo"); + } } } public Boolean call() { - CompletionService completionService = new ExecutorCompletionService(executor); + CompletionService completionService = new ExecutorCompletionService(executor); +// fsolvers = executor.invokeAll(obs); //execute les solvers et renvoie les futures dans l'ordre qui a ete donné dans obs + for (ISolverSeq o : obs) { fsolvers.add(completionService.submit(o)); } @@ -55,7 +60,6 @@ public Boolean call() { Future solverDone = completionService.take(); if (solverDone.isDone() && solverDone.get() == 0) { - System.out.println("Solved by : " + solverDone.getClass()); killAll(); return true; } From 3439f6bd087f97ba4d6bef34cc3b819bd4f3268d Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Wed, 14 Jun 2017 16:59:04 +0200 Subject: [PATCH 44/60] other algo for observable using wait --- .../itscl/application/SolverObservable.java | 61 +++++++++++++------ 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index e82d44f..49fb4be 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -27,7 +27,8 @@ public void detach(ISolverSeq o) { } public void killAll() { - List notFinished = executor.shutdownNow(); // savoir qui a fini + List notFinished = executor.shutdownNow(); // savoir qui a + // fini for (Runnable r : notFinished) { System.out.println(r); @@ -46,33 +47,59 @@ public void killAll() { public Boolean call() { - CompletionService completionService = new ExecutorCompletionService(executor); -// fsolvers = executor.invokeAll(obs); //execute les solvers et renvoie les futures dans l'ordre qui a ete donné dans obs - + // CompletionService completionService = new + // ExecutorCompletionService(executor); + + // execute les solvers et renvoie les futures dans l'ordre qui a ete + // donné dans obs + try { + fsolvers = executor.invokeAll(obs); + } catch (InterruptedException e) { + e.printStackTrace(); + } + for (ISolverSeq o : obs) { - fsolvers.add(completionService.submit(o)); + fsolvers.add(executor.submit(o)); } - int nbSolver = obs.size(), i = 0; + int nbSolver = fsolvers.size(), i = 0; + + try { - do { - try { + this.wait(); - Future solverDone = completionService.take(); - if (solverDone.isDone() && solverDone.get() == 0) { + for (i = 0; i < nbSolver; i++) { + Future f = fsolvers.get(i); + + if (f.isDone() && f.get() == 0) { killAll(); - return true; + break; } - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (ExecutionException ee) { - ee.printStackTrace(); - return false; } - } while (++i < nbSolver); + } catch (InterruptedException | ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } System.out.println("Problem not solved"); return false; } + // do { + // try { + // + // this.wait(); + // Future solverDone = executor.take(); + // if (solverDone.isDone() && solverDone.get() == 0) { + // killAll(); + // return true; + // } + // } catch (InterruptedException e) { + // e.printStackTrace(); + // } catch (ExecutionException ee) { + // ee.printStackTrace(); + // return false; + // } + // } while (++i < nbSolver); + } From ddaebe03a77a9a84286d57f3033bde02bdd233ac Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Thu, 15 Jun 2017 15:35:12 +0200 Subject: [PATCH 45/60] fixing termination of running threads --- .../lip6/move/gal/itscl/adaptor/Adapter.java | 1 - .../itscl/application/SolverObservable.java | 81 +++++++------------ 2 files changed, 27 insertions(+), 55 deletions(-) diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java index 104f927..98531a6 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java @@ -18,7 +18,6 @@ public int isComplete() { public Integer call() throws Exception { runner.solve(); - return isComplete(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index 49fb4be..9b02c2e 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -19,87 +19,60 @@ public class SolverObservable implements ISolverObservable { public void attach(ISolverSeq o) { obs.add(o); - } public void detach(ISolverSeq o) { obs.remove(o); } + @SuppressWarnings("unused") public void killAll() { List notFinished = executor.shutdownNow(); // savoir qui a - // fini - for (Runnable r : notFinished) { - System.out.println(r); - - } - + // fini ? for (Future o : fsolvers) { - if (!o.isCancelled() || !o.isDone()) { - // Erreur un thread n'a pas ete shutdown - o.cancel(true); - System.out.println("i pass hiiieree why soo"); - + try { + if (o.isDone() && o.get()==0) { + System.out.println("is donne"); + } else if (!o.isDone()) { + o.cancel(true); + System.out.println("na pas fini mais canceled "); + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); } + if(o.isCancelled()) + System.out.println("was canceled"); } } public Boolean call() { - - // CompletionService completionService = new - // ExecutorCompletionService(executor); - - // execute les solvers et renvoie les futures dans l'ordre qui a ete - // donné dans obs - try { - fsolvers = executor.invokeAll(obs); - } catch (InterruptedException e) { - e.printStackTrace(); - } + CompletionService completionService = new ExecutorCompletionService(executor); for (ISolverSeq o : obs) { - fsolvers.add(executor.submit(o)); + fsolvers.add(completionService.submit(o)); } - int nbSolver = fsolvers.size(), i = 0; - - try { + int nbSolver = obs.size(), i = 0; - this.wait(); + do { + try { - for (i = 0; i < nbSolver; i++) { - Future f = fsolvers.get(i); - - if (f.isDone() && f.get() == 0) { + Future solverDone = completionService.take(); + if (solverDone.isDone() && solverDone.get() == 0) { killAll(); - break; + return true; } + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException ee) { + ee.printStackTrace(); + return false; } - } catch (InterruptedException | ExecutionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + } while (++i < nbSolver); System.out.println("Problem not solved"); return false; } - // do { - // try { - // - // this.wait(); - // Future solverDone = executor.take(); - // if (solverDone.isDone() && solverDone.get() == 0) { - // killAll(); - // return true; - // } - // } catch (InterruptedException e) { - // e.printStackTrace(); - // } catch (ExecutionException ee) { - // ee.printStackTrace(); - // return false; - // } - // } while (++i < nbSolver); - } From dc5841b3e3b9dadd5febfc1af10f6ff2723ccc2b Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 16 Jun 2017 15:43:42 +0200 Subject: [PATCH 46/60] before fixing its --- .../move/gal/itscl/application/SolverSeq.java | 2 +- .../lip6/move/gal/itscl/adaptor/Adapter.java | 3 +- .../move/gal/itscl/application/IResultP.java | 2 ++ .../move/gal/itscl/application/ResultP.java | 7 +++- .../itscl/application/SolverObservable.java | 36 +++++++++---------- 5 files changed, 29 insertions(+), 21 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 58e66d3..fcae5db 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -19,7 +19,7 @@ public SolverSeq(ProblemSS p, CommandLine cl) { } public int isComplete() { - return output.contains("Error") ? 1 : 0; + return output.contains("Error") ? ResultP.KO : ResultP.OK; } public Integer call() { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java index 98531a6..085a0f3 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java @@ -16,8 +16,9 @@ public int isComplete() { } public Integer call() throws Exception { - +// try{ runner.solve(); +// }catch() return isComplete(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java index 21d476a..772ea3b 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java @@ -1,5 +1,7 @@ package fr.lip6.move.gal.itscl.application; public interface IResultP { + + public boolean isOK(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java index 2a76229..b891321 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java @@ -11,7 +11,6 @@ public ResultP(int res) { this.res = res; } - @Override public String toString() { if (res == OK) return "DONE " + String.valueOf(res); @@ -22,4 +21,10 @@ public String toString() { public boolean isOK() { return (res == OK) ? true : false; } + + public boolean isUnknown(){ + return res==UNKNOWN? true:false; + } + + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index 9b02c2e..b0147d2 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -25,28 +25,28 @@ public void detach(ISolverSeq o) { obs.remove(o); } - @SuppressWarnings("unused") public void killAll() { List notFinished = executor.shutdownNow(); // savoir qui a - // fini ? + if (notFinished == null) { + System.out.println("ts ont fini");// fini + } + + // try { + // executor.awaitTermination(35000, TimeUnit.MILLISECONDS); + // } catch (InterruptedException e) { + // System.out.println("timeout elapsed before termination"); + // } + for (Future o : fsolvers) { - try { - if (o.isDone() && o.get()==0) { - System.out.println("is donne"); - } else if (!o.isDone()) { - o.cancel(true); - System.out.println("na pas fini mais canceled "); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); + if (!o.isDone()) { + o.cancel(true); + System.out.println("na pas fini mais canceled "); } - if(o.isCancelled()) - System.out.println("was canceled"); - } } public Boolean call() { + CompletionService completionService = new ExecutorCompletionService(executor); for (ISolverSeq o : obs) { @@ -57,17 +57,17 @@ public Boolean call() { do { try { - + // waiting for the first solver to terminate Future solverDone = completionService.take(); + // Test if it has completed with no error if (solverDone.isDone() && solverDone.get() == 0) { killAll(); return true; } - } catch (InterruptedException e) { + } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); - } catch (ExecutionException ee) { - ee.printStackTrace(); return false; + } } while (++i < nbSolver); From 68019f86e274333c6fb8f24598bd7d0af8845969 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Mon, 19 Jun 2017 15:45:51 +0200 Subject: [PATCH 47/60] new listener i/o --- .../lip6/move/gal/itscl/adaptor/Adapter.java | 2 - .../move/gal/itscl/application/IListener.java | 8 ++++ .../move/gal/itscl/application/Listener.java | 44 +++++++++++++++++-- .../itscl/application/SolverObservable.java | 9 +--- 4 files changed, 50 insertions(+), 13 deletions(-) diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java index 085a0f3..ad6dfea 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java @@ -16,9 +16,7 @@ public int isComplete() { } public Integer call() throws Exception { -// try{ runner.solve(); -// }catch() return isComplete(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java index 2957368..f44a352 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java @@ -1,5 +1,13 @@ package fr.lip6.move.gal.itscl.application; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; + public interface IListener { + + public PipedOutputStream getPout(); + public PipedInputStream getPin(); + public void closePinPout(); + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java index a0d45ab..4218d1f 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java @@ -1,7 +1,45 @@ package fr.lip6.move.gal.itscl.application; -public class Listener implements IListener{ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; + +public class Listener implements IListener { + protected final PipedInputStream pin; + + protected PipedOutputStream pout = null; + protected BufferedReader in; + + public Listener(int pipeSize) { + + this.pin = new PipedInputStream(pipeSize); + try { + this.pout = new PipedOutputStream(pin); + } catch (IOException e1) { + e1.printStackTrace(); + } + this.in = new BufferedReader(new InputStreamReader(pin)); + + } + + public PipedOutputStream getPout() { + return pout; + } + + public PipedInputStream getPin() { + return pin; + } + + public void closePinPout() { + try { + pin.close(); + pout.close(); + } catch (IOException e) { + System.out.println("Problemo uno fermento dilistener"); + e.printStackTrace(); + } + } - - } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java index b0147d2..473a83a 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java @@ -31,16 +31,9 @@ public void killAll() { System.out.println("ts ont fini");// fini } - // try { - // executor.awaitTermination(35000, TimeUnit.MILLISECONDS); - // } catch (InterruptedException e) { - // System.out.println("timeout elapsed before termination"); - // } - for (Future o : fsolvers) { if (!o.isDone()) { o.cancel(true); - System.out.println("na pas fini mais canceled "); } } } @@ -60,7 +53,7 @@ public Boolean call() { // waiting for the first solver to terminate Future solverDone = completionService.take(); // Test if it has completed with no error - if (solverDone.isDone() && solverDone.get() == 0) { + if (solverDone.get() == 0) { killAll(); return true; } From d647f35cde633ca53b21f8bfda892f3a4ac8a5d9 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Mon, 19 Jun 2017 16:15:18 +0200 Subject: [PATCH 48/60] up --- .../src/fr/lip6/move/gal/itscl/application/Application.java | 1 + .../src/fr/lip6/move/gal/itscl/application/ItsSolver.java | 1 + .../src/fr/lip6/move/gal/itscl/application/ProblemSS.java | 1 + .../src/fr/lip6/move/gal/itscl/application/SolverSeq.java | 1 + fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF | 2 +- .../move/gal/itscl/adaptapplication/InteractApplication.java | 4 ++-- .../src/fr/lip6/move/gal/itscl/adaptor/Adapter.java | 4 ++-- .../src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java | 2 +- .../src/fr/lip6/move/gal/itscl/adaptor/AdapterITS.java | 2 +- .../src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java | 2 +- .../src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java | 2 +- .../fr/lip6/move/gal/itscl/{application => modele}/Ender.java | 2 +- .../move/gal/itscl/{application => modele}/IListener.java | 2 +- .../lip6/move/gal/itscl/{application => modele}/IProblem.java | 2 +- .../lip6/move/gal/itscl/{application => modele}/IResultP.java | 2 +- .../lip6/move/gal/itscl/{application => modele}/IRunner.java | 2 +- .../gal/itscl/{application => modele}/ISolverObservable.java | 2 +- .../move/gal/itscl/{application => modele}/ISolverSeq.java | 2 +- .../lip6/move/gal/itscl/{application => modele}/Listener.java | 2 +- .../lip6/move/gal/itscl/{application => modele}/Problem.java | 2 +- .../lip6/move/gal/itscl/{application => modele}/ResultP.java | 2 +- .../gal/itscl/{application => modele}/SolverObservable.java | 2 +- 22 files changed, 24 insertions(+), 20 deletions(-) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/Ender.java (82%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/IListener.java (82%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/IProblem.java (77%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/IResultP.java (56%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/IRunner.java (88%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/ISolverObservable.java (81%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/ISolverSeq.java (74%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/Listener.java (95%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/Problem.java (85%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/ResultP.java (91%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{application => modele}/SolverObservable.java (97%) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 2fd8caf..0c9a782 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -17,6 +17,7 @@ import fr.lip6.move.gal.SafetyProp; import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.instantiate.GALRewriter; +import fr.lip6.move.gal.itscl.modele.SolverObservable; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.CommandLineBuilder; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index 7b707e6..062efd6 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -1,5 +1,6 @@ package fr.lip6.move.gal.itscl.application; +import fr.lip6.move.gal.itscl.modele.ISolverSeq; import fr.lip6.move.gal.itstools.CommandLine; public abstract class ItsSolver implements ISolverSeq { diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java index e53ed67..c68207a 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java @@ -1,6 +1,7 @@ package fr.lip6.move.gal.itscl.application; import fr.lip6.move.gal.Specification; +import fr.lip6.move.gal.itscl.modele.Problem; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; public class ProblemSS extends Problem { diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index fcae5db..28553a6 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -5,6 +5,7 @@ import org.eclipse.core.runtime.IStatus; +import fr.lip6.move.gal.itscl.modele.ResultP; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; diff --git a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF index d6b9974..77c677c 100644 --- a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF @@ -6,6 +6,6 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 Export-Package: fr.lip6.move.gal.itscl.adaptapplication, fr.lip6.move.gal.itscl.adaptor, - fr.lip6.move.gal.itscl.application + fr.lip6.move.gal.itscl.modele Import-Package: fr.lip6.move.gal Bundle-Version: 1.0.0.qualifier diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java index 98f4959..b11bcf2 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java @@ -1,8 +1,8 @@ package fr.lip6.move.gal.itscl.adaptapplication; import fr.lip6.move.gal.itscl.adaptor.Adapter; -import fr.lip6.move.gal.itscl.application.IRunner; -import fr.lip6.move.gal.itscl.application.ISolverSeq; +import fr.lip6.move.gal.itscl.modele.IRunner; +import fr.lip6.move.gal.itscl.modele.ISolverSeq; public class InteractApplication { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java index ad6dfea..53724f7 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java @@ -1,7 +1,7 @@ package fr.lip6.move.gal.itscl.adaptor; -import fr.lip6.move.gal.itscl.application.IRunner; -import fr.lip6.move.gal.itscl.application.ISolverSeq; +import fr.lip6.move.gal.itscl.modele.IRunner; +import fr.lip6.move.gal.itscl.modele.ISolverSeq; public class Adapter implements ISolverSeq { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java index 8e3450e..81d5594 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterCegar.java @@ -1,6 +1,6 @@ package fr.lip6.move.gal.itscl.adaptor; -import fr.lip6.move.gal.itscl.application.IRunner; +import fr.lip6.move.gal.itscl.modele.IRunner; public class AdapterCegar extends Adapter { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterITS.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterITS.java index 8cae896..b6a095c 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterITS.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterITS.java @@ -1,6 +1,6 @@ package fr.lip6.move.gal.itscl.adaptor; -import fr.lip6.move.gal.itscl.application.IRunner; +import fr.lip6.move.gal.itscl.modele.IRunner; public class AdapterITS extends Adapter { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java index c5a91d1..2e3491d 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterLTSmin.java @@ -1,6 +1,6 @@ package fr.lip6.move.gal.itscl.adaptor; -import fr.lip6.move.gal.itscl.application.IRunner; +import fr.lip6.move.gal.itscl.modele.IRunner; public class AdapterLTSmin extends Adapter { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java index 013f440..ea3f094 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterSMTR.java @@ -1,6 +1,6 @@ package fr.lip6.move.gal.itscl.adaptor; -import fr.lip6.move.gal.itscl.application.IRunner; +import fr.lip6.move.gal.itscl.modele.IRunner; public class AdapterSMTR extends Adapter { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Ender.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Ender.java similarity index 82% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Ender.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Ender.java index 93e7050..50be400 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Ender.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Ender.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; /** * Something you tell when it's time to end it. diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java similarity index 82% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java index f44a352..50f7376 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IListener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; import java.io.PipedInputStream; import java.io.PipedOutputStream; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java similarity index 77% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java index b578262..621289a 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IProblem.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; import fr.lip6.move.gal.Specification; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IResultP.java similarity index 56% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IResultP.java index 772ea3b..2c40af4 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IResultP.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IResultP.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; public interface IResultP { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java similarity index 88% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java index 54f6fc1..0a1f2b8 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; import java.io.IOException; import java.util.Set; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java similarity index 81% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java index e440a58..6786c63 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; import java.util.concurrent.Callable; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java similarity index 74% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java index a2c1fb0..22bed8c 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ISolverSeq.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; import java.util.concurrent.Callable; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java similarity index 95% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java index 4218d1f..e00486f 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Listener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; import java.io.BufferedReader; import java.io.IOException; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Problem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java similarity index 85% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Problem.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java index ff86250..bc2ff26 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/Problem.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; import fr.lip6.move.gal.Specification; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ResultP.java similarity index 91% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ResultP.java index b891321..861a504 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/ResultP.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ResultP.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; public class ResultP implements IResultP { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java similarity index 97% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java index 473a83a..58919bc 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/application/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.application; +package fr.lip6.move.gal.itscl.modele; import java.util.ArrayList; import java.util.HashSet; From 7a54a04c7708f7f6803e100ea89fe77e34387cea Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 20 Jun 2017 12:12:21 +0200 Subject: [PATCH 49/60] set Listener and fixe minor errors --- .../fr/lip6/move/gal/itscl/application/ItsSolver.java | 6 ++++++ .../fr/lip6/move/gal/itscl/application/SolverSeq.java | 10 ++++------ fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF | 3 +-- .../src/fr/lip6/move/gal/itscl/adaptor/Adapter.java | 4 ++-- .../InteractApplication.java | 3 +-- .../src/fr/lip6/move/gal/itscl/modele/IRunner.java | 2 +- .../src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java | 2 +- .../src/fr/lip6/move/gal/itscl/modele/Listener.java | 6 +++++- 8 files changed, 21 insertions(+), 15 deletions(-) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{adaptapplication => adaptor}/InteractApplication.java (68%) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index 062efd6..c16b80a 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -1,5 +1,6 @@ package fr.lip6.move.gal.itscl.application; +import fr.lip6.move.gal.itscl.modele.IListener; import fr.lip6.move.gal.itscl.modele.ISolverSeq; import fr.lip6.move.gal.itstools.CommandLine; @@ -7,11 +8,16 @@ public abstract class ItsSolver implements ISolverSeq { private final CommandLine cl; protected final ProblemSS p; + protected IListener listener; public ItsSolver(ProblemSS p, CommandLine cl) { this.cl = cl; this.p = p; } + + public void setListener(IListener l){ + this.listener=l; + } public CommandLine getCmd() { return cl; diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 28553a6..71d6e92 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -1,6 +1,5 @@ package fr.lip6.move.gal.itscl.application; -import java.io.ByteArrayOutputStream; import java.io.IOException; import org.eclipse.core.runtime.IStatus; @@ -12,14 +11,13 @@ public class SolverSeq extends ItsSolver { - private ByteArrayOutputStream baos = new ByteArrayOutputStream(); private String output; public SolverSeq(ProblemSS p, CommandLine cl) { super(p, cl); } - public int isComplete() { + public int hasComplete() { return output.contains("Error") ? ResultP.KO : ResultP.OK; } @@ -27,15 +25,15 @@ public Integer call() { try { IStatus status; - status = Runner.runTool(p.getTimeout(), getCmd(), baos, true); + status = Runner.runTool(p.getTimeout(), getCmd(), listener.getPout(), true); if (!status.isOK() && status.getCode() != 1) { throw new RuntimeException( "Unexpected exception when executing commandline :" + getCmd() + "\n" + status); } - output = baos.toString(); + output = listener.getPout().toString(); - return isComplete(); + return hasComplete(); } catch (IOException | TimeOutException e) { e.printStackTrace(); diff --git a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF index 77c677c..d216872 100644 --- a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF @@ -4,8 +4,7 @@ Bundle-Name: Concurrent Support for Portfolio Bundle-SymbolicName: fr.lip6.move.gal.itscl.concurrent Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 -Export-Package: fr.lip6.move.gal.itscl.adaptapplication, - fr.lip6.move.gal.itscl.adaptor, +Export-Package: fr.lip6.move.gal.itscl.adaptor, fr.lip6.move.gal.itscl.modele Import-Package: fr.lip6.move.gal Bundle-Version: 1.0.0.qualifier diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java index 53724f7..1d8f0f6 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/Adapter.java @@ -11,13 +11,13 @@ public Adapter(IRunner r) { this.runner = r; } - public int isComplete() { + public int hasComplete() { return runner.taskDone() ? 0 : 1; } public Integer call() throws Exception { runner.solve(); - return isComplete(); + return hasComplete(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/InteractApplication.java similarity index 68% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/InteractApplication.java index b11bcf2..7a656e0 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptapplication/InteractApplication.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/InteractApplication.java @@ -1,6 +1,5 @@ -package fr.lip6.move.gal.itscl.adaptapplication; +package fr.lip6.move.gal.itscl.adaptor; -import fr.lip6.move.gal.itscl.adaptor.Adapter; import fr.lip6.move.gal.itscl.modele.IRunner; import fr.lip6.move.gal.itscl.modele.ISolverSeq; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java index 0a1f2b8..17fe5de 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java @@ -13,7 +13,7 @@ public interface IRunner { public Specification getSpec(); - public Set doneProps(); + public Set getDoneProps(); public Boolean taskDone(); diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java index 22bed8c..35bd3a8 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java @@ -4,6 +4,6 @@ public interface ISolverSeq extends Callable { - public int isComplete(); + public int hasComplete(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java index e00486f..4a1a2dd 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java @@ -6,7 +6,7 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; -public class Listener implements IListener { +public class Listener implements IListener, Runnable { protected final PipedInputStream pin; protected PipedOutputStream pout = null; @@ -42,4 +42,8 @@ public void closePinPout() { } } + public void run() { + + } + } From 719731315052f426215d715db335b73592dffd0c Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Wed, 21 Jun 2017 10:14:29 +0200 Subject: [PATCH 50/60] fixe dependencies --- .../move/gal/itscl/application/Application.java | 13 +++++++++++-- .../lip6/move/gal/itscl/application/ProblemSS.java | 7 +++++++ .../META-INF/MANIFEST.MF | 2 +- fr.lip6.move.gal.itscl.concurrent/build.properties | 2 +- fr.lip6.move.gal.itscl.concurrent/pom.xml | 2 +- .../modele/{Listener.java => ListenerRunner.java} | 4 ++-- .../src/fr/lip6/move/gal/itscl/modele/Problem.java | 2 +- 7 files changed, 24 insertions(+), 8 deletions(-) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/{Listener.java => ListenerRunner.java} (89%) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index 0c9a782..b394acd 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -1,5 +1,6 @@ package fr.lip6.move.gal.itscl.application; + import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -101,7 +102,7 @@ public Object start(IApplicationContext context) throws Exception { Specification spec = SerializationUtil.fileToGalSystem(inputff); System.out.println( "Successfully read input file : " + inputff + " in " + (time - System.currentTimeMillis()) + " ms."); - + time = System.currentTimeMillis(); ProblemSS p = loadModel(pwd, spec, tool); System.out.println("Simplifications done in " + (time - System.currentTimeMillis()) + " ms."); @@ -145,7 +146,15 @@ public ProblemSS loadModel(String pwd, Specification spec, Tool tool) throws IOE return p; } - // On produit un fichier de modèle pour l'outil ligne de commande + /** + * // On produit un fichier de modèle pour l'outil ligne de commande + * @param spec + * @param cwd + * @param modelName + * @param tool + * @return + * @throws IOException + */ public CommandLine getCmdLine(Specification spec, String cwd, String modelName, Tool tool) throws IOException { String outpath = cwd + "/" + modelName + ".gal"; diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java index c68207a..5476ba4 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java @@ -32,4 +32,11 @@ public int getTimeout() { return timeout; } + @Override + public void configure(Specification spec) { + // one hour timeout by default + configure(spec, 3600); + + } + } \ No newline at end of file diff --git a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF index d216872..fb3e78a 100644 --- a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF @@ -6,5 +6,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 Export-Package: fr.lip6.move.gal.itscl.adaptor, fr.lip6.move.gal.itscl.modele -Import-Package: fr.lip6.move.gal Bundle-Version: 1.0.0.qualifier +Require-Bundle: fr.lip6.move.gal;bundle-version="1.0.0" diff --git a/fr.lip6.move.gal.itscl.concurrent/build.properties b/fr.lip6.move.gal.itscl.concurrent/build.properties index 34d2e4d..5b359b5 100644 --- a/fr.lip6.move.gal.itscl.concurrent/build.properties +++ b/fr.lip6.move.gal.itscl.concurrent/build.properties @@ -1,4 +1,4 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ - . + . \ No newline at end of file diff --git a/fr.lip6.move.gal.itscl.concurrent/pom.xml b/fr.lip6.move.gal.itscl.concurrent/pom.xml index 72a6754..b66ad71 100644 --- a/fr.lip6.move.gal.itscl.concurrent/pom.xml +++ b/fr.lip6.move.gal.itscl.concurrent/pom.xml @@ -13,4 +13,4 @@ Extensions :: Concurent Features for Portfolio Portfolio support classes and interfaces. - + \ No newline at end of file diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java similarity index 89% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java index 4a1a2dd..6b4e66c 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Listener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java @@ -6,13 +6,13 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; -public class Listener implements IListener, Runnable { +public class ListenerRunner implements IListener, Runnable { protected final PipedInputStream pin; protected PipedOutputStream pout = null; protected BufferedReader in; - public Listener(int pipeSize) { + public ListenerRunner(int pipeSize) { this.pin = new PipedInputStream(pipeSize); try { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java index bc2ff26..9efb739 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java @@ -6,7 +6,7 @@ public abstract class Problem implements IProblem { protected Specification spec; - public void configure(Specification spec) { + public void configue(Specification spec) { this.spec = spec; } From 0f5c1232f4f78f90f37eb0a5b687bd905bee76be Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 23 Jun 2017 11:58:26 +0200 Subject: [PATCH 51/60] starting commenting and reorganize the project --- .../move/gal/itscl/application/ProblemSS.java | 9 ++----- .../lip6/move/gal/itscl/modele/IListener.java | 3 ++- .../lip6/move/gal/itscl/modele/IProblem.java | 12 +++++++++ .../lip6/move/gal/itscl/modele/IRunner.java | 14 +++------- .../gal/itscl/modele/ISolverObservable.java | 7 ++++- .../move/gal/itscl/modele/ListenerRunner.java | 5 +--- .../lip6/move/gal/itscl/modele/Problem.java | 26 ++++++++++++++++--- .../gal/itscl/modele/SolverObservable.java | 22 +++++++++++----- 8 files changed, 63 insertions(+), 35 deletions(-) diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java index 5476ba4..f085f8b 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java @@ -19,7 +19,7 @@ public void configure(Specification spec, int timeout) { this.spec = spec; this.timeout = timeout; } - + public Tool getTool() { return tool; } @@ -32,11 +32,6 @@ public int getTimeout() { return timeout; } - @Override - public void configure(Specification spec) { - // one hour timeout by default - configure(spec, 3600); - - } + } \ No newline at end of file diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java index 50f7376..a80b335 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java @@ -2,8 +2,9 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; +import java.util.concurrent.Callable; -public interface IListener { +public interface IListener extends Callable{ public PipedOutputStream getPout(); public PipedInputStream getPin(); diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java index 621289a..41195b6 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java @@ -1,11 +1,23 @@ package fr.lip6.move.gal.itscl.modele; +import java.io.IOException; +import java.util.Set; + import fr.lip6.move.gal.Specification; + public interface IProblem { public Specification getSpec(); + public Set getDoneProps(); + + /** + * configure spec and initialize doneProps attribute to an empty keySet + */ public void configure(Specification spec); + + public void configure(Specification z3Spec, Set doneProps) throws IOException; + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java index 17fe5de..19f8844 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java @@ -1,20 +1,12 @@ package fr.lip6.move.gal.itscl.modele; -import java.io.IOException; -import java.util.Set; -import fr.lip6.move.gal.Specification; - -public interface IRunner { - - public void configure(Specification z3Spec, Set doneProps) throws IOException; +public interface IRunner extends IProblem{ public void solve(); - public Specification getSpec(); - - public Set getDoneProps(); - public Boolean taskDone(); + + public void setInterpreter(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java index 6786c63..1867ae5 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java @@ -1,7 +1,12 @@ package fr.lip6.move.gal.itscl.modele; import java.util.concurrent.Callable; - +/** + * Add/remove solvers to a specific list + * It extends the Interface : + * Callable : to be able to run the list of solvers + * Ender : manages the termination of solvers + */ public interface ISolverObservable extends Callable, Ender { public void attach(ISolverSeq obs); diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java index 6b4e66c..8dde942 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java @@ -6,7 +6,7 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; -public class ListenerRunner implements IListener, Runnable { +public abstract class ListenerRunner implements IListener { protected final PipedInputStream pin; protected PipedOutputStream pout = null; @@ -42,8 +42,5 @@ public void closePinPout() { } } - public void run() { - - } } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java index 9efb739..ecfd673 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java @@ -1,17 +1,35 @@ package fr.lip6.move.gal.itscl.modele; +import java.io.IOException; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + import fr.lip6.move.gal.Specification; public abstract class Problem implements IProblem { protected Specification spec; - - public void configue(Specification spec) { - this.spec = spec; - } + protected Set doneProps; public Specification getSpec() { return spec; } + public Set getDoneProps() { + return doneProps; + } + + public void configure(Specification z3Spec, Set doneProps) throws IOException { + this.spec = z3Spec; + this.doneProps = doneProps; + } + + public void configure(Specification spec) { + try { + configure(spec, ConcurrentHashMap.newKeySet()); + } catch (IOException e) { + e.printStackTrace(); + } + } + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java index 58919bc..35d98d2 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java @@ -20,17 +20,20 @@ public class SolverObservable implements ISolverObservable { public void attach(ISolverSeq o) { obs.add(o); } - + public void detach(ISolverSeq o) { obs.remove(o); } + /** + * Shutdown all threads that still running + * assure that they really been canceled + */ public void killAll() { List notFinished = executor.shutdownNow(); // savoir qui a if (notFinished == null) { - System.out.println("ts ont fini");// fini + System.out.println("they all complete");// fini } - for (Future o : fsolvers) { if (!o.isDone()) { o.cancel(true); @@ -38,12 +41,17 @@ public void killAll() { } } + /** + * wait till a solver has finished + * if it done completely the task : kill other solvers + * if not repeat the process + */ public Boolean call() { - CompletionService completionService = new ExecutorCompletionService(executor); - + CompletionService runSolvers = new ExecutorCompletionService(executor); + for (ISolverSeq o : obs) { - fsolvers.add(completionService.submit(o)); + fsolvers.add(runSolvers.submit(o)); } int nbSolver = obs.size(), i = 0; @@ -51,7 +59,7 @@ public Boolean call() { do { try { // waiting for the first solver to terminate - Future solverDone = completionService.take(); + Future solverDone = runSolvers.take(); // Test if it has completed with no error if (solverDone.get() == 0) { killAll(); From e8c07177915b9514d9519d187535742f130e5cfa Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 23 Jun 2017 16:12:13 +0200 Subject: [PATCH 52/60] wrong impl listener I/O --- .../itscl/modele/IInterpreteObservable.java | 9 ++++ .../lip6/move/gal/itscl/modele/IListener.java | 10 +---- .../lip6/move/gal/itscl/modele/IProblem.java | 7 --- .../lip6/move/gal/itscl/modele/IRunner.java | 16 +++++-- .../gal/itscl/modele/ISolverObservable.java | 8 ++-- .../itscl/modele/InterpreteObservable.java | 44 +++++++++++++++++++ ...istenerRunner.java => ItsInterpreter.java} | 18 +++++--- .../lip6/move/gal/itscl/modele/Problem.java | 28 ------------ .../gal/itscl/modele/SolverObservable.java | 27 ++++++++---- 9 files changed, 103 insertions(+), 64 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/{ListenerRunner.java => ItsInterpreter.java} (70%) diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java new file mode 100644 index 0000000..72aec95 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java @@ -0,0 +1,9 @@ +package fr.lip6.move.gal.itscl.modele; + +import java.util.concurrent.Callable; + +public interface IInterpreteObservable extends Ender, Callable { + public void attach(IListener o); + + public void detach(IListener o); +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java index a80b335..30fcd6b 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java @@ -1,14 +1,8 @@ package fr.lip6.move.gal.itscl.modele; -import java.io.PipedInputStream; -import java.io.PipedOutputStream; import java.util.concurrent.Callable; -public interface IListener extends Callable{ +public interface IListener extends Callable{ - public PipedOutputStream getPout(); - public PipedInputStream getPin(); - public void closePinPout(); - - + public void setBuffWriterInOut(ItsInterpreter b); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java index 41195b6..da5027a 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java @@ -1,6 +1,5 @@ package fr.lip6.move.gal.itscl.modele; -import java.io.IOException; import java.util.Set; import fr.lip6.move.gal.Specification; @@ -12,12 +11,6 @@ public interface IProblem { public Set getDoneProps(); - /** - * configure spec and initialize doneProps attribute to an empty keySet - */ - public void configure(Specification spec); - - public void configure(Specification z3Spec, Set doneProps) throws IOException; } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java index 19f8844..c08c9bd 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java @@ -1,12 +1,22 @@ package fr.lip6.move.gal.itscl.modele; +import java.io.IOException; +import java.util.Set; -public interface IRunner extends IProblem{ +import fr.lip6.move.gal.Specification; + +public interface IRunner { + + /** + * configure spec and initialize doneProps attribute to an empty keySet + */ + public void configure(Specification spec); + + public void configure(Specification z3Spec, Set doneProps) throws IOException; public void solve(); public Boolean taskDone(); - - public void setInterpreter(); + public IListener getInterpreter(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java index 1867ae5..0517e14 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java @@ -1,11 +1,11 @@ package fr.lip6.move.gal.itscl.modele; import java.util.concurrent.Callable; + /** - * Add/remove solvers to a specific list - * It extends the Interface : - * Callable : to be able to run the list of solvers - * Ender : manages the termination of solvers + * Add/remove solvers to a specific list. It extends Callable : + * to be able to run the list of solvers and Ender : manages the termination of + * the solvers */ public interface ISolverObservable extends Callable, Ender { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java new file mode 100644 index 0000000..86ea58e --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java @@ -0,0 +1,44 @@ +package fr.lip6.move.gal.itscl.modele; + +import java.util.Set; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public class InterpreteObservable implements IInterpreteObservable { + private Set interp; + private ExecutorService execInterp = Executors.newCachedThreadPool(); + + public void attach(IListener o) { + interp.add(o); + } + + public void detach(IListener o) { + interp.remove(o); + } + + public void killAll() { + execInterp.shutdown(); + try { + if (execInterp.awaitTermination(5, TimeUnit.MINUTES)) + System.out.println("Interpreters are done !"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } + + public Boolean call() throws Exception { + + try { + execInterp.invokeAll(interp); + this.wait(); + killAll(); + return true; + } catch (InterruptedException e1) { + System.out.println("Interpreter don't terminate well"); + return false; + } + + } +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java similarity index 70% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java index 8dde942..1bfc3bc 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ListenerRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java @@ -6,15 +6,16 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; -public abstract class ListenerRunner implements IListener { - protected final PipedInputStream pin; +public class ItsInterpreter { + private final PipedInputStream pin; - protected PipedOutputStream pout = null; - protected BufferedReader in; + private PipedOutputStream pout = null; + private BufferedReader in; - public ListenerRunner(int pipeSize) { + public ItsInterpreter(int pipeSize) { this.pin = new PipedInputStream(pipeSize); + try { this.pout = new PipedOutputStream(pin); } catch (IOException e1) { @@ -32,6 +33,10 @@ public PipedInputStream getPin() { return pin; } + public String readLine() throws IOException { + return in.readLine(); + } + public void closePinPout() { try { pin.close(); @@ -42,5 +47,8 @@ public void closePinPout() { } } + public void closeIn() throws IOException { + in.close(); + } } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java index ecfd673..ce6c11f 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java @@ -1,35 +1,7 @@ package fr.lip6.move.gal.itscl.modele; -import java.io.IOException; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import fr.lip6.move.gal.Specification; public abstract class Problem implements IProblem { - protected Specification spec; - protected Set doneProps; - - public Specification getSpec() { - return spec; - } - - public Set getDoneProps() { - return doneProps; - } - - public void configure(Specification z3Spec, Set doneProps) throws IOException { - this.spec = z3Spec; - this.doneProps = doneProps; - } - - public void configure(Specification spec) { - try { - configure(spec, ConcurrentHashMap.newKeySet()); - } catch (IOException e) { - e.printStackTrace(); - } - } } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java index 35d98d2..e121c44 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java @@ -10,26 +10,29 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; public class SolverObservable implements ISolverObservable { private Set obs = new HashSet<>(); private List> fsolvers = new ArrayList>(); private ExecutorService executor = Executors.newCachedThreadPool(); - + private InterpreteObservable interp; + public void attach(ISolverSeq o) { obs.add(o); } - + public void detach(ISolverSeq o) { obs.remove(o); } /** - * Shutdown all threads that still running - * assure that they really been canceled + * Shutdown all threads that still running assure that they really been + * canceled call method to kill the interpreters of each runner */ public void killAll() { + List notFinished = executor.shutdownNow(); // savoir qui a if (notFinished == null) { System.out.println("they all complete");// fini @@ -39,21 +42,28 @@ public void killAll() { o.cancel(true); } } + + interp.notify(); } /** - * wait till a solver has finished - * if it done completely the task : kill other solvers - * if not repeat the process + * wait a least five minutes till all interpeters have terminate + */ + + + /** + * wait till a solver has finish. if it done completely the task : kill all + * the solvers and their interpreters, if not : repeat the process */ public Boolean call() { CompletionService runSolvers = new ExecutorCompletionService(executor); - + for (ISolverSeq o : obs) { fsolvers.add(runSolvers.submit(o)); } + int nbSolver = obs.size(), i = 0; do { @@ -72,7 +82,6 @@ public Boolean call() { } } while (++i < nbSolver); - System.out.println("Problem not solved"); return false; } From d4841e7364b0bcded714e6e9b5b076394c76bd13 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 23 Jun 2017 17:50:24 +0200 Subject: [PATCH 53/60] reorder the struct of interprete observable --- .../src/fr/lip6/move/gal/itscl/modele/IListener.java | 1 - .../src/fr/lip6/move/gal/itscl/modele/IRunner.java | 1 - .../src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java | 7 +++++-- .../fr/lip6/move/gal/itscl/modele/SolverObservable.java | 1 - 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java index 30fcd6b..6836851 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java @@ -4,5 +4,4 @@ public interface IListener extends Callable{ - public void setBuffWriterInOut(ItsInterpreter b); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java index c08c9bd..97373a1 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java @@ -18,5 +18,4 @@ public interface IRunner { public Boolean taskDone(); - public IListener getInterpreter(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java index 1bfc3bc..ecabc3e 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java @@ -2,7 +2,9 @@ import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; +import java.io.OutputStream; import java.io.PipedInputStream; import java.io.PipedOutputStream; @@ -12,9 +14,9 @@ public class ItsInterpreter { private PipedOutputStream pout = null; private BufferedReader in; - public ItsInterpreter(int pipeSize) { + public ItsInterpreter() { - this.pin = new PipedInputStream(pipeSize); + this.pin = new PipedInputStream(4096); try { this.pout = new PipedOutputStream(pin); @@ -24,6 +26,7 @@ public ItsInterpreter(int pipeSize) { this.in = new BufferedReader(new InputStreamReader(pin)); } + public PipedOutputStream getPout() { return pout; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java index e121c44..7ee28ef 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java @@ -10,7 +10,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; public class SolverObservable implements ISolverObservable { From 912dd3df6f316223ad4693a2c4de1804143ec4ad Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Mon, 26 Jun 2017 16:20:52 +0200 Subject: [PATCH 54/60] snc executors (solvers and interpreters --- .../itscl/modele/IInterpreteObservable.java | 6 +-- .../lip6/move/gal/itscl/modele/IRunner.java | 2 + .../gal/itscl/modele/ISolverObservable.java | 1 + .../itscl/modele/InterpreteObservable.java | 44 +++++++++---------- .../move/gal/itscl/modele/ItsInterpreter.java | 10 ++--- .../gal/itscl/modele/SolverObservable.java | 28 +++++------- .../move/gal/itscl/modele/Synchronizer.java | 25 +++++++++++ 7 files changed, 68 insertions(+), 48 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Synchronizer.java diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java index 72aec95..7d3bfb9 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java @@ -1,9 +1,7 @@ package fr.lip6.move.gal.itscl.modele; -import java.util.concurrent.Callable; -public interface IInterpreteObservable extends Ender, Callable { - public void attach(IListener o); +public interface IInterpreteObservable extends Ender, Runnable { + public void launchInterprete(IListener o); - public void detach(IListener o); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java index 97373a1..a08595d 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java @@ -16,6 +16,8 @@ public interface IRunner { public void solve(); + public void setInterprete(InterpreteObservable ob); + public Boolean taskDone(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java index 0517e14..e1b8a4b 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java @@ -12,5 +12,6 @@ public interface ISolverObservable extends Callable, Ender { public void attach(ISolverSeq obs); public void detach(ISolverSeq obs); + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java index 86ea58e..e3b99be 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java @@ -1,44 +1,44 @@ package fr.lip6.move.gal.itscl.modele; -import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class InterpreteObservable implements IInterpreteObservable { - private Set interp; private ExecutorService execInterp = Executors.newCachedThreadPool(); + private Synchronizer sync; - public void attach(IListener o) { - interp.add(o); + public InterpreteObservable(Synchronizer sync) { + this.sync = sync; } - public void detach(IListener o) { - interp.remove(o); + public void launchInterprete(IListener o) { + execInterp.submit(o); } - + + /** + * wait a least five minutes till all interpreters have terminate + */ public void killAll() { execInterp.shutdown(); + while (!execInterp.isShutdown()) { + try { + execInterp.awaitTermination(5, TimeUnit.MINUTES); + } catch (InterruptedException e){ + System.out.println("Timeout waiting for interpreters to finish "); + e.printStackTrace(); + } + } + sync.notifySolver(); + } + + public void run() { try { if (execInterp.awaitTermination(5, TimeUnit.MINUTES)) System.out.println("Interpreters are done !"); } catch (InterruptedException e) { e.printStackTrace(); } - - } - - public Boolean call() throws Exception { - - try { - execInterp.invokeAll(interp); - this.wait(); - killAll(); - return true; - } catch (InterruptedException e1) { - System.out.println("Interpreter don't terminate well"); - return false; - } - + killAll(); } } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java index ecabc3e..d83a11e 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java @@ -2,9 +2,7 @@ import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; -import java.io.OutputStream; import java.io.PipedInputStream; import java.io.PipedOutputStream; @@ -22,6 +20,7 @@ public ItsInterpreter() { this.pout = new PipedOutputStream(pin); } catch (IOException e1) { e1.printStackTrace(); + System.out.println("error pipou"); } this.in = new BufferedReader(new InputStreamReader(pin)); @@ -36,9 +35,6 @@ public PipedInputStream getPin() { return pin; } - public String readLine() throws IOException { - return in.readLine(); - } public void closePinPout() { try { @@ -49,7 +45,9 @@ public void closePinPout() { e.printStackTrace(); } } - + public BufferedReader getIn(){ + return in; + } public void closeIn() throws IOException { in.close(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java index 7ee28ef..80a9251 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java @@ -16,8 +16,12 @@ public class SolverObservable implements ISolverObservable { private Set obs = new HashSet<>(); private List> fsolvers = new ArrayList>(); private ExecutorService executor = Executors.newCachedThreadPool(); - private InterpreteObservable interp; - + private Synchronizer sync; + + public SolverObservable(Synchronizer sync) { + this.sync = sync; + } + public void attach(ISolverSeq o) { obs.add(o); } @@ -41,15 +45,9 @@ public void killAll() { o.cancel(true); } } - - interp.notify(); + sync.waitInterpreters(); } - /** - * wait a least five minutes till all interpeters have terminate - */ - - /** * wait till a solver has finish. if it done completely the task : kill all * the solvers and their interpreters, if not : repeat the process @@ -62,26 +60,24 @@ public Boolean call() { fsolvers.add(runSolvers.submit(o)); } - int nbSolver = obs.size(), i = 0; - + boolean result= false; do { try { // waiting for the first solver to terminate Future solverDone = runSolvers.take(); // Test if it has completed with no error if (solverDone.get() == 0) { - killAll(); - return true; + result=true; + break; } } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); return false; - } } while (++i < nbSolver); - - return false; + killAll(); + return result; } } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Synchronizer.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Synchronizer.java new file mode 100644 index 0000000..355560d --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Synchronizer.java @@ -0,0 +1,25 @@ +package fr.lip6.move.gal.itscl.modele; + +import java.util.concurrent.Semaphore; + +public class Synchronizer { + + private Semaphore interpWriteOut = new Semaphore(0); + + public void notifySolver() { + interpWriteOut.release(); + } + + /** + * {@link SolverObservable} waits till all interpreters end correctly + */ + public void waitInterpreters() { + + try { + interpWriteOut.acquire(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + +} From c39c39157bb58108d6203e2807df7c8060069bdf Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 27 Jun 2017 14:04:18 +0200 Subject: [PATCH 55/60] Final version with interpreters and sync between solvers/interp --- .../interprete/IInterpreteObservable.java | 8 ++++ .../interprete/InterpreteObservable.java | 41 +++++++++++++++++ .../ItsInterpreter.java | 7 ++- .../itscl/modele/IInterpreteObservable.java | 7 --- .../lip6/move/gal/itscl/modele/IListener.java | 3 +- .../lip6/move/gal/itscl/modele/IProblem.java | 16 ------- .../lip6/move/gal/itscl/modele/IRunner.java | 9 +++- .../gal/itscl/modele/ISolverObservable.java | 15 +++++-- .../itscl/modele/InterpreteObservable.java | 44 ------------------- .../lip6/move/gal/itscl/modele/Problem.java | 7 --- .../lip6/move/gal/itscl/modele/ResultP.java | 30 ------------- .../gal/itscl/modele/SolverObservable.java | 32 +++++++++++--- .../move/gal/itscl/modele/Synchronizer.java | 25 ----------- 13 files changed, 101 insertions(+), 143 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{modele => interprete}/ItsInterpreter.java (94%) delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ResultP.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Synchronizer.java diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java new file mode 100644 index 0000000..a259eff --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java @@ -0,0 +1,8 @@ +package fr.lip6.move.gal.itscl.interprete; + +import java.util.concurrent.Callable; + +public interface IInterpreteObservable extends Callable { + public void addThInterprete(Thread o); + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java new file mode 100644 index 0000000..21eacb7 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java @@ -0,0 +1,41 @@ +package fr.lip6.move.gal.itscl.interprete; + +import java.util.ArrayList; + +import fr.lip6.move.gal.itscl.modele.SolverObservable; + +public class InterpreteObservable implements IInterpreteObservable { + private ArrayList interpTh = new ArrayList(); + private SolverObservable so; + + public InterpreteObservable(SolverObservable so) { + this.so = so; + } + + /** + * wait a least five minutes till all interpreters have terminate + */ + public Boolean call() { + try { + //notify qu'ils ont été lancés avant + for (int i = 0; i < interpTh.size(); i++) { + Thread th = interpTh.get(i); + if (!th.isInterrupted()){ + System.out.println("Name threads : "+th.getName()); + th.join(); + } + } + System.out.println("Interpreters are done !"); + } catch (InterruptedException e) { + e.printStackTrace(); + return false; + } + so.notifySolver(); + + return true; + } + + public void addThInterprete(Thread interpTh) { + this.interpTh.add(interpTh); + } +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java similarity index 94% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java index d83a11e..9e804f5 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ItsInterpreter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.modele; +package fr.lip6.move.gal.itscl.interprete; import java.io.BufferedReader; import java.io.IOException; @@ -6,6 +6,11 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; + +/** + * + * + */ public class ItsInterpreter { private final PipedInputStream pin; diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java deleted file mode 100644 index 7d3bfb9..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IInterpreteObservable.java +++ /dev/null @@ -1,7 +0,0 @@ -package fr.lip6.move.gal.itscl.modele; - - -public interface IInterpreteObservable extends Ender, Runnable { - public void launchInterprete(IListener o); - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java index 6836851..dd20b9c 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java @@ -1,7 +1,6 @@ package fr.lip6.move.gal.itscl.modele; -import java.util.concurrent.Callable; -public interface IListener extends Callable{ +public interface IListener { } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java deleted file mode 100644 index da5027a..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IProblem.java +++ /dev/null @@ -1,16 +0,0 @@ -package fr.lip6.move.gal.itscl.modele; - -import java.util.Set; - -import fr.lip6.move.gal.Specification; - - -public interface IProblem { - - public Specification getSpec(); - - public Set getDoneProps(); - - - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java index a08595d..0e793f5 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java @@ -4,6 +4,13 @@ import java.util.Set; import fr.lip6.move.gal.Specification; +import fr.lip6.move.gal.itscl.interprete.InterpreteObservable; + + +/** + * + * + */ public interface IRunner { @@ -19,5 +26,5 @@ public interface IRunner { public void setInterprete(InterpreteObservable ob); public Boolean taskDone(); - + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java index e1b8a4b..1a7d175 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java @@ -3,15 +3,22 @@ import java.util.concurrent.Callable; /** - * Add/remove solvers to a specific list. It extends Callable : - * to be able to run the list of solvers and Ender : manages the termination of - * the solvers + * Add/remove solvers to a specific list. It extends : + * + * Callable : run the list of solvers + * + * Ender : manages the termination of the solvers + * + * It also manages the synchronization with solvers and their interpreters */ public interface ISolverObservable extends Callable, Ender { public void attach(ISolverSeq obs); public void detach(ISolverSeq obs); - + + public void waitInterpreters(); + + public void notifySolver(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java deleted file mode 100644 index e3b99be..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/InterpreteObservable.java +++ /dev/null @@ -1,44 +0,0 @@ -package fr.lip6.move.gal.itscl.modele; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -public class InterpreteObservable implements IInterpreteObservable { - private ExecutorService execInterp = Executors.newCachedThreadPool(); - private Synchronizer sync; - - public InterpreteObservable(Synchronizer sync) { - this.sync = sync; - } - - public void launchInterprete(IListener o) { - execInterp.submit(o); - } - - /** - * wait a least five minutes till all interpreters have terminate - */ - public void killAll() { - execInterp.shutdown(); - while (!execInterp.isShutdown()) { - try { - execInterp.awaitTermination(5, TimeUnit.MINUTES); - } catch (InterruptedException e){ - System.out.println("Timeout waiting for interpreters to finish "); - e.printStackTrace(); - } - } - sync.notifySolver(); - } - - public void run() { - try { - if (execInterp.awaitTermination(5, TimeUnit.MINUTES)) - System.out.println("Interpreters are done !"); - } catch (InterruptedException e) { - e.printStackTrace(); - } - killAll(); - } -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java deleted file mode 100644 index ce6c11f..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Problem.java +++ /dev/null @@ -1,7 +0,0 @@ -package fr.lip6.move.gal.itscl.modele; - - -public abstract class Problem implements IProblem { - - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ResultP.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ResultP.java deleted file mode 100644 index 861a504..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ResultP.java +++ /dev/null @@ -1,30 +0,0 @@ -package fr.lip6.move.gal.itscl.modele; - -public class ResultP implements IResultP { - - public final static int OK = 0; - public final static int KO = 1; - public final static int UNKNOWN = 2; - private final int res; - - public ResultP(int res) { - this.res = res; - } - - public String toString() { - if (res == OK) - return "DONE " + String.valueOf(res); - else - return "Error :" + String.valueOf(res); - } - - public boolean isOK() { - return (res == OK) ? true : false; - } - - public boolean isUnknown(){ - return res==UNKNOWN? true:false; - } - - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java index 80a9251..bc1702a 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java @@ -10,17 +10,15 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.Semaphore; public class SolverObservable implements ISolverObservable { private Set obs = new HashSet<>(); private List> fsolvers = new ArrayList>(); private ExecutorService executor = Executors.newCachedThreadPool(); - private Synchronizer sync; + private Semaphore interpWriteOut = new Semaphore(0); - public SolverObservable(Synchronizer sync) { - this.sync = sync; - } public void attach(ISolverSeq o) { obs.add(o); @@ -29,6 +27,28 @@ public void attach(ISolverSeq o) { public void detach(ISolverSeq o) { obs.remove(o); } + + + /** + * {@link SolverObservable} waits till all interpreters end correctly + */ + public void waitInterpreters() { + + try { + interpWriteOut.acquire(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + + /** + * Notify the solver that interpreters have complete + */ + public void notifySolver() { + interpWriteOut.release(); + } + /** * Shutdown all threads that still running assure that they really been @@ -45,11 +65,11 @@ public void killAll() { o.cancel(true); } } - sync.waitInterpreters(); + waitInterpreters(); } /** - * wait till a solver has finish. if it done completely the task : kill all + * wait till a solver finishes. if it done completely the task : kill all * the solvers and their interpreters, if not : repeat the process */ public Boolean call() { diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Synchronizer.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Synchronizer.java deleted file mode 100644 index 355560d..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/Synchronizer.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.lip6.move.gal.itscl.modele; - -import java.util.concurrent.Semaphore; - -public class Synchronizer { - - private Semaphore interpWriteOut = new Semaphore(0); - - public void notifySolver() { - interpWriteOut.release(); - } - - /** - * {@link SolverObservable} waits till all interpreters end correctly - */ - public void waitInterpreters() { - - try { - interpWriteOut.acquire(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - -} From be988077948765f220f1e339982675b466abac4d Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Thu, 29 Jun 2017 18:13:43 +0200 Subject: [PATCH 56/60] concurrence done but busy waiting method --- .../interprete/FileStreamInterprete.java | 66 +++++++++++++++++++ .../interprete/IInterpreteObservable.java | 2 +- .../gal/itscl/interprete/IInterpreter.java | 0 .../itscl/interprete/InterpreteBytArray.java | 24 +++++++ .../interprete/InterpreteObservable.java | 20 ++++-- .../gal/itscl/interprete/ItsInterpreter.java | 60 ----------------- .../gal/itscl/modele/SolverObservable.java | 21 +++--- 7 files changed, 117 insertions(+), 76 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/FileStreamInterprete.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreter.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteBytArray.java diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/FileStreamInterprete.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/FileStreamInterprete.java new file mode 100644 index 0000000..57d63c1 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/FileStreamInterprete.java @@ -0,0 +1,66 @@ +package fr.lip6.move.gal.itscl.interprete; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; + +/** + * + * + */ +public class FileStreamInterprete{ + + private final PipedInputStream pin; + + private PipedOutputStream pout = null; + private BufferedReader in; + + public FileStreamInterprete() { + + this.pin = new PipedInputStream(4096); + + try { + this.pout = new PipedOutputStream(pin); + } catch (IOException e1) { + e1.printStackTrace(); + System.out.println("error pipou"); + } + this.in = new BufferedReader(new InputStreamReader(pin)); + + } + + public PipedOutputStream getPout() { + return pout; + } + + public PipedInputStream getPin() { + return pin; + } + + public void closePinPout() { + try { + pin.close(); + pout.close(); + } catch (IOException e) { + System.out.println("Problemo uno fermento dilistener"); + e.printStackTrace(); + } + } + + + public String getWrittenData() { + try { + return in.readLine(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public void closeIn() throws IOException{ + in.close(); + } + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java index a259eff..7952193 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java @@ -2,7 +2,7 @@ import java.util.concurrent.Callable; -public interface IInterpreteObservable extends Callable { +public interface IInterpreteObservable extends Callable { public void addThInterprete(Thread o); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreter.java new file mode 100644 index 0000000..e69de29 diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteBytArray.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteBytArray.java new file mode 100644 index 0000000..4d06b55 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteBytArray.java @@ -0,0 +1,24 @@ +package fr.lip6.move.gal.itscl.interprete; + +import java.io.ByteArrayOutputStream; + +public class InterpreteBytArray { + + + ByteArrayOutputStream pout; + + public InterpreteBytArray(){ + pout=new ByteArrayOutputStream(); + } + + + public String getWrittenData(){ + return pout.toString(); + } + + + public ByteArrayOutputStream getPout() { + return pout; + } + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java index 21eacb7..e8d9f41 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java @@ -1,12 +1,14 @@ package fr.lip6.move.gal.itscl.interprete; import java.util.ArrayList; +import java.util.concurrent.Semaphore; import fr.lip6.move.gal.itscl.modele.SolverObservable; public class InterpreteObservable implements IInterpreteObservable { private ArrayList interpTh = new ArrayList(); private SolverObservable so; + private Semaphore complete = new Semaphore(0); public InterpreteObservable(SolverObservable so) { this.so = so; @@ -17,15 +19,18 @@ public InterpreteObservable(SolverObservable so) { */ public Boolean call() { try { - //notify qu'ils ont été lancés avant + // notify qu'ils ont été lancés avant + //Thread.sleep(1000); + for (int i = 0; i < interpTh.size(); i++) { Thread th = interpTh.get(i); - if (!th.isInterrupted()){ - System.out.println("Name threads : "+th.getName()); + if (!th.isInterrupted()) { th.join(); + System.out.println("Name threads : " + th.getName()); + } + complete.release(); } - System.out.println("Interpreters are done !"); } catch (InterruptedException e) { e.printStackTrace(); return false; @@ -38,4 +43,11 @@ public Boolean call() { public void addThInterprete(Thread interpTh) { this.interpTh.add(interpTh); } + + public void acquireFinalResult() { + try { + complete.acquire(); + } catch (InterruptedException e) { + } + } } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java index 9e804f5..e69de29 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java @@ -1,60 +0,0 @@ -package fr.lip6.move.gal.itscl.interprete; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PipedInputStream; -import java.io.PipedOutputStream; - - -/** - * - * - */ -public class ItsInterpreter { - private final PipedInputStream pin; - - private PipedOutputStream pout = null; - private BufferedReader in; - - public ItsInterpreter() { - - this.pin = new PipedInputStream(4096); - - try { - this.pout = new PipedOutputStream(pin); - } catch (IOException e1) { - e1.printStackTrace(); - System.out.println("error pipou"); - } - this.in = new BufferedReader(new InputStreamReader(pin)); - - } - - - public PipedOutputStream getPout() { - return pout; - } - - public PipedInputStream getPin() { - return pin; - } - - - public void closePinPout() { - try { - pin.close(); - pout.close(); - } catch (IOException e) { - System.out.println("Problemo uno fermento dilistener"); - e.printStackTrace(); - } - } - public BufferedReader getIn(){ - return in; - } - public void closeIn() throws IOException { - in.close(); - } - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java index bc1702a..31aacc0 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java @@ -19,7 +19,6 @@ public class SolverObservable implements ISolverObservable { private ExecutorService executor = Executors.newCachedThreadPool(); private Semaphore interpWriteOut = new Semaphore(0); - public void attach(ISolverSeq o) { obs.add(o); } @@ -27,8 +26,7 @@ public void attach(ISolverSeq o) { public void detach(ISolverSeq o) { obs.remove(o); } - - + /** * {@link SolverObservable} waits till all interpreters end correctly */ @@ -40,15 +38,13 @@ public void waitInterpreters() { e.printStackTrace(); } } - - + /** - * Notify the solver that interpreters have complete + * Notify the solver that interpreters have complete */ public void notifySolver() { interpWriteOut.release(); } - /** * Shutdown all threads that still running assure that they really been @@ -65,6 +61,7 @@ public void killAll() { o.cancel(true); } } + waitInterpreters(); } @@ -80,22 +77,24 @@ public Boolean call() { fsolvers.add(runSolvers.submit(o)); } - int nbSolver = obs.size(), i = 0; - boolean result= false; + boolean result = false; do { + try { // waiting for the first solver to terminate Future solverDone = runSolvers.take(); + System.out.println("first one ____________________!"); + // Test if it has completed with no error if (solverDone.get() == 0) { - result=true; + result = true; break; } } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); return false; } - } while (++i < nbSolver); + } while (!result); killAll(); return result; } From 87a84e70e7eb697bf072ee84dbffc1d55f27ce2b Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Fri, 30 Jun 2017 15:54:16 +0200 Subject: [PATCH 57/60] final maj interpreter/solver obs --- .../META-INF/MANIFEST.MF | 1 + .../gal/itscl/interprete/InterpreteObservable.java | 2 +- .../lip6/move/gal/itscl/modele/SolverObservable.java | 11 ++++++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF index fb3e78a..9e68dbd 100644 --- a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF @@ -5,6 +5,7 @@ Bundle-SymbolicName: fr.lip6.move.gal.itscl.concurrent Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 Export-Package: fr.lip6.move.gal.itscl.adaptor, + fr.lip6.move.gal.itscl.interprete, fr.lip6.move.gal.itscl.modele Bundle-Version: 1.0.0.qualifier Require-Bundle: fr.lip6.move.gal;bundle-version="1.0.0" diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java index e8d9f41..cfc237e 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java @@ -20,7 +20,7 @@ public InterpreteObservable(SolverObservable so) { public Boolean call() { try { // notify qu'ils ont été lancés avant - //Thread.sleep(1000); + so.wakeMeUp(); for (int i = 0; i < interpTh.size(); i++) { Thread th = interpTh.get(i); diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java index 31aacc0..da75dba 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java @@ -18,6 +18,7 @@ public class SolverObservable implements ISolverObservable { private List> fsolvers = new ArrayList>(); private ExecutorService executor = Executors.newCachedThreadPool(); private Semaphore interpWriteOut = new Semaphore(0); + private Semaphore stopInterpretation = new Semaphore(0); public void attach(ISolverSeq o) { obs.add(o); @@ -83,11 +84,11 @@ public Boolean call() { try { // waiting for the first solver to terminate Future solverDone = runSolvers.take(); - System.out.println("first one ____________________!"); // Test if it has completed with no error if (solverDone.get() == 0) { result = true; + wakeInterpreter(); break; } } catch (InterruptedException | ExecutionException e) { @@ -99,4 +100,12 @@ public Boolean call() { return result; } + public void wakeMeUp() throws InterruptedException { + stopInterpretation.acquire(); + } + + public void wakeInterpreter() { + stopInterpretation.release(); + } + } From ec9444fcd137751d2fc5c875a2447961fa2e8b26 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Mon, 3 Jul 2017 13:06:34 +0200 Subject: [PATCH 58/60] comments --- .../gal/itscl/application/Application.java | 20 +++++-- .../gal/itscl/application/InterpreterApp.java | 28 ++++++++++ .../move/gal/itscl/application/ItsSolver.java | 14 ++--- .../move/gal/itscl/application/ProblemSS.java | 5 +- .../move/gal/itscl/application/SolverSeq.java | 24 +++++--- .../META-INF/MANIFEST.MF | 2 +- ...plication.java => AdapterApplication.java} | 2 +- .../gal/itscl/interprete/IInterpreter.java | 0 .../itscl/interprete/InterpreteBytArray.java | 24 -------- .../gal/itscl/interprete/ItsInterpreter.java | 0 .../interpreter/AbstractInterpreter.java | 27 +++++++++ .../FileStreamInterprete.java | 12 ++-- .../IInterpreteObservable.java | 3 +- .../itscl/interpreter/InterpreteBytArray.java | 25 +++++++++ .../InterpreteObservable.java | 39 ++++++------- .../lip6/move/gal/itscl/modele/IListener.java | 6 -- .../lip6/move/gal/itscl/modele/IResultP.java | 7 --- .../lip6/move/gal/itscl/modele/IRunner.java | 20 +++++-- .../gal/itscl/modele/ISolverObservable.java | 29 ++++++++-- .../move/gal/itscl/modele/ISolverSeq.java | 6 ++ .../gal/itscl/modele/SolverObservable.java | 56 +++++++++---------- 21 files changed, 219 insertions(+), 130 deletions(-) create mode 100644 fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/InterpreterApp.java rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/{InteractApplication.java => AdapterApplication.java} (85%) delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreter.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteBytArray.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/AbstractInterpreter.java rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{interprete => interpreter}/FileStreamInterprete.java (86%) rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{interprete => interpreter}/IInterpreteObservable.java (76%) create mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/InterpreteBytArray.java rename fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/{interprete => interpreter}/InterpreteObservable.java (53%) delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java delete mode 100644 fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IResultP.java diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java index b394acd..213ffb4 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/Application.java @@ -18,6 +18,7 @@ import fr.lip6.move.gal.SafetyProp; import fr.lip6.move.gal.Specification; import fr.lip6.move.gal.instantiate.GALRewriter; +import fr.lip6.move.gal.itscl.interpreter.InterpreteObservable; import fr.lip6.move.gal.itscl.modele.SolverObservable; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.CommandLineBuilder; @@ -112,21 +113,28 @@ public Object start(IApplicationContext context) throws Exception { System.out.println("Built GAL and property files in " + (time - System.currentTimeMillis()) + " ms."); SolverObservable superRunner = new SolverObservable(); exec = Executors.newSingleThreadExecutor(); - + InterpreteObservable interpRunner = new InterpreteObservable(superRunner); SolverSeq s = new SolverSeq(p, cl); + superRunner.attach(s); // run les solvers - // Listener lst= new Listener(); - // superRunner.configureListener(lst); FutureTask executeRunner = new FutureTask<>(superRunner); Thread futureTh = new Thread(executeRunner); - // exec.submit(superRunner); + FutureTask executeInterp = new FutureTask<>(interpRunner); + Thread futureTh2 = new Thread(executeInterp); + futureTh.start(); + futureTh2.start(); + Boolean result = executeRunner.get(); + Boolean result2 = executeInterp.get(); + if (futureTh != null) futureTh.join(); - System.out.println("Operation reussi ? " + result); - return result ? IApplication.EXIT_OK : 1; + if (futureTh2 != null) + futureTh2.join(); + System.out.println("Operation reussi ? " + result + ". And Interpreter ? "+result2); + return IApplication.EXIT_OK; } // Traitement du problème : transformations + simplifications diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/InterpreterApp.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/InterpreterApp.java new file mode 100644 index 0000000..8c49d0f --- /dev/null +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/InterpreterApp.java @@ -0,0 +1,28 @@ +package fr.lip6.move.gal.itscl.application; + + +import fr.lip6.move.gal.itscl.interpreter.AbstractInterpreter; +import fr.lip6.move.gal.itscl.interpreter.InterpreteBytArray; + +public class InterpreterApp extends AbstractInterpreter { + + private InterpreteBytArray bufferWIO; + private SolverSeq sq; + + public InterpreterApp(InterpreteBytArray buff, SolverSeq sq) { + this.bufferWIO = buff; + this.sq = sq; + } + + public void run() { + String output = bufferWIO.getPout().toString(); + + if (output.contains("Error")) + sq.setResult(); + else + System.out.println(" "+output); + + releaseResult(); + } + +} diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java index c16b80a..e07a0c3 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ItsSolver.java @@ -1,6 +1,6 @@ package fr.lip6.move.gal.itscl.application; -import fr.lip6.move.gal.itscl.modele.IListener; +import fr.lip6.move.gal.itscl.interpreter.IInterpreteObservable; import fr.lip6.move.gal.itscl.modele.ISolverSeq; import fr.lip6.move.gal.itstools.CommandLine; @@ -8,17 +8,13 @@ public abstract class ItsSolver implements ISolverSeq { private final CommandLine cl; protected final ProblemSS p; - protected IListener listener; - + protected IInterpreteObservable inRunner; + public ItsSolver(ProblemSS p, CommandLine cl) { this.cl = cl; this.p = p; } - public void setListener(IListener l){ - this.listener=l; - } - public CommandLine getCmd() { return cl; } @@ -26,5 +22,9 @@ public CommandLine getCmd() { public ProblemSS getProblem() { return p; } + + public void configureInterpreter(IInterpreteObservable interp){ + this.inRunner=interp; + } } diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java index f085f8b..b6d62a0 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/ProblemSS.java @@ -1,14 +1,15 @@ package fr.lip6.move.gal.itscl.application; import fr.lip6.move.gal.Specification; -import fr.lip6.move.gal.itscl.modele.Problem; import fr.lip6.move.gal.itstools.BinaryToolsPlugin.Tool; -public class ProblemSS extends Problem { +public class ProblemSS{ private Tool tool; private String folder; private int timeout; + @SuppressWarnings("unused") + private Specification spec; public ProblemSS(Tool tool, String folder) { this.tool = tool; diff --git a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java index 71d6e92..5d2b9b4 100644 --- a/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java +++ b/fr.lip6.move.gal.itscl.application/src/fr/lip6/move/gal/itscl/application/SolverSeq.java @@ -4,35 +4,45 @@ import org.eclipse.core.runtime.IStatus; -import fr.lip6.move.gal.itscl.modele.ResultP; +import fr.lip6.move.gal.itscl.interpreter.InterpreteBytArray; import fr.lip6.move.gal.itstools.CommandLine; import fr.lip6.move.gal.itstools.ProcessController.TimeOutException; import fr.lip6.move.gal.itstools.Runner; public class SolverSeq extends ItsSolver { - private String output; + private InterpreteBytArray bufferWIO = new InterpreteBytArray(); + private Boolean complete = true; + private InterpreterApp interp; public SolverSeq(ProblemSS p, CommandLine cl) { super(p, cl); } + public void setResult() { + this.complete =false; + } + public int hasComplete() { - return output.contains("Error") ? ResultP.KO : ResultP.OK; + interp.acquireResult(); + return complete?0:1; } public Integer call() { try { IStatus status; - status = Runner.runTool(p.getTimeout(), getCmd(), listener.getPout(), true); - + interp = new InterpreterApp(bufferWIO,this); + Thread interpTh = new Thread(interp, "InterpreterApp"); + inRunner.addThInterprete(interpTh); + interpTh.start(); + status = Runner.runTool(p.getTimeout(), getCmd(), bufferWIO.getPout(), true); + + if (!status.isOK() && status.getCode() != 1) { throw new RuntimeException( "Unexpected exception when executing commandline :" + getCmd() + "\n" + status); } - output = listener.getPout().toString(); - return hasComplete(); } catch (IOException | TimeOutException e) { diff --git a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF index 9e68dbd..0ae9df8 100644 --- a/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF +++ b/fr.lip6.move.gal.itscl.concurrent/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-SymbolicName: fr.lip6.move.gal.itscl.concurrent Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: LIP6 Export-Package: fr.lip6.move.gal.itscl.adaptor, - fr.lip6.move.gal.itscl.interprete, + fr.lip6.move.gal.itscl.interpreter, fr.lip6.move.gal.itscl.modele Bundle-Version: 1.0.0.qualifier Require-Bundle: fr.lip6.move.gal;bundle-version="1.0.0" diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/InteractApplication.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterApplication.java similarity index 85% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/InteractApplication.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterApplication.java index 7a656e0..8c6e602 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/InteractApplication.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/adaptor/AdapterApplication.java @@ -3,7 +3,7 @@ import fr.lip6.move.gal.itscl.modele.IRunner; import fr.lip6.move.gal.itscl.modele.ISolverSeq; -public class InteractApplication { +public class AdapterApplication { public static ISolverSeq add(IRunner r) { return new Adapter(r); diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreter.java deleted file mode 100644 index e69de29..0000000 diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteBytArray.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteBytArray.java deleted file mode 100644 index 4d06b55..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteBytArray.java +++ /dev/null @@ -1,24 +0,0 @@ -package fr.lip6.move.gal.itscl.interprete; - -import java.io.ByteArrayOutputStream; - -public class InterpreteBytArray { - - - ByteArrayOutputStream pout; - - public InterpreteBytArray(){ - pout=new ByteArrayOutputStream(); - } - - - public String getWrittenData(){ - return pout.toString(); - } - - - public ByteArrayOutputStream getPout() { - return pout; - } - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/ItsInterpreter.java deleted file mode 100644 index e69de29..0000000 diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/AbstractInterpreter.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/AbstractInterpreter.java new file mode 100644 index 0000000..f9c557e --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/AbstractInterpreter.java @@ -0,0 +1,27 @@ +package fr.lip6.move.gal.itscl.interpreter; + +import java.util.concurrent.Semaphore; + +public abstract class AbstractInterpreter implements Runnable { + + private Semaphore hasComplete = new Semaphore(0); + + /** + * Block until interpreter of the specific runner complete + */ + public void acquireResult() { + try { + hasComplete.acquire(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + /** + * notify its runner that I finish the last interpretation + */ + public void releaseResult() { + hasComplete.release(); + } + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/FileStreamInterprete.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/FileStreamInterprete.java similarity index 86% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/FileStreamInterprete.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/FileStreamInterprete.java index 57d63c1..66c26cb 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/FileStreamInterprete.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/FileStreamInterprete.java @@ -1,4 +1,4 @@ -package fr.lip6.move.gal.itscl.interprete; +package fr.lip6.move.gal.itscl.interpreter; import java.io.BufferedReader; import java.io.IOException; @@ -7,10 +7,9 @@ import java.io.PipedOutputStream; /** - * - * + * Interpreters that uses File I/O stream */ -public class FileStreamInterprete{ +public class FileStreamInterprete { private final PipedInputStream pin; @@ -48,7 +47,6 @@ public void closePinPout() { e.printStackTrace(); } } - public String getWrittenData() { try { @@ -59,8 +57,8 @@ public String getWrittenData() { return null; } - public void closeIn() throws IOException{ + public void closeIn() throws IOException { in.close(); } - + } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/IInterpreteObservable.java similarity index 76% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/IInterpreteObservable.java index 7952193..c73107d 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/IInterpreteObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/IInterpreteObservable.java @@ -1,7 +1,8 @@ -package fr.lip6.move.gal.itscl.interprete; +package fr.lip6.move.gal.itscl.interpreter; import java.util.concurrent.Callable; + public interface IInterpreteObservable extends Callable { public void addThInterprete(Thread o); diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/InterpreteBytArray.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/InterpreteBytArray.java new file mode 100644 index 0000000..0ddbf82 --- /dev/null +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/InterpreteBytArray.java @@ -0,0 +1,25 @@ +package fr.lip6.move.gal.itscl.interpreter; + +import java.io.ByteArrayOutputStream; + + +/** + * Interpreters that use ByteArray I/O stream + */ +public class InterpreteBytArray { + + ByteArrayOutputStream pout; + + public InterpreteBytArray() { + pout = new ByteArrayOutputStream(); + } + + public String getWrittenData() { + return pout.toString(); + } + + public ByteArrayOutputStream getPout() { + return pout; + } + +} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/InterpreteObservable.java similarity index 53% rename from fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java rename to fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/InterpreteObservable.java index cfc237e..82e6cfc 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interprete/InterpreteObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/interpreter/InterpreteObservable.java @@ -1,53 +1,48 @@ -package fr.lip6.move.gal.itscl.interprete; +package fr.lip6.move.gal.itscl.interpreter; import java.util.ArrayList; -import java.util.concurrent.Semaphore; -import fr.lip6.move.gal.itscl.modele.SolverObservable; +import fr.lip6.move.gal.itscl.modele.ISolverObservable; public class InterpreteObservable implements IInterpreteObservable { + private ArrayList interpTh = new ArrayList(); - private SolverObservable so; - private Semaphore complete = new Semaphore(0); + private ISolverObservable so; - public InterpreteObservable(SolverObservable so) { + public InterpreteObservable(ISolverObservable so) { this.so = so; } + public void addThInterprete(Thread interpTh) { + this.interpTh.add(interpTh); + } + /** - * wait a least five minutes till all interpreters have terminate + * Join all interpreters in the list to ensure they complete well. */ public Boolean call() { try { - // notify qu'ils ont été lancés avant - so.wakeMeUp(); - + // waits SolverObservable to acquire a result from a solver OR no + // one did + so.waitSolver(); + for (int i = 0; i < interpTh.size(); i++) { Thread th = interpTh.get(i); if (!th.isInterrupted()) { th.join(); System.out.println("Name threads : " + th.getName()); - + } - complete.release(); } } catch (InterruptedException e) { e.printStackTrace(); return false; } + + // wake SolverObservable so.notifySolver(); return true; } - public void addThInterprete(Thread interpTh) { - this.interpTh.add(interpTh); - } - - public void acquireFinalResult() { - try { - complete.acquire(); - } catch (InterruptedException e) { - } - } } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java deleted file mode 100644 index dd20b9c..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IListener.java +++ /dev/null @@ -1,6 +0,0 @@ -package fr.lip6.move.gal.itscl.modele; - - -public interface IListener { - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IResultP.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IResultP.java deleted file mode 100644 index 2c40af4..0000000 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IResultP.java +++ /dev/null @@ -1,7 +0,0 @@ -package fr.lip6.move.gal.itscl.modele; - -public interface IResultP { - - public boolean isOK(); - -} diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java index 0e793f5..8d3cc4f 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/IRunner.java @@ -4,27 +4,35 @@ import java.util.Set; import fr.lip6.move.gal.Specification; -import fr.lip6.move.gal.itscl.interprete.InterpreteObservable; +import fr.lip6.move.gal.itscl.interpreter.IInterpreteObservable; /** - * - * + * Adapter to the current Runners (Solvers) */ public interface IRunner { /** - * configure spec and initialize doneProps attribute to an empty keySet + * configure specification and initialize doneProps attribute to an empty keySet */ public void configure(Specification spec); public void configure(Specification z3Spec, Set doneProps) throws IOException; + /** + * run the solver ! + */ public void solve(); - - public void setInterprete(InterpreteObservable ob); + /** + * initialize the manager of interpreters threads + */ + public void configureInterpreter(IInterpreteObservable ob); + + /** +  * Returns if solver did or not well its job + */ public Boolean taskDone(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java index 1a7d175..4d0dce5 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverObservable.java @@ -2,12 +2,14 @@ import java.util.concurrent.Callable; +import fr.lip6.move.gal.itscl.interpreter.IInterpreteObservable; + /** - * Add/remove solvers to a specific list. It extends : + * It extends : * - * Callable : run the list of solvers + * Callable : run solvers * - * Ender : manages the termination of the solvers + * Ender : manages the completion of solvers * * It also manages the synchronization with solvers and their interpreters */ @@ -17,8 +19,27 @@ public interface ISolverObservable extends Callable, Ender { public void detach(ISolverSeq obs); - public void waitInterpreters(); + + /** + * wait till all interpreters end correctly + */ + public void interpreterDone(); + /** + * Notify SolverObservable that interpreters have complete + */ public void notifySolver(); + + + /** + * {@link IInterpreteObservable} blocks for future creation of interpreter + */ + public void waitSolver() throws InterruptedException; + + /** + * notify {@link IInterpreteObservable} to start joining interpreters + * threads, when a solver has done the task or none. + */ + public void notifyInterpreter(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java index 35bd3a8..faa9f11 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/ISolverSeq.java @@ -2,8 +2,14 @@ import java.util.concurrent.Callable; +/** + * Main runner + */ public interface ISolverSeq extends Callable { + /** + * @return 0 : if solve all the props. 1 : didn't achieve them all + */ public int hasComplete(); } diff --git a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java index da75dba..30a3fc8 100644 --- a/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java +++ b/fr.lip6.move.gal.itscl.concurrent/src/fr/lip6/move/gal/itscl/modele/SolverObservable.java @@ -17,7 +17,7 @@ public class SolverObservable implements ISolverObservable { private Set obs = new HashSet<>(); private List> fsolvers = new ArrayList>(); private ExecutorService executor = Executors.newCachedThreadPool(); - private Semaphore interpWriteOut = new Semaphore(0); + private Semaphore interpreteComplete = new Semaphore(0); private Semaphore stopInterpretation = new Semaphore(0); public void attach(ISolverSeq o) { @@ -28,28 +28,22 @@ public void detach(ISolverSeq o) { obs.remove(o); } - /** - * {@link SolverObservable} waits till all interpreters end correctly - */ - public void waitInterpreters() { + public void interpreterDone() { try { - interpWriteOut.acquire(); + interpreteComplete.acquire(); } catch (InterruptedException e) { e.printStackTrace(); } } - /** - * Notify the solver that interpreters have complete - */ public void notifySolver() { - interpWriteOut.release(); + interpreteComplete.release(); } /** - * Shutdown all threads that still running assure that they really been - * canceled call method to kill the interpreters of each runner + * Try to shutdown immediately all ISolverSeq thread that still running. It + * assure that they really been canceled. */ public void killAll() { @@ -62,13 +56,21 @@ public void killAll() { o.cancel(true); } } + // Wait interpreters to finish interpret the last results + interpreterDone(); + } + + public void waitSolver() throws InterruptedException { + stopInterpretation.acquire(); + } - waitInterpreters(); + public void notifyInterpreter() { + stopInterpretation.release(); } /** - * wait till a solver finishes. if it done completely the task : kill all - * the solvers and their interpreters, if not : repeat the process + * Run all recorded solvers. Wait for a result, if solver did complete well: + * kill 'em all (solvers), if not : repeat wait for the next result */ public Boolean call() { @@ -78,34 +80,30 @@ public Boolean call() { fsolvers.add(runSolvers.submit(o)); } - boolean result = false; + int i = 0; do { try { - // waiting for the first solver to terminate + // waiting for the first solver to complete Future solverDone = runSolvers.take(); - // Test if it has completed with no error + // Test if it did complete well if (solverDone.get() == 0) { - result = true; - wakeInterpreter(); break; } } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); return false; } - } while (!result); - killAll(); - return result; - } + } while (i++ < obs.size()); - public void wakeMeUp() throws InterruptedException { - stopInterpretation.acquire(); - } + // Wake interpreterObservable, it joins all interpreters in order to + // ensure they have completed well + notifyInterpreter(); - public void wakeInterpreter() { - stopInterpretation.release(); + killAll(); + + return (i == obs.size()) ? false : true; } } From 53cca0b067e01d41b371c28c79195a8e6added34 Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Mon, 3 Jul 2017 13:26:31 +0200 Subject: [PATCH 59/60] add runeclipse.sh --- runeclipse.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 runeclipse.sh diff --git a/runeclipse.sh b/runeclipse.sh new file mode 100644 index 0000000..7403668 --- /dev/null +++ b/runeclipse.sh @@ -0,0 +1,15 @@ +#! /bin/bash + +set -x + +ulimit -s 65536 + + +java -Dosgi.requiredJavaVersion=1.6 -Xss8m -Xms40m -Xmx8192m -Declipse.pde.launch=true -Dfile.encoding=UTF-8 -classpath $BINDIR/eclipse/plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar org.eclipse.equinox.launcher.Main -application fr.lip6.move.gal.application.pnmcc -data $BINDIR/workspace -os linux -ws gtk -arch x86_64 -nl en_US -consoleLog -pnfolder $1 -examination $2 -z3path $BINDIR/z3/bin/z3 -yices2path $BINDIR/yices/bin/yices ${@:3} +# -XX:MaxPermSize=512m +# -z3path $BINDIR/z3/bin/z3 +# -its +#-configuration file:/home/mcc/workspace/.metadata/.plugins/org.eclipse.pde.core/fr.lip6.move.gal.application/ +#-dev file:/data/ythierry/workspaces/luna2/.metadata/.plugins/org.eclipse.pde.core/fr.lip6.move.gal.application/dev.properties +# luna : org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar +# mars : org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar \ No newline at end of file From 7f0030dc21ec875e35c77cb2b5000e063ee6cbfb Mon Sep 17 00:00:00 2001 From: Anissa Kheireddine Date: Tue, 4 Jul 2017 11:10:16 +0200 Subject: [PATCH 60/60] bad parent path --- fr.lip6.move.gal.itscl.concurrent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr.lip6.move.gal.itscl.concurrent/pom.xml b/fr.lip6.move.gal.itscl.concurrent/pom.xml index b66ad71..3dfa55b 100644 --- a/fr.lip6.move.gal.itscl.concurrent/pom.xml +++ b/fr.lip6.move.gal.itscl.concurrent/pom.xml @@ -5,7 +5,7 @@ fr.lip6.move.gal fr.lip6.move.gal.parent 1.0.0-SNAPSHOT - ../../fr.lip6.move.gal.parent/pom.xml + ../fr.lip6.move.gal.parent/pom.xml fr.lip6.move.gal.itscl.concurrent