From f99df089c6d97e16e6fe097728cf0cc3309529bf Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:54:24 +0000 Subject: [PATCH 1/2] chore: dont install and run metrics stack on kind network smoke --- .github/workflows/ci.yml | 9 ++++++++- spartan/scripts/setup_local_k8s.sh | 16 +++++++++++++-- .../end-to-end/scripts/network_test.sh | 20 ++++++++++++------- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4726415358b6..33e2e7fbecab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -381,7 +381,14 @@ jobs: docker pull aztecprotocol/end-to-end:${{ env.GIT_COMMIT }} echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u aztecprotocolci --password-stdin cd yarn-project/end-to-end - NAMESPACE=smoke FRESH_INSTALL=true VALUES_FILE=ci-smoke.yaml ./scripts/network_test.sh ./src/spartan/smoke.test.ts + + export INSTALL_CHAOS_MESH=false + export INSTALL_METRICS=false + export NAMESPACE=smoke + export FRESH_INSTALL=true + export VALUES_FILE=ci-smoke.yaml + + ./scripts/network_test.sh ./src/spartan/smoke.test.ts - name: Copy Network Logs if: always() run: scripts/copy_from_tester yarn-project/end-to-end/scripts/network-test.log network-test.log || true diff --git a/spartan/scripts/setup_local_k8s.sh b/spartan/scripts/setup_local_k8s.sh index 8068ce867ae3..1cd1fff82aa3 100755 --- a/spartan/scripts/setup_local_k8s.sh +++ b/spartan/scripts/setup_local_k8s.sh @@ -4,6 +4,10 @@ set -e SCRIPT_DIR="$(dirname $(realpath -s "${BASH_SOURCE[0]}"))" +# Selectively install metrics and chaos mesh +INSTALL_METRICS=${INSTALL_METRICS:-true} +INSTALL_CHAOS_MESH=${INSTALL_CHAOS_MESH:-true} + # exit if we are not on linux amd64 if [ "$(uname)" != "Linux" ] || [ "$(uname -m)" != "x86_64" ]; then echo "This script is only supported on Linux amd64" @@ -61,5 +65,13 @@ fi kubectl config use-context kind-kind || true -"$SCRIPT_DIR"/../chaos-mesh/install.sh -"$SCRIPT_DIR"/../metrics/install-kind.sh +if [ "$INSTALL_CHAOS_MESH" = "true" ]; then + echo "Installing chaos mesh" + "$SCRIPT_DIR"/../chaos-mesh/install.sh +fi + +if [ "$INSTALL_METRICS" = "true" ]; then + echo "Installing metrics" + "$SCRIPT_DIR"/../metrics/install-kind.sh +fi + diff --git a/yarn-project/end-to-end/scripts/network_test.sh b/yarn-project/end-to-end/scripts/network_test.sh index e65ded1a4ac5..86da5deb5f27 100755 --- a/yarn-project/end-to-end/scripts/network_test.sh +++ b/yarn-project/end-to-end/scripts/network_test.sh @@ -32,6 +32,8 @@ FRESH_INSTALL="${FRESH_INSTALL:-false}" AZTEC_DOCKER_TAG=${AZTEC_DOCKER_TAG:-$(git rev-parse HEAD)} INSTALL_TIMEOUT=${INSTALL_TIMEOUT:-30m} CLEANUP_CLUSTER=${CLEANUP_CLUSTER:-false} +export INSTALL_CHAOS_MESH=${INSTALL_CHAOS_MESH:-true} +export INSTALL_METRICS=${INSTALL_METRICS:-true} # Check required environment variable if [ -z "${NAMESPACE:-}" ]; then @@ -125,7 +127,7 @@ function cleanup() { trap cleanup SIGINT SIGTERM EXIT # if we don't have a chaos values, remove any existing chaos experiments -if [ -z "${CHAOS_VALUES:-}" ]; then +if [ -z "${CHAOS_VALUES:-}" ] && [ "$INSTALL_CHAOS_MESH" = "true" ]; then echo "Deleting existing network chaos experiments..." kubectl delete networkchaos --all --all-namespaces fi @@ -158,14 +160,18 @@ GRAFANA_PASSWORD=$(kubectl get secrets -n metrics metrics-grafana -o jsonpath='{ NAMESPACE=${NAMESPACE:-default} # If we are unable to apply network shaping, as we cannot change existing chaos configurations, then delete existing configurations and try again -if ! handle_network_shaping; then - echo "Deleting existing network chaos experiments..." - kubectl delete networkchaos --all --all-namespaces - +if [ "$INSTALL_CHAOS_MESH" = "true" ]; then if ! handle_network_shaping; then - echo "Error: failed to apply network shaping configuration!" - exit 1 + echo "Deleting existing network chaos experiments..." + kubectl delete networkchaos --all --all-namespaces + + if ! handle_network_shaping; then + echo "Error: failed to apply network shaping configuration!" + exit 1 + fi fi +else + echo "Skipping network chaos configuration (INSTALL_CHAOS_MESH=false)" fi # Get the values from the values file From ee46cc1172a93a40beb9224c59aff9544f284695 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Mon, 20 Jan 2025 19:05:28 +0000 Subject: [PATCH 2/2] fix: remove in ts smoke --- .../end-to-end/scripts/network_test.sh | 6 ++++- .../end-to-end/src/spartan/smoke.test.ts | 25 +------------------ yarn-project/end-to-end/src/spartan/utils.ts | 2 +- 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/yarn-project/end-to-end/scripts/network_test.sh b/yarn-project/end-to-end/scripts/network_test.sh index 86da5deb5f27..5d71747966e8 100755 --- a/yarn-project/end-to-end/scripts/network_test.sh +++ b/yarn-project/end-to-end/scripts/network_test.sh @@ -154,7 +154,11 @@ PXE_PORT=$(echo $FREE_PORTS | awk '{print $1}') ANVIL_PORT=$(echo $FREE_PORTS | awk '{print $2}') METRICS_PORT=$(echo $FREE_PORTS | awk '{print $3}') -GRAFANA_PASSWORD=$(kubectl get secrets -n metrics metrics-grafana -o jsonpath='{.data.admin-password}' | base64 --decode) +if [ "$INSTALL_METRICS" = "true" ]; then + GRAFANA_PASSWORD=$(kubectl get secrets -n metrics metrics-grafana -o jsonpath='{.data.admin-password}' | base64 --decode) +else + GRAFANA_PASSWORD="" +fi # Namespace variable (assuming it's set) NAMESPACE=${NAMESPACE:-default} diff --git a/yarn-project/end-to-end/src/spartan/smoke.test.ts b/yarn-project/end-to-end/src/spartan/smoke.test.ts index 5b4e2eb68c11..7c94b93b369c 100644 --- a/yarn-project/end-to-end/src/spartan/smoke.test.ts +++ b/yarn-project/end-to-end/src/spartan/smoke.test.ts @@ -5,24 +5,12 @@ import { RollupAbi } from '@aztec/l1-artifacts'; import { createPublicClient, getAddress, getContract, http } from 'viem'; import { foundry } from 'viem/chains'; -import { type AlertConfig } from '../quality_of_service/alert_checker.js'; -import { isK8sConfig, runAlertCheck, setupEnvironment, startPortForward } from './utils.js'; +import { isK8sConfig, setupEnvironment, startPortForward } from './utils.js'; const config = setupEnvironment(process.env); const debugLogger = createLogger('e2e:spartan-test:smoke'); -// QoS alerts for when we are running in k8s -const qosAlerts: AlertConfig[] = [ - { - alert: 'SequencerTimeToCollectAttestations', - expr: 'avg_over_time(aztec_sequencer_time_to_collect_attestations[2m]) > 2500', - labels: { severity: 'error' }, - for: '10m', - annotations: {}, - }, -]; - describe('smoke test', () => { let pxe: PXE; beforeAll(async () => { @@ -35,23 +23,12 @@ describe('smoke test', () => { hostPort: config.HOST_PXE_PORT, }); PXE_URL = `http://127.0.0.1:${config.HOST_PXE_PORT}`; - - await startPortForward({ - resource: `svc/metrics-grafana`, - namespace: 'metrics', - containerPort: config.CONTAINER_METRICS_PORT, - hostPort: config.HOST_METRICS_PORT, - }); } else { PXE_URL = config.PXE_URL; } pxe = await createCompatibleClient(PXE_URL, debugLogger); }); - afterAll(async () => { - await runAlertCheck(config, qosAlerts, debugLogger); - }); - it('should be able to get node enr', async () => { const info = await pxe.getNodeInfo(); expect(info).toBeDefined(); diff --git a/yarn-project/end-to-end/src/spartan/utils.ts b/yarn-project/end-to-end/src/spartan/utils.ts index f94bc7b2ff07..547497a6d853 100644 --- a/yarn-project/end-to-end/src/spartan/utils.ts +++ b/yarn-project/end-to-end/src/spartan/utils.ts @@ -22,7 +22,7 @@ const k8sLocalConfigSchema = z.object({ CONTAINER_ETHEREUM_PORT: z.coerce.number().default(8545), HOST_METRICS_PORT: z.coerce.number().min(1, 'HOST_METRICS_PORT env variable must be set'), CONTAINER_METRICS_PORT: z.coerce.number().default(80), - GRAFANA_PASSWORD: z.string().min(1, 'GRAFANA_PASSWORD env variable must be set'), + GRAFANA_PASSWORD: z.string().optional(), METRICS_API_PATH: z.string().default('/api/datasources/proxy/uid/spartan-metrics-prometheus/api/v1'), SPARTAN_DIR: z.string().min(1, 'SPARTAN_DIR env variable must be set'), K8S: z.literal('local'),