package net.sourceforge.seqware.pipeline;
import java.io.File;
import net.sourceforge.seqware.common.util.Log;
import net.sourceforge.seqware.common.util.filetools.lock.LockingFileTools;
import net.sourceforge.seqware.common.util.processtools.ProcessTools;
/**
* <p>
* LockfileTests class.
* </p>
*
* @author boconnor
* @version $Id: $Id
* @since 0.13.3
*/
public class LockfileTests {
/**
* <p>
* main.
* </p>
*
* @param args
* an array of {@link java.lang.String} objects.
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String outdir = args[0];
String type = args[1];
// the lockAndAppend method actually tries 20 times internally, no need to loop here
for (int i = 0; i < 1; i++) {
int maxTries = 10;
for (int j = 0; j < maxTries; j++) {
// Break on success
if (LockingFileTools.lockAndAppend(new File(outdir + "/tmp_" + i + ".txt"), i + System.getProperty("line.separator"))) {
Log.info("Wrote lock file: " + outdir + "/tmp_" + i + ".txt");
break;
}
// Sleep if going to try again
else if (j < maxTries) {
Log.info("Sleeping for lock file: " + outdir + "/tmp_" + i + ".txt");
ProcessTools.sleep(2);
}
// Return error if failed on last try
else {
Log.info("Failed to open lock file for: " + outdir + "/tmp_" + i + ".txt");
System.exit(1);
}
}
}
}
}