From 29b1a3bf0d4479114d406bff523e90b290cb71e6 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Mon, 24 Jun 2024 18:01:09 +0100 Subject: [PATCH] chore(scaletest/dashboard): stub out initChromeDPCtx in unit tests --- scaletest/dashboard/config.go | 3 +++ scaletest/dashboard/run.go | 5 ++++- scaletest/dashboard/run_test.go | 7 +++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/scaletest/dashboard/config.go b/scaletest/dashboard/config.go index 2bd72ccdf6cbc..91d9ae3a5abbd 100644 --- a/scaletest/dashboard/config.go +++ b/scaletest/dashboard/config.go @@ -2,6 +2,7 @@ package dashboard import ( "context" + "net/url" "time" "cdr.dev/slog" @@ -28,6 +29,8 @@ type Config struct { Screenshot func(ctx context.Context, filename string) (string, error) // RandIntn is a function that returns a random number between 0 and n-1. RandIntn func(int) int `json:"-"` + // InitChromeDPCtx is a function that initializes ChromeDP into the given context.Context. + InitChromeDPCtx func(ctx context.Context, log slog.Logger, u *url.URL, sessionToken string, headless bool) (context.Context, context.CancelFunc, error) `json:"-"` } func (c Config) Validate() error { diff --git a/scaletest/dashboard/run.go b/scaletest/dashboard/run.go index 0c80d98d59e1b..5625e25a46c76 100644 --- a/scaletest/dashboard/run.go +++ b/scaletest/dashboard/run.go @@ -39,6 +39,9 @@ func NewRunner(client *codersdk.Client, metrics Metrics, cfg Config) *Runner { if cfg.RandIntn == nil { cfg.RandIntn = rand.Intn } + if cfg.InitChromeDPCtx == nil { + cfg.InitChromeDPCtx = initChromeDPCtx + } return &Runner{ client: client, cfg: cfg, @@ -70,7 +73,7 @@ func (r *Runner) runUntilDeadlineExceeded(ctx context.Context) error { return xerrors.Errorf("user has no organizations") } - cdpCtx, cdpCancel, err := initChromeDPCtx(ctx, r.cfg.Logger, r.client.URL, r.client.SessionToken(), r.cfg.Headless) + cdpCtx, cdpCancel, err := r.cfg.InitChromeDPCtx(ctx, r.cfg.Logger, r.client.URL, r.client.SessionToken(), r.cfg.Headless) if err != nil { return xerrors.Errorf("init chromedp ctx: %w", err) } diff --git a/scaletest/dashboard/run_test.go b/scaletest/dashboard/run_test.go index af9725e201085..bd25e0f60a335 100644 --- a/scaletest/dashboard/run_test.go +++ b/scaletest/dashboard/run_test.go @@ -3,6 +3,7 @@ package dashboard_test import ( "context" "math/rand" + "net/url" "runtime" "sync" "sync/atomic" @@ -52,6 +53,7 @@ func Test_Run(t *testing.T) { waitLoadedCalled atomic.Bool screenshotCalled atomic.Bool ) + cancelDone := make(chan struct{}) cfg := dashboard.Config{ Interval: 500 * time.Millisecond, Jitter: 100 * time.Millisecond, @@ -72,6 +74,9 @@ func Test_Run(t *testing.T) { return "/fake/path/to/" + name + ".png", nil }, RandIntn: rg.Intn, + InitChromeDPCtx: func(ctx context.Context, _ slog.Logger, _ *url.URL, _ string, _ bool) (context.Context, context.CancelFunc, error) { + return ctx, func() { close(cancelDone) }, nil + }, } r := dashboard.NewRunner(client, m, cfg) ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort) @@ -84,6 +89,8 @@ func Test_Run(t *testing.T) { err, ok := <-done assert.True(t, ok) require.NoError(t, err) + _, ok = <-cancelDone + require.False(t, ok, "cancel should have been called") for _, dur := range m.ObservedDurations["succeeds"] { assert.NotZero(t, dur) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy