0

I am looking for a load testing tool which can execute Git clone command to clone a repository on GitHub Enterprise for multiple users concurrently and provide me the metrics of performance. Please let me know how can I achieve this.

Matt
  • 12,848
  • 2
  • 31
  • 53
  • I would ask: why are you load testing Github, and why do you need to do so many clones that you feel a major site like Github cannot handle it? – Schwern Mar 15 '22 at 23:17
  • @Schwern We are planning to host GitHub on a private server. we want to do the load testing by running multiple clones in parallel on one big repository. – Mohit Sharma Mar 16 '22 at 00:07
  • What do you mean by "GitHub on a private server"? Do you mean [Github Enterprise](https://github.com/enterprise)? If you want to do load testing of a Git server, many languages have libraries to do work in parallel and libraries to work with Git. But, again, this is an odd concern. Mass parallel cloning should not be a normal part of your workflow, cloning does not consume a lot of CPU, and it will only consume a lot of bandwidth if your repositories are too large. One Big Repository causes a lot of problems, consider breaking it up. – Schwern Mar 16 '22 at 00:46
  • Thanks @Schwern, Yes I mean GITHUB Enterprise. Can you suggest some activities which consumes more CPU and should be considered for Load testing if not cloning. Please suggest some tool to achieve the same as well. – Mohit Sharma Mar 16 '22 at 01:13
  • I would suggest asking Github support. – Schwern Mar 16 '22 at 16:45

1 Answers1

0

I'm not aware of any tool which supports Git directly, theoretically it should be sufficient to use HTTP or SSH protocol

If you plan to simulate other than checkout user actions you can consider i.e.

  1. Apache JMeter as the load testing tool
  2. JGit library to provide functions for working with remote Git repositories
  3. JSR223 Sampler(s) contain the Groovy code for executing Git commands

Example code for cloning the repo:

def git = org.eclipse.jgit.api.Git.cloneRepository()
        .setURI('https://your/remote/repository/')
        .setDirectory('/your/local/folder')
        .call()
Dmitri T
  • 159,985
  • 5
  • 83
  • 133