fix: test flush rate failure because of config modification (#46497)

### **User description**
issue: #46097

- the flush rate is modified into 4qps, so the testcase is fail.


___

### **PR Type**
Tests, Bug fix


___

### **Description**
- Replace sequential flush calls with concurrent requests to trigger
rate limiting

- Add sync.WaitGroup for concurrent goroutine execution

- Check for rate limit errors across multiple concurrent flush
operations

- Remove hardcoded error message expectation for flexibility


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Sequential Flush Calls"] -->|Replace with| B["Concurrent Flush Requests"]
  B -->|Use| C["sync.WaitGroup"]
  C -->|Validate| D["Rate Limit Errors"]
```



<details><summary><h3>File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>insert_test.go</strong><dd><code>Refactor flush rate
test to use concurrent requests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

tests/go_client/testcases/insert_test.go

<ul><li>Added <code>sync</code> package import for concurrent goroutine
synchronization<br> <li> Replaced sequential flush calls with 10
concurrent flush operations <br>using goroutines<br> <li> Implemented
WaitGroup to synchronize all concurrent flush requests<br> <li> Modified
error validation to check for rate limit errors across all
<br>concurrent attempts instead of expecting specific sequential
behavior<br> <li> Relaxed error message matching to only check for "rate
limit exceeded" <br>substring</ul>


</details>


  </td>
<td><a
href="https://github.com/milvus-io/milvus/pull/46497/files#diff-89a4ddfa15d096e6a5f647da0e461715e5a692b375b04a3d01939f419b00f529">+19/-4</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tbody></table>

</details>

___



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

## Release Notes

* **Tests**
* Enhanced testing of concurrent flush operations to improve validation
of system reliability under concurrent load scenarios.

---

**Note:** This release contains internal testing improvements with no
direct user-facing feature changes.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: chyezh <chyezh@outlook.com>
This commit is contained in:
Zhen Ye 2025-12-22 16:19:17 +08:00 committed by GitHub
parent 5e28f45c5a
commit 341388479a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,6 +3,7 @@ package testcases
import (
"math"
"strconv"
"sync"
"testing"
"time"
@ -897,8 +898,22 @@ func TestFlushRate(t *testing.T) {
_, err := mc.Insert(ctx, insertOpt)
common.CheckErr(t, err, true)
_, err = mc.Flush(ctx, client.NewFlushOption(schema.CollectionName))
common.CheckErr(t, err, true)
_, err = mc.Flush(ctx, client.NewFlushOption(schema.CollectionName))
common.CheckErr(t, err, false, "request is rejected by grpc RateLimiter middleware, please retry later: rate limit exceeded[rate=0.1]")
cnt := 10
errs := make([]error, cnt)
wg := &sync.WaitGroup{}
wg.Add(cnt)
for i := 0; i < cnt; i++ {
go func(i int) {
defer wg.Done()
_, err := mc.Flush(ctx, client.NewFlushOption(schema.CollectionName))
errs[i] = err
}(i)
}
wg.Wait()
for _, err := range errs {
if err != nil {
common.CheckErr(t, err, false, "request is rejected by grpc RateLimiter middleware, please retry later: rate limit exceeded")
}
}
}