mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-10-17 18:19:04 +02:00
mscluster: reuse control buffers and cut per-property allocations (#2673)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
a8adb6d7bc
commit
930609b0e5
@@ -29,7 +29,7 @@ import (
|
||||
func TestControlBuffer(t *testing.T) {
|
||||
calls := 0
|
||||
|
||||
data, err := controlBuffer(time.Time{}, 0, func(buffer []byte) (uint32, error) {
|
||||
data, err := controlBufferIn(time.Time{}, newControlBuffer(0), func(buffer []byte) (uint32, error) {
|
||||
calls++
|
||||
switch calls {
|
||||
case 1:
|
||||
@@ -62,7 +62,7 @@ func TestControlBuffer(t *testing.T) {
|
||||
func TestControlBufferPresized(t *testing.T) {
|
||||
calls := 0
|
||||
|
||||
data, err := controlBuffer(time.Time{}, 8, func(buffer []byte) (uint32, error) {
|
||||
data, err := controlBufferIn(time.Time{}, newControlBuffer(8), func(buffer []byte) (uint32, error) {
|
||||
calls++
|
||||
|
||||
if len(buffer) != 8 {
|
||||
@@ -79,7 +79,7 @@ func TestControlBufferPresized(t *testing.T) {
|
||||
|
||||
calls = 0
|
||||
|
||||
data, err = controlBuffer(time.Time{}, 4, func(buffer []byte) (uint32, error) {
|
||||
data, err = controlBufferIn(time.Time{}, newControlBuffer(4), func(buffer []byte) (uint32, error) {
|
||||
calls++
|
||||
if calls == 1 {
|
||||
return 6, windows.ERROR_MORE_DATA
|
||||
@@ -96,7 +96,7 @@ func TestControlBufferPresized(t *testing.T) {
|
||||
}
|
||||
|
||||
// A pre-sized buffer that is already large enough must not be shrunk or retried.
|
||||
_, err = controlBuffer(time.Time{}, 8, func([]byte) (uint32, error) { return 4, windows.ERROR_MORE_DATA })
|
||||
_, err = controlBufferIn(time.Time{}, newControlBuffer(8), func([]byte) (uint32, error) { return 4, windows.ERROR_MORE_DATA })
|
||||
if err == nil {
|
||||
t.Fatal("accepted ERROR_MORE_DATA without growth")
|
||||
}
|
||||
@@ -114,7 +114,7 @@ func TestControlBufferInvalidSizes(t *testing.T) {
|
||||
{"unrelated_error", 0, windows.ERROR_ACCESS_DENIED},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
_, err := controlBuffer(time.Time{}, 0, func([]byte) (uint32, error) { return tc.size, tc.err })
|
||||
_, err := controlBufferIn(time.Time{}, newControlBuffer(0), func([]byte) (uint32, error) { return tc.size, tc.err })
|
||||
if err == nil {
|
||||
t.Fatal("accepted invalid native response")
|
||||
}
|
||||
@@ -130,7 +130,7 @@ func TestControlBufferDeadline(t *testing.T) {
|
||||
calls := 0
|
||||
deadline := time.Now().Add(time.Millisecond)
|
||||
|
||||
_, err := controlBuffer(deadline, 0, func([]byte) (uint32, error) {
|
||||
_, err := controlBufferIn(deadline, newControlBuffer(0), func([]byte) (uint32, error) {
|
||||
calls++
|
||||
|
||||
time.Sleep(2 * time.Millisecond)
|
||||
@@ -141,7 +141,7 @@ func TestControlBufferDeadline(t *testing.T) {
|
||||
t.Fatalf("calls = %d, err = %v", calls, err)
|
||||
}
|
||||
|
||||
_, err = controlBuffer(time.Now().Add(-time.Second), 0, func([]byte) (uint32, error) {
|
||||
_, err = controlBufferIn(time.Now().Add(-time.Second), newControlBuffer(0), func([]byte) (uint32, error) {
|
||||
t.Fatal("started native call after deadline")
|
||||
|
||||
return 0, nil
|
||||
@@ -236,7 +236,7 @@ func TestStateBuffersInvalidNativeResponses(t *testing.T) {
|
||||
func TestControlBufferSuccessfulSizeProbe(t *testing.T) {
|
||||
calls := 0
|
||||
|
||||
data, err := controlBuffer(time.Time{}, 0, func(buffer []byte) (uint32, error) {
|
||||
data, err := controlBufferIn(time.Time{}, newControlBuffer(0), func(buffer []byte) (uint32, error) {
|
||||
calls++
|
||||
if calls == 1 {
|
||||
return 4, nil
|
||||
|
||||
Reference in New Issue
Block a user