Jmeter Jgit JSR223Sampler javax.script.ScriptException 错误

Jmeter Jgit JSR223Sampler javax.script.ScriptException error

我正在使用 Jgit 和 Jmeter 克隆多个 git 存储库。我正在通过 10 个线程用户克隆 10 个不同的存储库。

下面是我正在使用的代码。

  import org.eclipse.jgit.api.Git;
  import org.apache.commons.io.FileUtils;
  import org.eclipse.jgit.revwalk.RevCommit;
  import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
  import org.eclipse.jgit.transport.CredentialsProvider;
  def url_var = vars.get("repo_url");
  log.info("This is the URL " + url_var)
  Git git = Git.cloneRepository().setURI( url_var ).call();

我在 运行 测试时遇到错误。

o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: javax.script.ScriptException: org.eclipse.jgit.api.errors.JGitInternalException: Destination path ".git" already exists and is not an empty directory javax.script.ScriptException: javax.script.ScriptException: org.eclipse.jgit.api.errors.JGitInternalException: Destination path ".git" already exists and is not an empty directory at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158) ~[groovy-all-2.4.10.jar:2.4.10] at javax.script.AbstractScriptEngine.eval(Unknown Source) ~[?:1.8.0_73] at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:222) ~[ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:69) [ApacheJMeter_java.jar:3.2 r1790748] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:491) [ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:425) [ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254) [ApacheJMeter_core.jar:3.2 r1790748] at java.lang.Thread.run(Unknown Source) [?:1.8.0_73]

在 10 个线程中,8 个会成功执行克隆操作,2 个会失败并出现上述错误。我没有指定任何目的地,因此 repo 目录是在默认的 jmeter bin 目录中创建的。我尝试指定 repo 目录,但它仍然会失败并显示 already exists and is not an empty directory 错误。

为每个存储库创建一个不同的文件夹,在 运行 命令和 运行 克隆部分之前清理它。