From 93732758994be3e4300729064b7fdef6f78fedb8 Mon Sep 17 00:00:00 2001 From: roberto montero Date: Wed, 31 Jan 2024 08:22:15 +0100 Subject: [PATCH 1/6] OnBoarding: new tests for args block list --- .../provision_onboarding_host_block_list_java.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml index 0881bd16d17..76e865116bb 100644 --- a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml +++ b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml @@ -1,5 +1,12 @@ -ami: !include tests/onboarding/infra_provision/includes/provision_ami.yml - +#ami: !include tests/onboarding/infra_provision/includes/provision_ami.yml +ami: + - name: ubuntu-x86-22.04 + # ami_id: ami-0557a15b87f6559cf + ami_id: ami-007855ac798b5175e + instance_type: t2.medium + user: ubuntu + os_type: linux + os_distro: deb init-config: install: !include tests/onboarding/infra_provision/includes/provision_init_vm_config.yml From 8efe871bdebcaac4f04cb24a6bd8c26e3eaed830 Mon Sep 17 00:00:00 2001 From: roberto montero Date: Wed, 31 Jan 2024 08:58:40 +0100 Subject: [PATCH 2/6] Debug command --- tests/onboarding/test_onboarding_blocklist.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/onboarding/test_onboarding_blocklist.py b/tests/onboarding/test_onboarding_blocklist.py index 7d2c2b85e0c..04db12e0c27 100644 --- a/tests/onboarding/test_onboarding_blocklist.py +++ b/tests/onboarding/test_onboarding_blocklist.py @@ -70,7 +70,11 @@ def _execute_remote_command(self, ssh_client, command, config={}, use_injection_ log_local_path = scenarios.onboarding_host_block_list.host_log_folder + f"/{unique_log_name}" - ssh_client.exec_command(command_with_config) + stdin, stdout, stderr = ssh_client.exec_command(command_with_config) + logger.info("Command output:") + logger.info(stdout.readlines()) + logger.info("Command err output:") + logger.info(stderr.readlines()) scp = SCPClient(ssh_client.get_transport()) From 8d93d25bc340145a9619b695e50286fd9f012c14 Mon Sep 17 00:00:00 2001 From: roberto montero Date: Wed, 31 Jan 2024 09:19:03 +0100 Subject: [PATCH 3/6] wait for ssh commands sync --- tests/onboarding/test_onboarding_blocklist.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tests/onboarding/test_onboarding_blocklist.py b/tests/onboarding/test_onboarding_blocklist.py index 04db12e0c27..3b03b7240de 100644 --- a/tests/onboarding/test_onboarding_blocklist.py +++ b/tests/onboarding/test_onboarding_blocklist.py @@ -60,7 +60,13 @@ def _execute_remote_command(self, ssh_client, command, config={}, use_injection_ with open(temp_file_path, "w") as host_config_file: host_config_file.write(test_conf_content) SCPClient(ssh_client.get_transport()).put(temp_file_path, file_name) - ssh_client.exec_command(f"sudo cp {file_name} /etc/datadog-agent/inject/host_config.yaml") + logger.info(f"Using config {file_name}") + # Copy config file and read out to force wait command execution + _, stdout, stderr = ssh_client.exec_command( + f"sudo cp {file_name} /etc/datadog-agent/inject/host_config.yaml" + ) + stdout.channel.set_combine_stderr(True) + output = stdout.readlines() else: # We'll use env variables instead of injection config yml for key in config: @@ -70,7 +76,7 @@ def _execute_remote_command(self, ssh_client, command, config={}, use_injection_ log_local_path = scenarios.onboarding_host_block_list.host_log_folder + f"/{unique_log_name}" - stdin, stdout, stderr = ssh_client.exec_command(command_with_config) + _, stdout, stderr = ssh_client.exec_command(command_with_config) logger.info("Command output:") logger.info(stdout.readlines()) logger.info("Command err output:") @@ -198,7 +204,11 @@ def test_builtIn_instrument_args(self, onboardig_vm): ), f"The command {command} was not instrumented, but it should be instrumented!" def _create_remote_executable_script(self, ssh_client, script_path, content="#!/bin/bash \\n echo 'Hey!'"): - ssh_client.exec_command(f"sudo sh -c 'echo \"${content}\" > {script_path}' && sudo chmod 755 {script_path}") + _, stdout, stderr = ssh_client.exec_command( + f"sudo sh -c 'echo \"${content}\" > {script_path}' && sudo chmod 755 {script_path}" + ) + stdout.channel.set_combine_stderr(True) + output = stdout.readlines() @irrelevant( condition="datadog-apm-inject" not in context.scenario.components From ca38c721d4c193361a9c254831ffd2fc91cadce0 Mon Sep 17 00:00:00 2001 From: roberto montero Date: Wed, 31 Jan 2024 09:21:00 +0100 Subject: [PATCH 4/6] Restore ami --- .../provision_onboarding_host_block_list_java.yml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml index 76e865116bb..a87adedc528 100644 --- a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml +++ b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml @@ -1,12 +1,5 @@ -#ami: !include tests/onboarding/infra_provision/includes/provision_ami.yml -ami: - - name: ubuntu-x86-22.04 - # ami_id: ami-0557a15b87f6559cf - ami_id: ami-007855ac798b5175e - instance_type: t2.medium - user: ubuntu - os_type: linux - os_distro: deb +ami: !include tests/onboarding/infra_provision/includes/provision_ami.yml + init-config: install: !include tests/onboarding/infra_provision/includes/provision_init_vm_config.yml From c6d81c687251918582b43ed899c34e07a9a9a54b Mon Sep 17 00:00:00 2001 From: roberto montero Date: Thu, 1 Feb 2024 09:11:16 +0100 Subject: [PATCH 5/6] full block list tests --- .gitlab-ci.yml | 8 +- ...sion_onboarding_host_block_list_dotnet.yml | 3 - ...vision_onboarding_host_block_list_java.yml | 3 - ...sion_onboarding_host_block_list_nodejs.yml | 52 ++++++++ ...sion_onboarding_host_block_list_python.yml | 49 ++++++++ ...vision_onboarding_host_block_list_ruby.yml | 90 ++++++++++++++ tests/onboarding/test_onboarding_blocklist.py | 111 ++++++++++++++++-- 7 files changed, 297 insertions(+), 19 deletions(-) create mode 100644 tests/onboarding/infra_provision/provision_onboarding_host_block_list_nodejs.yml create mode 100644 tests/onboarding/infra_provision/provision_onboarding_host_block_list_python.yml create mode 100644 tests/onboarding/infra_provision/provision_onboarding_host_block_list_ruby.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dccafd248ee..10c8f284aa5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -47,7 +47,7 @@ variables: KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: system-tests #helm-charts TEST: 1 -.onboarding_nodejs: +onboarding_nodejs: extends: .base_job_onboarding stage: nodejs_tracer allow_failure: true @@ -60,7 +60,7 @@ variables: matrix: - ONBOARDING_FILTER_ENV: [dev, prod] ONBOARDING_FILTER_WEBLOG: [test-app-nodejs] - SCENARIO: [ONBOARDING_HOST_INSTALL_MANUAL,ONBOARDING_CONTAINER_INSTALL_MANUAL, ONBOARDING_HOST_INSTALL_SCRIPT, ONBOARDING_CONTAINER_INSTALL_SCRIPT, ONBOARDING_HOST_UNINSTALL,ONBOARDING_CONTAINER_UNINSTALL] + SCENARIO: [ONBOARDING_HOST_INSTALL_MANUAL,ONBOARDING_CONTAINER_INSTALL_MANUAL, ONBOARDING_HOST_INSTALL_SCRIPT, ONBOARDING_CONTAINER_INSTALL_SCRIPT, ONBOARDING_HOST_UNINSTALL,ONBOARDING_CONTAINER_UNINSTALL, ONBOARDING_HOST_BLOCK_LIST] - ONBOARDING_FILTER_ENV: [dev, prod] ONBOARDING_FILTER_WEBLOG: [test-app-nodejs-alpine] SCENARIO: [ONBOARDING_CONTAINER_INSTALL_MANUAL, ONBOARDING_CONTAINER_INSTALL_SCRIPT, ONBOARDING_CONTAINER_UNINSTALL] @@ -103,7 +103,7 @@ onboarding_python: matrix: - ONBOARDING_FILTER_ENV: [dev, prod] ONBOARDING_FILTER_WEBLOG: [test-app-python] - SCENARIO: [ONBOARDING_HOST_INSTALL_MANUAL,ONBOARDING_CONTAINER_INSTALL_MANUAL, ONBOARDING_HOST_INSTALL_SCRIPT, ONBOARDING_CONTAINER_INSTALL_SCRIPT, ONBOARDING_HOST_UNINSTALL,ONBOARDING_CONTAINER_UNINSTALL] + SCENARIO: [ONBOARDING_HOST_INSTALL_MANUAL,ONBOARDING_CONTAINER_INSTALL_MANUAL, ONBOARDING_HOST_INSTALL_SCRIPT, ONBOARDING_CONTAINER_INSTALL_SCRIPT, ONBOARDING_HOST_UNINSTALL,ONBOARDING_CONTAINER_UNINSTALL, ONBOARDING_HOST_BLOCK_LIST] - ONBOARDING_FILTER_ENV: [dev, prod] ONBOARDING_FILTER_WEBLOG: [test-app-python-django-alpine] SCENARIO: [ONBOARDING_CONTAINER_INSTALL_MANUAL, ONBOARDING_CONTAINER_INSTALL_SCRIPT, ONBOARDING_CONTAINER_UNINSTALL] @@ -142,7 +142,7 @@ onboarding_ruby: matrix: - ONBOARDING_FILTER_ENV: [dev, prod] ONBOARDING_FILTER_WEBLOG: [test-app-ruby] - SCENARIO: [ONBOARDING_HOST_INSTALL_MANUAL, ONBOARDING_HOST_INSTALL_SCRIPT, ONBOARDING_HOST_UNINSTALL, ONBOARDING_CONTAINER_INSTALL_MANUAL,ONBOARDING_CONTAINER_UNINSTALL,ONBOARDING_CONTAINER_INSTALL_SCRIPT] + SCENARIO: [ONBOARDING_HOST_INSTALL_MANUAL, ONBOARDING_HOST_INSTALL_SCRIPT, ONBOARDING_HOST_UNINSTALL, ONBOARDING_CONTAINER_INSTALL_MANUAL,ONBOARDING_CONTAINER_UNINSTALL,ONBOARDING_CONTAINER_INSTALL_SCRIPT,ONBOARDING_HOST_BLOCK_LIST] script: - ./build.sh -i runner - timeout 2700s ./run.sh $SCENARIO --obd-weblog ${ONBOARDING_FILTER_WEBLOG} --obd-env ${ONBOARDING_FILTER_ENV} --obd-library ${TEST_LIBRARY} diff --git a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_dotnet.yml b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_dotnet.yml index fee46c8a279..151d486b38f 100644 --- a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_dotnet.yml +++ b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_dotnet.yml @@ -25,9 +25,6 @@ prepare-repos: agent: install: !include tests/onboarding/infra_provision/includes/provision_agent.yml -autoinjection_install_script: - install: !include tests/onboarding/infra_provision/includes/provision_lib_injection_host_script.yml - autoinjection_install_manual: install: !include tests/onboarding/infra_provision/includes/provision_lib_injection_host_manual.yml uninstall: diff --git a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml index a87adedc528..ff87315c98b 100644 --- a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml +++ b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_java.yml @@ -11,9 +11,6 @@ prepare-repos: agent: install: !include tests/onboarding/infra_provision/includes/provision_agent.yml -autoinjection_install_script: - install: !include tests/onboarding/infra_provision/includes/provision_lib_injection_host_script.yml - autoinjection_install_manual: install: !include tests/onboarding/infra_provision/includes/provision_lib_injection_host_manual.yml uninstall: diff --git a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_nodejs.yml b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_nodejs.yml new file mode 100644 index 00000000000..d82a7aefafe --- /dev/null +++ b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_nodejs.yml @@ -0,0 +1,52 @@ +ami: !include tests/onboarding/infra_provision/includes/provision_ami.yml + +init-config: + install: !include tests/onboarding/infra_provision/includes/provision_init_vm_config.yml + +init-dd-config-distro: !include tests/onboarding/infra_provision/includes/provision_init_dd_config_distro.yml + +prepare-repos: + install: !include tests/onboarding/infra_provision/includes/provision_prepare_repos.yml + +agent: + install: !include tests/onboarding/infra_provision/includes/provision_agent.yml + +autoinjection_install_manual: + install: !include tests/onboarding/infra_provision/includes/provision_lib_injection_host_manual.yml + uninstall: + - os_type: linux + command: dd-host-install --uninstall + +installation_checks: + install: !include tests/onboarding/infra_provision/includes/provision_installation_checks.yml + +language-variants: + - name: node16 + version: 16 + install: + - os_type: linux + os_distro: deb + command: curl -sL https://deb.nodesource.com/setup_16.x | sudo bash - && sudo apt-get install -y nodejs + - os_type: linux + os_distro: rpm + command: | + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm + [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion + nvm install 16.0.0 + nvm use node + n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local + +weblogs: + - name: test-app-nodejs + supported-language-versions: + - 16 + install: + - os_type: linux + command: | + sudo mkdir /opt/datadog/logs_injection && sudo chmod -R 777 /opt/datadog/logs_injection + sudo touch /opt/datadog/logs_injection/host_injection.log && sudo chmod 777 /opt/datadog/logs_injection/host_injection.log + sudo sh -c 'echo "DD_APM_INSTRUMENTATION_DEBUG=TRUE" >> /etc/environment' + sudo sh -c 'echo "DD_APM_INSTRUMENTATION_OUTPUT_PATHS=/opt/datadog/logs_injection/host_injection.log" >> /etc/environment' + source /etc/environment \ No newline at end of file diff --git a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_python.yml b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_python.yml new file mode 100644 index 00000000000..2cf1bc5015b --- /dev/null +++ b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_python.yml @@ -0,0 +1,49 @@ +ami: !include tests/onboarding/infra_provision/includes/provision_ami.yml + +init-config: + install: !include tests/onboarding/infra_provision/includes/provision_init_vm_config.yml + +init-dd-config-distro: !include tests/onboarding/infra_provision/includes/provision_init_dd_config_distro.yml + +prepare-repos: + install: !include tests/onboarding/infra_provision/includes/provision_prepare_repos.yml + +agent: + install: !include tests/onboarding/infra_provision/includes/provision_agent.yml + +autoinjection_install_manual: + install: !include tests/onboarding/infra_provision/includes/provision_lib_injection_host_manual.yml + +installation_checks: + install: !include tests/onboarding/infra_provision/includes/provision_installation_checks.yml + +language-variants: + - name: Python_3.8.15 + version: 3.8.15 + install: + - os_type: linux + os_distro: deb + copy_files: + - name: copy-auto-install-script + local_path: tests/onboarding/autoinjection/lang/python_install.sh + command: sudo apt-get -y update && sudo sh python_install.sh deb 3.8.15 + + - os_type: linux + os_distro: rpm + copy_files: + - name: copy-auto-install-script + local_path: tests/onboarding/autoinjection/lang/python_install.sh + command: sudo sh python_install.sh rpm 3.8.15 + +weblogs: + - name: test-app-python + supported-language-versions: + - 3.8.15 + install: + - os_type: linux + command: | + sudo mkdir /opt/datadog/logs_injection && sudo chmod -R 777 /opt/datadog/logs_injection + sudo touch /opt/datadog/logs_injection/host_injection.log && sudo chmod 777 /opt/datadog/logs_injection/host_injection.log + sudo sh -c 'echo "DD_APM_INSTRUMENTATION_DEBUG=TRUE" >> /etc/environment' + sudo sh -c 'echo "DD_APM_INSTRUMENTATION_OUTPUT_PATHS=/opt/datadog/logs_injection/host_injection.log" >> /etc/environment' + source /etc/environment \ No newline at end of file diff --git a/tests/onboarding/infra_provision/provision_onboarding_host_block_list_ruby.yml b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_ruby.yml new file mode 100644 index 00000000000..3f165a1bc1b --- /dev/null +++ b/tests/onboarding/infra_provision/provision_onboarding_host_block_list_ruby.yml @@ -0,0 +1,90 @@ +ami: + - name: ubuntu-x86-22.04 + ami_id: ami-007855ac798b5175e + instance_type: t2.medium + user: ubuntu + os_type: linux + os_distro: deb + + - name: amazon-linux-2023-x86 + ami_id: ami-06b09bfacae1453cb + instance_type: t2.medium + user: ec2-user + os_type: linux + os_distro: rpm + + #ARM BASED EC2 INSTANCES + - name: ubuntu-arm64-22.04 + ami_id: ami-016485166ec7fa705 + instance_type: t4g.small + user: ubuntu + os_type: linux + os_distro: deb + os_arch: arm + + - name: amazon-linux-2023-arm64 + ami_id: ami-04c97e62cb19d53f1 + instance_type: t4g.small + user: ec2-user + os_type: linux + os_distro: rpm + os_arch: arm + +init-config: + install: !include tests/onboarding/infra_provision/includes/provision_init_vm_config.yml + +init-dd-config-distro: !include tests/onboarding/infra_provision/includes/provision_init_dd_config_distro.yml + +prepare-repos: + install: !include tests/onboarding/infra_provision/includes/provision_prepare_repos.yml + +agent: + install: !include tests/onboarding/infra_provision/includes/provision_agent.yml + +autoinjection_install_script: + install: !include tests/onboarding/infra_provision/includes/provision_lib_injection_host_script.yml + +autoinjection_install_manual: + install: !include tests/onboarding/infra_provision/includes/provision_lib_injection_host_manual.yml + uninstall: + - os_type: linux + command: dd-host-install --uninstall + +installation_checks: + install: !include tests/onboarding/infra_provision/includes/provision_installation_checks.yml + +language-variants: + + - name: Ruby_3_0_2 + version: 3.0.2 + install: + - os_type: linux + os_distro: deb + command: | + sudo apt-get -y update + sudo DEBIAN_FRONTEND=noninteractive apt-get -y install git-core zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs yarn + sudo DEBIAN_FRONTEND=noninteractive apt-get -y install rbenv ruby-build ruby-dev + sudo DD_INSTRUMENT_SERVICE_WITH_APM=false gem install rails + sudo DD_INSTRUMENT_SERVICE_WITH_APM=false gem install bundler -v '~> 2.3.26' + - os_type: linux + os_distro: rpm + command: | + sudo yum install -y gcc + sudo amazon-linux-extras install -y ruby3.0 + sudo yum install -y ruby-devel + sudo yum groupinstall -y "Development Tools" + sudo DD_INSTRUMENT_SERVICE_WITH_APM=false gem install rails + sudo DD_INSTRUMENT_SERVICE_WITH_APM=false gem install bundler -v '~> 2.3.26' + +weblogs: + - name: test-app-ruby + supported-language-versions: + - 3.0.2 + install: + - os_type: linux + command: | + sudo mkdir /opt/datadog/logs_injection && sudo chmod -R 777 /opt/datadog/logs_injection + sudo touch /opt/datadog/logs_injection/host_injection.log && sudo chmod 777 /opt/datadog/logs_injection/host_injection.log + sudo sh -c 'echo "DD_APM_INSTRUMENTATION_DEBUG=TRUE" >> /etc/environment' + sudo sh -c 'echo "DD_APM_INSTRUMENTATION_OUTPUT_PATHS=/opt/datadog/logs_injection/host_injection.log" >> /etc/environment' + source /etc/environment diff --git a/tests/onboarding/test_onboarding_blocklist.py b/tests/onboarding/test_onboarding_blocklist.py index 3b03b7240de..bfcd942dd84 100644 --- a/tests/onboarding/test_onboarding_blocklist.py +++ b/tests/onboarding/test_onboarding_blocklist.py @@ -14,9 +14,12 @@ class _OnboardingBlockListBaseTest: """ Base class to test the block list on auto instrumentation""" - env_vars_config_file_mapper = { - "DD_JAVA_IGNORED_ARGS": "java_ignored_args", - "DD_IGNORED_PROCESSES": "ignored_processes", + env_vars_config_mapper = { + "java": "DD_JAVA_IGNORED_ARGS", + "dotnet": "DD_DOTNET_IGNORED_ARGS", + "python": "DD_PYTHON_IGNORED_ARGS", + "nodejs": "DD_NODE_IGNORED_ARGS", + "ruby": "DD_RUBY_IGNORED_ARGS", } yml_config_template = """ @@ -28,6 +31,16 @@ class _OnboardingBlockListBaseTest: config_sources: BASIC ignored_processes: - DD_IGNORED_PROCESSES +java_ignored_args: +- DD_JAVA_IGNORED_ARGS +dotnet_ignored_args: +- DD_DOTNET_IGNORED_ARGS +python_ignored_args: +- DD_PYTHON_IGNORED_ARGS +node_ignored_args: +- DD_NODE_IGNORED_ARGS +ruby_ignored_args: +- DD_RUBY_IGNORED_ARGS """ def _ssh_connect(self, ip, user): @@ -70,7 +83,7 @@ def _execute_remote_command(self, ssh_client, command, config={}, use_injection_ else: # We'll use env variables instead of injection config yml for key in config: - command_with_config = f"{key}={config[key]} {command_with_config}" + command_with_config = f"{key}='{config[key]}' {command_with_config}" logger.info(f"Executing command: [{command_with_config}] associated with log file: [{unique_log_name}]") @@ -137,6 +150,78 @@ class TestOnboardingBlockListInstallManualHost(_OnboardingBlockListBaseTest): "skip": True, }, {"ignored_args": "-Dtest=testXX", "command": "java -jar test.jar -Dtest=test", "skip": False}, + { + "ignored_args": "-Dtest=test -Dtest2=test2", + "command": "java -jar test.jar -Dtest2=test2 -Dtest=test", + "skip": True, + }, + { + "ignored_args": "-Dtest=test -Dtest2=test2", + "command": "java -jar test.jar -Dtest2=test3 -Dtest=test", + "skip": False, + }, + ], + "dotnet": [ + {"ignored_args": "/Users/user/Pictures", "command": "dotnet run -- -p /Users/user/Pictures", "skip": True}, + { + "ignored_args": "/Users/user/PicturesXXX", + "command": "dotnet run -- -p /Users/user/Pictures", + "skip": False, + }, + { + "ignored_args": "/MySetting:SomeValue=123", + "command": "dotnet run /MySetting:SomeValue=123", + "skip": True, + }, + ], + "python": [ + {"ignored_args": "", "command": "python myscript.py arg1 arg2 arg3", "skip": False}, + {"ignored_args": "arg1", "command": "python myscript.py arg1 arg2 arg3", "skip": True}, + {"ignored_args": "arg1 arg2,arg44", "command": "python myscript.py arg1 arg2 arg3", "skip": True}, + {"ignored_args": "arg1 arg22,arg44", "command": "python myscript.py arg1 arg2 arg3", "skip": False}, + {"ignored_args": "--dosomething yes", "command": "python myscript.py --dosomething yes", "skip": True}, + {"ignored_args": "--dosomething yes", "command": "python myscript.py --dosomething no", "skip": False}, + ], + "nodejs": [ + {"ignored_args": "", "command": "node example.js -a -b -c", "skip": False}, + {"ignored_args": "-c", "command": "node example.js -a -b -c", "skip": True}, + {"ignored_args": "-a -c", "command": "node example.js -a -b -c", "skip": True}, + {"ignored_args": "-a -b -c", "command": "node example.js -a -b -c", "skip": True}, + {"ignored_args": "-a -g -c", "command": "node example.js -a -b -c", "skip": False}, + {"ignored_args": "", "command": "node example.js -f --custom Override", "skip": False}, + {"ignored_args": "--custom", "command": "node example.js -f --custom Override", "skip": True}, + {"ignored_args": "--custom Override", "command": "node example.js -f --custom Override", "skip": True}, + ], + "ruby": [ + {"ignored_args": "", "command": "ruby my_cat.rb test1 test2", "skip": False}, + {"ignored_args": "test1", "command": "ruby my_cat.rb test1 test2", "skip": True}, + {"ignored_args": "test3,test2", "command": "ruby my_cat.rb test1 test2", "skip": True}, + {"ignored_args": "test1 test2", "command": "ruby my_cat.rb test1 test2", "skip": True}, + {"ignored_args": "test3 test2", "command": "ruby my_cat.rb test1 test2", "skip": False}, + {"ignored_args": "test1,test2", "command": "ruby names.rb --name pepe", "skip": False}, + {"ignored_args": "--name", "command": "ruby names.rb --name pepe", "skip": True}, + {"ignored_args": "--name pepe", "command": "ruby names.rb --name pepe", "skip": True}, + {"ignored_args": "--name paco", "command": "ruby names.rb --name pepe", "skip": False}, + { + "ignored_args": "", + "command": "bundle config build.pg --with-pg-config=/path/to/pg_config", + "skip": False, + }, + { + "ignored_args": "--with-pg-config", + "command": "bundle config build.pg --with-pg-config=/path/to/pg_config", + "skip": False, + }, + { + "ignored_args": "--with-pg-config=/path/to/pg_config", + "command": "bundle config build.pg --with-pg-config=/path/to/pg_config", + "skip": True, + }, + { + "ignored_args": "--with-pg-config=/home/to/pg_config", + "command": "bundle config build.pg --with-pg-config=/path/to/pg_config", + "skip": False, + }, ], } @@ -248,8 +333,16 @@ def test_user_ignored_args(self, onboardig_vm): if onboardig_vm.language in self.user_args_commands: ssh_client = self._ssh_connect(onboardig_vm.ip, onboardig_vm.ec2_data["user"]) for test_config in self.user_args_commands[onboardig_vm.language]: - args_config = {"DD_JAVA_IGNORED_ARGS": test_config["ignored_args"]} - local_log_file = self._execute_remote_command(ssh_client, test_config["command"], config=args_config) - assert test_config["skip"] == command_injection_skipped( - test_config["command"], local_log_file - ), f"The command {test_config['command']} with ignored args {test_config['ignored_args']} should skip [{test_config['skip']}]!" + for use_injection_file_config in [True, False]: + # Apply the configuration from yml file or from env variables + language_ignored_args_key = self.env_vars_config_mapper[onboardig_vm.language] + args_config = {language_ignored_args_key: test_config["ignored_args"]} + local_log_file = self._execute_remote_command( + ssh_client, + test_config["command"], + config=args_config, + use_injection_config=use_injection_file_config, + ) + assert test_config["skip"] == command_injection_skipped( + test_config["command"], local_log_file + ), f"The command {test_config['command']} with ignored args {test_config['ignored_args']} should skip [{test_config['skip']}]!" From 7568e9cbfc249bcf6743a237fbf8b6d1ee14fe49 Mon Sep 17 00:00:00 2001 From: roberto montero Date: Thu, 1 Feb 2024 11:08:19 +0100 Subject: [PATCH 6/6] Fix python tests --- tests/onboarding/test_onboarding_blocklist.py | 36 +++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/tests/onboarding/test_onboarding_blocklist.py b/tests/onboarding/test_onboarding_blocklist.py index bfcd942dd84..c8e621d97d1 100644 --- a/tests/onboarding/test_onboarding_blocklist.py +++ b/tests/onboarding/test_onboarding_blocklist.py @@ -175,12 +175,36 @@ class TestOnboardingBlockListInstallManualHost(_OnboardingBlockListBaseTest): }, ], "python": [ - {"ignored_args": "", "command": "python myscript.py arg1 arg2 arg3", "skip": False}, - {"ignored_args": "arg1", "command": "python myscript.py arg1 arg2 arg3", "skip": True}, - {"ignored_args": "arg1 arg2,arg44", "command": "python myscript.py arg1 arg2 arg3", "skip": True}, - {"ignored_args": "arg1 arg22,arg44", "command": "python myscript.py arg1 arg2 arg3", "skip": False}, - {"ignored_args": "--dosomething yes", "command": "python myscript.py --dosomething yes", "skip": True}, - {"ignored_args": "--dosomething yes", "command": "python myscript.py --dosomething no", "skip": False}, + { + "ignored_args": "", + "command": "/home/datadog/.pyenv/shims/python myscript.py arg1 arg2 arg3", + "skip": False, + }, + { + "ignored_args": "arg1", + "command": "/home/datadog/.pyenv/shims/python myscript.py arg1 arg2 arg3", + "skip": True, + }, + { + "ignored_args": "arg1 arg2,arg44", + "command": "/home/datadog/.pyenv/shims/python myscript.py arg1 arg2 arg3", + "skip": True, + }, + { + "ignored_args": "arg1 arg22,arg44", + "command": "/home/datadog/.pyenv/shims/python myscript.py arg1 arg2 arg3", + "skip": False, + }, + { + "ignored_args": "--dosomething yes", + "command": "/home/datadog/.pyenv/shims/python myscript.py --dosomething yes", + "skip": True, + }, + { + "ignored_args": "--dosomething yes", + "command": "/home/datadog/.pyenv/shims/python myscript.py --dosomething no", + "skip": False, + }, ], "nodejs": [ {"ignored_args": "", "command": "node example.js -a -b -c", "skip": False},