Skip to content

Commit

Permalink
add git synchro
Browse files Browse the repository at this point in the history
  • Loading branch information
simonAllier committed Sep 9, 2013
1 parent 8e645c9 commit 8edd224
Show file tree
Hide file tree
Showing 9 changed files with 308 additions and 22 deletions.
1 change: 1 addition & 0 deletions runFromGit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ java -jar target/Diversify-statements-1.0-SNAPSHOT-jar-with-dependencies.jar git

for i in `seq 1 $1`
do
java -Xmx2000m -XX:MaxPermSize=256m -jar target/Diversify-statements-1.0-SNAPSHOT-jar-with-dependencies.jar $(cat propertiesFile) &
java -Xmx2000m -XX:MaxPermSize=256m -jar target/Diversify-statements-1.0-SNAPSHOT-jar-with-dependencies.jar $(cat propertiesFile)
done
8 changes: 4 additions & 4 deletions src/main/java/fr/inria/diversify/Builder.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public void printResult(String output, String git) {
} catch (Exception e) {
Log.error("error in Main.printResult", e);
}
if(git != "") {
if(!git.equals("")) {
GitUtil.addToGit(fileName);
}
// StatisticDiversification stat = new StatisticDiversification(transformations);
Expand Down Expand Up @@ -85,7 +85,7 @@ protected String prepare(String dirSource, String dirTarget) throws IOException,
}

protected Integer runTest(String directory) throws InterruptedException, CompileException {
RunMaven rt = new RunMaven(directory, "test", clojureTest);
RunMaven rt = new RunMaven(directory, "test", timeOut,clojureTest);
rt.start();
// int count = 0;
rt.join(1000*timeOut);
Expand All @@ -104,10 +104,10 @@ protected Integer runTest(String directory) throws InterruptedException, Compile

public void initTimeOut() throws InterruptedException {
initThreadGroup();
RunMaven rt = new RunMaven(projectDir, "test", clojureTest);
RunMaven rt = new RunMaven(projectDir, "test", 0, clojureTest);
rt.start();
timeOut = 0;
int factor = 3;
int factor = 4;
while (rt.getFailures() == null) {
timeOut = timeOut + factor;
Thread.sleep(1000);
Expand Down
13 changes: 6 additions & 7 deletions src/main/java/fr/inria/diversify/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,17 @@
import java.io.FileWriter;
import java.io.IOException;

import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;


public class Main {
private CodeFragmentList statements;

public static void main(String[] args) throws Exception {

if(args[0].equals("git")) {
GitUtil.initGit(args[1]);
Runtime r = Runtime.getRuntime();
Expand Down Expand Up @@ -75,7 +78,6 @@ public Main(String propertiesFile) throws Exception {
sosieOnMultiProject();
else
runDiversification();

suicide();
// if (DiversifyProperties.getProperty("stat").equals("true"))
// computeStatistic();
Expand Down Expand Up @@ -291,13 +293,11 @@ protected void writeTransformation(String FileName, List<Transformation> transfo
}

protected void suicide() {
// String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0];
// Log.debug("PID :"+pid);
String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0];
Log.debug("PID :"+pid);
Runtime r = Runtime.getRuntime();
try {
Process p = r.exec("pkill java");
Thread.sleep(1000);

r.exec("kill "+pid);
} catch (Exception e) {
Log.error("suicide ",e);
}
Expand All @@ -307,5 +307,4 @@ protected void initLogLevel() {
int level = Integer.parseInt(DiversifyProperties.getProperty("logLevel"));
Log.set(level);
}

}
2 changes: 1 addition & 1 deletion src/main/java/fr/inria/diversify/test/TestSosie.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ protected Integer runTest(String directory) throws InterruptedException, Compile
}

protected Integer PrunTest(String directory) throws InterruptedException, CompileException {
RunMaven rt = new RunMaven(directory, "package", clojureTest);
RunMaven rt = new RunMaven(directory, "package",timeOut, clojureTest);
rt.start();
int count = 0;
while (rt.getFailures() == null && count < timeOut) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,62 @@
package fr.inria.diversify.transformation;

import org.apache.maven.shared.invoker.InvocationResult;
import org.codehaus.plexus.util.cli.CommandLineException;

/**
* User: Simon
* Date: 9/9/13
* Time: 3:20 PM
*/
public class MavenInvocationResult {
}
public class MavenInvocationResult implements InvocationResult
{

/**
* The exception that prevented to execute the command line, will be <code>null</code> if Maven could be
* successfully started.
*/
private CommandLineException executionException;

/**
* The exit code reported by the Maven invocation.
*/
private int exitCode = Integer.MIN_VALUE;

/**
* Creates a new invocation result
*/
MavenInvocationResult()
{
// hide constructor
}

public int getExitCode()
{
return exitCode;
}

public CommandLineException getExecutionException()
{
return executionException;
}

/**
* Sets the exit code reported by the Maven invocation.
*
* @param exitCode The exit code reported by the Maven invocation.
*/
void setExitCode( int exitCode )
{
this.exitCode = exitCode;
}

/**
* Sets the exception that prevented to execute the command line.
*
* @param executionException The exception that prevented to execute the command line, may be <code>null</code>.
*/
void setExecutionException( CommandLineException executionException )
{
this.executionException = executionException;
}
}
224 changes: 222 additions & 2 deletions src/main/java/fr/inria/diversify/transformation/MavenInvoker.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,229 @@
package fr.inria.diversify.transformation;

import org.apache.maven.shared.invoker.*;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.util.cli.CommandLineException;
import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.codehaus.plexus.util.cli.Commandline;


import java.io.File;
import java.io.InputStream;

/**
* User: Simon
* Date: 9/9/13
* Time: 3:15 PM
*/
public class MavenInvoker {
}
@Component( role = Invoker.class, hint = "default" )
public class MavenInvoker implements Invoker
{

public static final String ROLE_HINT = "default";

private static final InvokerLogger DEFAULT_LOGGER = new SystemOutLogger();

private static final InvocationOutputHandler DEFAULT_OUTPUT_HANDLER = new SystemOutHandler();

private File localRepositoryDirectory;

private InvokerLogger logger = DEFAULT_LOGGER;

private File workingDirectory;

private File mavenHome;

private File mavenExecutable;

private InvocationOutputHandler outputHandler = DEFAULT_OUTPUT_HANDLER;

private InputStream inputStream;

private InvocationOutputHandler errorHandler = DEFAULT_OUTPUT_HANDLER;

private int timeOut = 0;

public InvocationResult execute( InvocationRequest request )
throws MavenInvocationException
{
MavenCommandLineBuilder cliBuilder = new MavenCommandLineBuilder();

InvokerLogger logger = getLogger();
if ( logger != null )
{
cliBuilder.setLogger( getLogger() );
}

File localRepo = getLocalRepositoryDirectory();
if ( localRepo != null )
{
cliBuilder.setLocalRepositoryDirectory( getLocalRepositoryDirectory() );
}

File mavenHome = getMavenHome();
if ( mavenHome != null )
{
cliBuilder.setMavenHome( getMavenHome() );
}

File mavenExecutable = getMavenExecutable();
if ( mavenExecutable != null )
{
cliBuilder.setMavenExecutable( mavenExecutable );
}


File workingDirectory = getWorkingDirectory();
if ( workingDirectory != null )
{
cliBuilder.setWorkingDirectory( getWorkingDirectory() );
}

Commandline cli;
try
{
cli = cliBuilder.build( request );
}
catch ( CommandLineConfigurationException e )
{
throw new MavenInvocationException( "Error configuring command-line. Reason: " + e.getMessage(), e );
}

MavenInvocationResult result = new MavenInvocationResult();

try
{
int exitCode = executeCommandLine( cli, request );

result.setExitCode( exitCode );
}
catch ( CommandLineException e )
{
result.setExecutionException( e );
}

return result;
}

private int executeCommandLine( Commandline cli, InvocationRequest request )
throws CommandLineException
{
int result = Integer.MIN_VALUE;



InputStream inputStream = request.getInputStream( this.inputStream );
InvocationOutputHandler outputHandler = request.getOutputHandler( this.outputHandler );
InvocationOutputHandler errorHandler = request.getErrorHandler( this.errorHandler );

if ( getLogger().isDebugEnabled() )
{
getLogger().debug( "Executing: " + cli );
}
if ( request.isInteractive() )
{
if ( inputStream == null )
{
getLogger().warn(
"Maven will be executed in interactive mode"
+ ", but no input stream has been configured for this MavenInvoker instance." );

result = CommandLineUtils.executeCommandLine( cli, outputHandler, errorHandler );
}
else
{
result = CommandLineUtils.executeCommandLine( cli, inputStream, outputHandler, errorHandler, timeOut );
}
}
else
{
if ( inputStream != null )
{
getLogger().info( "Executing in batch mode. The configured input stream will be ignored." );
}

result = CommandLineUtils.executeCommandLine( cli, outputHandler, errorHandler, timeOut );
}

return result;
}

public File getLocalRepositoryDirectory()
{
return localRepositoryDirectory;
}

public InvokerLogger getLogger()
{
return logger;
}

public Invoker setLocalRepositoryDirectory( File localRepositoryDirectory )
{
this.localRepositoryDirectory = localRepositoryDirectory;
return this;
}

public Invoker setLogger( InvokerLogger logger )
{
this.logger = ( logger != null ) ? logger : DEFAULT_LOGGER;
return this;
}

public File getWorkingDirectory()
{
return workingDirectory;
}

public Invoker setWorkingDirectory( File workingDirectory )
{
this.workingDirectory = workingDirectory;
return this;
}

public File getMavenHome()
{
return mavenHome;
}

public Invoker setMavenHome( File mavenHome )
{
this.mavenHome = mavenHome;

return this;
}

public File getMavenExecutable()
{
return mavenExecutable;
}

public Invoker setMavenExecutable( File mavenExecutable )
{
this.mavenExecutable = mavenExecutable;
return this;
}

public void setTimeOut(int i) {
this.timeOut = i;
}


public Invoker setErrorHandler( InvocationOutputHandler errorHandler )
{
this.errorHandler = errorHandler;
return this;
}

public Invoker setInputStream( InputStream inputStream )
{
this.inputStream = inputStream;
return this;
}

public Invoker setOutputHandler( InvocationOutputHandler outputHandler )
{
this.outputHandler = outputHandler;
return this;
}
}
Loading

0 comments on commit 8edd224

Please sign in to comment.