From 6e1a11bcd0837641dcf7189ad0a5308aed0de58f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 13:13:52 -0700 Subject: [PATCH 1/3] Stop using deprecated deployment templates (#5910) (#5915) (cherry picked from commit 484de91ac9d1e8aa15a1d0b5b1c8dad0daf7df2e) Co-authored-by: Shaunak Kashyap --- .../ess/create_deployment_csp_configuration.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/testing/ess/create_deployment_csp_configuration.yaml b/pkg/testing/ess/create_deployment_csp_configuration.yaml index 199f664a65a..c0a12f8d67a 100644 --- a/pkg/testing/ess/create_deployment_csp_configuration.yaml +++ b/pkg/testing/ess/create_deployment_csp_configuration.yaml @@ -1,15 +1,15 @@ gcp: - integrations_server_conf_id: "gcp.integrationsserver.n2.68x32x45.2" + integrations_server_conf_id: "gcp.integrationsserver.n2.68x32x45" elasticsearch_conf_id: "gcp.es.datahot.n2.68x10x45" - elasticsearch_deployment_template_id: "gcp-storage-optimized-v5" + elasticsearch_deployment_template_id: "gcp-storage-optimized" kibana_instance_configuration_id: "gcp.kibana.n2.68x32x45" azure: - integrations_server_conf_id: "azure.integrationsserver.fsv2.2" + integrations_server_conf_id: "azure.integrationsserver.fsv2" elasticsearch_conf_id: "azure.es.datahot.edsv4" - elasticsearch_deployment_template_id: "azure-storage-optimized-v2" + elasticsearch_deployment_template_id: "azure-storage-optimized" kibana_instance_configuration_id: "azure.kibana.fsv2" aws: - integrations_server_conf_id: "aws.integrationsserver.c5d.2.1" - elasticsearch_conf_id: "aws.es.datahot.i3.1.1" - elasticsearch_deployment_template_id: "aws-storage-optimized-v5" - kibana_instance_configuration_id: "aws.kibana.c5d.1.1" \ No newline at end of file + integrations_server_conf_id: "aws.integrationsserver.c5d" + elasticsearch_conf_id: "aws.es.datahot.i3" + elasticsearch_deployment_template_id: "aws-storage-optimized" + kibana_instance_configuration_id: "aws.kibana.c5d" From 1690dfe70d014ab8d6a80dccd5e8f8e91df13660 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 23:14:11 +0000 Subject: [PATCH 2/3] Skip TestAPMConfig for now (#5891) (#5908) (cherry picked from commit fc99ac7c1d5e6e5f312ce94d86e0671c8122012a) Co-authored-by: Shaunak Kashyap --- testing/integration/apm_propagation_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testing/integration/apm_propagation_test.go b/testing/integration/apm_propagation_test.go index 6325f941259..8dd411e0a48 100644 --- a/testing/integration/apm_propagation_test.go +++ b/testing/integration/apm_propagation_test.go @@ -55,6 +55,8 @@ func TestAPMConfig(t *testing.T) { Group: Default, Stack: &define.Stack{}, }) + t.Skip("Flaky test: https://github.com/elastic/elastic-agent/issues/5890") + f, err := define.NewFixtureFromLocalBuild(t, define.Version()) require.NoError(t, err) From df6c7fa5686f6e39acc805f4ebd8692ab5951835 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 2 Nov 2024 13:41:49 +0000 Subject: [PATCH 3/3] Trim spaces and add unit tests for `cli.confirm` function (#5909) (#5918) * Add unit test for cli.confirm function * Trim spaces * Add license header * Adding CHANGELOG entry * Reorder imports * Refactoring (cherry picked from commit d39b248bfa95211d2ead2cbb2393e6182a1aa254) Co-authored-by: Shaunak Kashyap --- .../fragments/1730418510-confirm-test.yaml | 32 ++++++++ internal/pkg/cli/confirm.go | 2 +- internal/pkg/cli/confirm_test.go | 75 +++++++++++++++++++ 3 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 changelog/fragments/1730418510-confirm-test.yaml create mode 100644 internal/pkg/cli/confirm_test.go diff --git a/changelog/fragments/1730418510-confirm-test.yaml b/changelog/fragments/1730418510-confirm-test.yaml new file mode 100644 index 00000000000..af587eeee53 --- /dev/null +++ b/changelog/fragments/1730418510-confirm-test.yaml @@ -0,0 +1,32 @@ +# Kind can be one of: +# - breaking-change: a change to previously-documented behavior +# - deprecation: functionality that is being removed in a later release +# - bug-fix: fixes a problem in a previous version +# - enhancement: extends functionality but does not break or fix existing behavior +# - feature: new functionality +# - known-issue: problems that we are aware of in a given version +# - security: impacts on the security of a product or a user’s deployment. +# - upgrade: important information for someone upgrading from a prior version +# - other: does not fit into any of the other categories +kind: bug-fix + +# Change summary; a 80ish characters long description of the change. +summary: Allows users to enter spaces around yes/no inputs in CLI confirmation prompts. + +# Long description; in case the summary is not enough to describe the change +# this field accommodate a description without length limits. +# NOTE: This field will be rendered only for breaking-change and known-issue kinds at the moment. +#description: + +# Affected component; usually one of "elastic-agent", "fleet-server", "filebeat", "metricbeat", "auditbeat", "all", etc. +component: elastic-agent + +# PR URL; optional; the PR number that added the changeset. +# If not present is automatically filled by the tooling finding the PR where this changelog fragment has been added. +# NOTE: the tooling supports backports, so it's able to fill the original PR number instead of the backport PR number. +# Please provide it if you are adding a fragment for a different PR. +pr: https://github.com/elastic/elastic-agent/pull/5909 + +# Issue URL; optional; the GitHub issue related to this changeset (either closes or is part of). +# If not present is automatically filled by the tooling with the issue linked to the PR number. +#issue: https://github.com/owner/repo/1234 diff --git a/internal/pkg/cli/confirm.go b/internal/pkg/cli/confirm.go index 099e723622b..e77d6b14bce 100644 --- a/internal/pkg/cli/confirm.go +++ b/internal/pkg/cli/confirm.go @@ -34,7 +34,7 @@ func confirm(r io.Reader, out io.Writer, prompt string, def bool) (bool, error) if !reader.Scan() { break } - switch strings.ToLower(reader.Text()) { + switch strings.ToLower(strings.TrimSpace(reader.Text())) { case "": return def, nil case "y", "yes", "yeah": diff --git a/internal/pkg/cli/confirm_test.go b/internal/pkg/cli/confirm_test.go new file mode 100644 index 00000000000..21720f3d0fb --- /dev/null +++ b/internal/pkg/cli/confirm_test.go @@ -0,0 +1,75 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License 2.0; +// you may not use this file except in compliance with the Elastic License 2.0. + +package cli + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestConfirm(t *testing.T) { + cases := map[string]struct { + expectedResult bool + expectedErr string + }{ + "y": {true, ""}, + "y ": {true, ""}, + " y": {true, ""}, + "y\t": {true, ""}, + "\ty": {true, ""}, + "yes": {true, ""}, + "yeah": {true, ""}, + "Y": {true, ""}, + "YES": {true, ""}, + "YEAH": {true, ""}, + "Yes": {true, ""}, + "Yeah": {true, ""}, + "Yup": {false, "error reading user input"}, + "n": {false, ""}, + "n ": {false, ""}, + " n": {false, ""}, + "n\t": {false, ""}, + "\tn": {false, ""}, + "no": {false, ""}, + "N": {false, ""}, + "NO": {false, ""}, + "No": {false, ""}, + "nope": {false, "error reading user input"}, + } + + testFn := func(t *testing.T, input string, def, expectedResult bool, expectedErr string) { + inputReader := strings.NewReader(input) + var outWriter strings.Builder + result, err := confirm(inputReader, &outWriter, "prompt", def) + + prompt := "prompt " + if def { + prompt += "[Y/n]:" + } else { + prompt += "[y/N]:" + } + + require.Equal(t, expectedResult, result) + if expectedErr == "" { + require.NoError(t, err) + require.Equal(t, prompt, outWriter.String()) + } else { + expectedOut := prompt + "Please write 'y' or 'n'\n" + prompt + require.Equal(t, expectedErr, err.Error()) + require.Equal(t, expectedOut, outWriter.String()) + } + } + + for input, test := range cases { + t.Run(input+"-default-to-yes", func(t *testing.T) { + testFn(t, input, true, test.expectedResult, test.expectedErr) + }) + t.Run(input+"-default-to-no", func(t *testing.T) { + testFn(t, input, false, test.expectedResult, test.expectedErr) + }) + } +}