Monitor VU cancel

Signed-off-by: Alex Vanin <a.vanin@yadro.com>
This commit is contained in:
Alexey Vanin 2023-10-31 14:46:28 +03:00
parent 96e0e0188e
commit 9c866ca6e1
2 changed files with 20 additions and 0 deletions

View file

@ -58,6 +58,9 @@ func (c *Client) Put(bucket, key string, payload goja.ArrayBuffer) PutResponse {
start := time.Now()
ch := CancelMonitor(c.vu.Context(), c.vu.State().Logger.WithField("method", "put"))
defer func() { close(ch) }()
ctx, cancel := context.WithTimeout(context.Background(), c.to)
defer cancel()
@ -136,6 +139,9 @@ func (c *Client) Delete(bucket, key string) DeleteResponse {
func (c *Client) Get(bucket, key string) GetResponse {
start := time.Now()
ch := CancelMonitor(c.vu.Context(), c.vu.State().Logger.WithField("method", "get"))
defer func() { close(ch) }()
ctx, cancel := context.WithTimeout(context.Background(), c.to)
defer cancel()

View file

@ -1,6 +1,7 @@
package s3
import (
"context"
"crypto/tls"
"fmt"
"net/http"
@ -10,6 +11,7 @@ import (
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/sirupsen/logrus"
"go.k6.io/k6/js/modules"
"go.k6.io/k6/metrics"
)
@ -117,3 +119,15 @@ func (s *S3) Connect(endpoint string, params map[string]string) (*Client, error)
to: timeout,
}, nil
}
func CancelMonitor(ctx context.Context, writer logrus.FieldLogger) chan<- struct{} {
ch := make(chan struct{})
go func() {
select {
case <-ctx.Done():
writer.WithField("error", ctx.Err()).Print("VU context done")
case <-ch:
}
}()
return ch
}