From 13282fbd4af041d2962b6e550e596539c9227767 Mon Sep 17 00:00:00 2001 From: Dave Lee Date: Wed, 27 Mar 2024 00:45:05 -0400 Subject: [PATCH] push up for testing --- core/http/ctx/fiber.go | 12 +++++++----- pkg/utils/base64.go | 7 ++++++- tests/e2e-aio/e2e-aio.test | Bin 0 -> 12683199 bytes tests/e2e-aio/e2e_test.go | 1 + 4 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 tests/e2e-aio/e2e-aio.test diff --git a/core/http/ctx/fiber.go b/core/http/ctx/fiber.go index 1784fee389ff..dfcc779783f9 100644 --- a/core/http/ctx/fiber.go +++ b/core/http/ctx/fiber.go @@ -30,8 +30,10 @@ func NewFiberContextExtractor(ml *model.ModelLoader, appConfig *config.Applicati // Takes a model string as input which should be the one received from the user request. // It returns the model name resolved from the context and an error if any. func (fce *FiberContextExtractor) ModelFromContext(ctx *fiber.Ctx, modelInput string, firstModel bool) (string, error) { - if ctx.Params("model") != "" { - modelInput = ctx.Params("model") + ctxPM := ctx.Params("model") + if ctxPM != "" { + log.Debug().Msgf("[FCE] Overriding param modelInput %q with ctx.Params value %q", modelInput, ctxPM) + modelInput = ctxPM } // Set model from bearer token, if available @@ -43,16 +45,16 @@ func (fce *FiberContextExtractor) ModelFromContext(ctx *fiber.Ctx, modelInput st models, _ := fce.ml.ListModels() if len(models) > 0 { modelInput = models[0] - log.Debug().Msgf("No model specified, using: %s", modelInput) + log.Debug().Msgf("[FCE] No model specified, using first available: %s", modelInput) } else { - log.Debug().Msgf("No model specified, returning error") + log.Debug().Msgf("[FCE] No model specified, none available, returning error") return "", fmt.Errorf("no model specified") } } // If a model is found in bearer token takes precedence if bearerExists { - log.Debug().Msgf("Using model from bearer token: %s", bearer) + log.Debug().Msgf("[FCE] Using model from bearer token: %s", bearer) modelInput = bearer } return modelInput, nil diff --git a/pkg/utils/base64.go b/pkg/utils/base64.go index c10715eda1c6..769d8a88c734 100644 --- a/pkg/utils/base64.go +++ b/pkg/utils/base64.go @@ -6,8 +6,13 @@ import ( "io" "net/http" "strings" + "time" ) +var base64DownloadClient http.Client = http.Client{ + Timeout: 30 * time.Second, +} + // this function check if the string is an URL, if it's an URL downloads the image in memory // encodes it in base64 and returns the base64 string @@ -18,7 +23,7 @@ import ( func GetImageURLAsBase64(s string) (string, error) { if strings.HasPrefix(s, "http") { // download the image - resp, err := http.Get(s) + resp, err := base64DownloadClient.Get(s) if err != nil { return "", err } diff --git a/tests/e2e-aio/e2e-aio.test b/tests/e2e-aio/e2e-aio.test new file mode 100644 index 0000000000000000000000000000000000000000..fb2ac429a1cbdcfadcdd737e742bb8ae9fbf8182 GIT binary patch literal 12683199 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