Refactor GenerateOperationAndRequest to clone Operation

In preparation for other work in the Secret Detection and Leak Prevention epic, the way Operation and Request instances are generated during testing will need to change. Instead of driving the generation using an original Request instance, the generation will be performed by cloning Operation and Request instances.

Special care should be taken when writing the Clone methods to be performant.

  1. Add a benchmark for RunnerService.GenerateOperationAndRequest and take a reading prior refactoring.
  2. Add a Clone method to Operation
  3. Add a Clone method to Request
  4. Add a Clone method to Response
  5. Refactor RunnerService.GenerateOperationAndRequest to accept an original Operation and Request which are copied using the new Clone method.
  6. Refactor RunnerService.GenerateCurrentOperation to use the new Clone method.
  7. Re-run benchmark and compare results. Goal is to be faster or similar in speed to original code.
  8. Add all needed tests
Edited by Michael Eddington