Skip to content

Add Benchmark COM-RPC interfaces#492

Draft
smanes0213 wants to merge 1 commit intomasterfrom
development/Benchmark_QA
Draft

Add Benchmark COM-RPC interfaces#492
smanes0213 wants to merge 1 commit intomasterfrom
development/Benchmark_QA

Conversation

@smanes0213
Copy link
Copy Markdown

  • Add IBenchmark.h: trigger/collectdata/setthreshold APIs with nanosecond latency stats, memory stats, pass/fail thresholds, and PerformanceCheckCompleted event notification
  • Add IBenchmarkPayloadCOMRPC.h: payload interface for benchmarking various COM-RPC parameter types (uint32, string, structs, buffers)
  • Update QAIds.h: register interface IDs for IBenchmark, IBenchmarkPayload, and associated iterators

- Add IBenchmark.h: trigger/collectdata/setthreshold APIs with
  nanosecond latency stats, memory stats, pass/fail thresholds,
  and PerformanceCheckCompleted event notification
- Add IBenchmarkPayloadCOMRPC.h: payload interface for benchmarking
  various COM-RPC parameter types (uint32, string, structs, buffers)
- Update QAIds.h: register interface IDs for IBenchmark,
  IBenchmarkPayload, and associated iterators

Signed-off-by: smanes0213 <sankalpmaneshwar46@outlook.com>
Copilot AI review requested due to automatic review settings April 15, 2026 05:08
@smanes0213 smanes0213 marked this pull request as draft April 15, 2026 05:10
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds new QualityAssurance COM-RPC interfaces to support benchmarking round-trip latency/memory behavior and to exercise a variety of COM-RPC parameter shapes, with corresponding QA interface ID allocations.

Changes:

  • Added IBenchmark interface for triggering benchmarks, collecting results, configuring thresholds, and emitting a completion event.
  • Added IBenchmarkPayload interface to benchmark different COM-RPC parameter types (primitives, strings, structs, buffers).
  • Registered new QA interface IDs for the benchmark and payload interfaces (plus iterators/notification IDs).

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
qa_interfaces/QAIds.h Allocates ID ranges for IBenchmark, notification, result iterator, and payload interfaces.
qa_interfaces/IBenchmark.h Introduces benchmark control/results interface plus completion notification sink.
qa_interfaces/IBenchmarkPayloadCOMRPC.h Introduces payload-sending interface to benchmark various parameter/return patterns.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +31 to +71
virtual uint32_t GetPayloadTypes(IPayloadTypeIterator*& types /* @out */) const = 0;

virtual uint32_t SendUint16(const uint16_t value) = 0;

virtual uint32_t SendUint32(const uint32_t value) = 0;

virtual uint32_t SendUint64(const uint64_t value) = 0;

virtual uint32_t SendBool(const bool value) = 0;

virtual uint32_t SendFloat(const float value) = 0;

virtual uint32_t SendDouble(const double value) = 0;

virtual uint32_t SendString(const string& value) = 0;

virtual uint32_t SendSampleData(const SampleData& data) = 0;

virtual uint32_t SendWithNoParameters() = 0;

virtual uint32_t SendBuffer(const uint16_t bufferSize, const uint8_t buffer[] /* @length:bufferSize @in */) = 0;

virtual uint32_t SendReceiveUint16(const uint16_t input, uint16_t &output /* @out */) const = 0;

virtual uint32_t SendReceiveUint32(const uint32_t input, uint32_t &output /* @out */) const = 0;

virtual uint32_t SendReceiveUint64(const uint64_t input, uint64_t &output /* @out */) const = 0;

virtual uint32_t SendReceiveBool(const bool input, bool &output /* @out */) const = 0;

virtual uint32_t SendReceiveFloat(const float input, float &output /* @out */) const = 0;

virtual uint32_t SendReceiveDouble(const double input, double &output /* @out */) const = 0;

virtual uint32_t SendReceiveString(const string &input, string &output /* @out */) const = 0;

virtual uint32_t SendReceiveSampleData(const SampleData &input, SampleData &output /* @out */) const = 0;

virtual uint32_t SendReceiveBuffer(uint16_t &bufferSize /* @inout */, uint8_t buffer[] /* @length:bufferSize @inout */) const = 0;

virtual uint32_t Add(const uint32_t a, const uint32_t b, uint32_t &result /* @out */) const = 0;

virtual uint32_t SendReceiveSampleData(const SampleData &input, SampleData &output /* @out */) const = 0;

virtual uint32_t SendReceiveBuffer(uint16_t &bufferSize /* @inout */, uint8_t buffer[] /* @length:bufferSize @inout */) const = 0;
Comment on lines +54 to +55
// @param success: True if thresholds were set
virtual Core::hresult SetThreshold(const float maxLatencyDeviationPct, const uint64_t maxMemoryGrowthBytes, bool& success /* @out */) = 0;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants