cloudflared-mirror/component-tests
GoncaloGarcia e251a21810 TUN-8621: Prevent QUIC connection from closing before grace period after unregistering
Whenever cloudflared receives a SIGTERM or SIGINT it goes into graceful shutdown mode, which unregisters the connection and closes the control stream. Unregistering makes it so we no longer receive any new requests and makes the edge close the connection, allowing in-flight requests to finish (within a 3 minute period).
 This was working fine for http2 connections, but the quic proxy was cancelling the context as soon as the controls stream ended, forcing the process to stop immediately.

 This commit changes the behavior so that we wait the full grace period before cancelling the request
2024-10-07 10:51:21 -05:00
..
.gitignore TUN-4055: Skeleton for component tests 2021-03-08 11:08:34 +00:00
README.md TUN-9999: Remove classic tunnel component tests 2023-03-30 15:07:14 +00:00
cli.py TUN-7141: Add component tests for streaming logs 2023-04-21 10:14:03 -07:00
config.py TUN-7259: Add warning for missing ingress rules 2023-03-10 01:49:54 +00:00
config.yaml TUN-7360: Add Get Host Details handler in management service 2023-04-18 09:54:54 +00:00
conftest.py TUN-7259: Add warning for missing ingress rules 2023-03-10 01:49:54 +00:00
constants.py TUN-7141: Add component tests for streaming logs 2023-04-21 10:14:03 -07:00
requirements.txt TUN-8066: Define scripts to build on Windows agents 2023-12-15 23:21:42 +00:00
setup.py TUN-8066: Define scripts to build on Windows agents 2023-12-15 23:21:42 +00:00
test_config.py CUSTESC-33731: Make rule match test report rule in 0-index base 2023-10-03 12:18:49 +01:00
test_edge_discovery.py TUN-6010: Add component tests for --edge-ip-version 2022-06-23 16:55:03 +00:00
test_logging.py TUN-7361: Add a label to override hostname 2023-04-19 13:56:32 +00:00
test_management.py TUN-8242: Enable remote diagnostics by default 2024-02-20 11:31:16 +00:00
test_pq.py TUN-7361: Add a label to override hostname 2023-04-19 13:56:32 +00:00
test_proxy_dns.py TUN-7361: Add a label to override hostname 2023-04-19 13:56:32 +00:00
test_quicktunnels.py TUN-8380: Add sleep before requesting quick tunnel as temporary fix for component tests 2024-04-22 13:50:04 -05:00
test_reconnect.py TUN-7361: Add a label to override hostname 2023-04-19 13:56:32 +00:00
test_service.py TUN-6010: Add component tests for --edge-ip-version 2022-06-23 16:55:03 +00:00
test_tail.py TUN-8456: Update quic-go to 0.45 and collect mtu and congestion control metrics 2024-06-17 15:28:56 +00:00
test_termination.py TUN-8621: Prevent QUIC connection from closing before grace period after unregistering 2024-10-07 10:51:21 -05:00
test_token.py TUN-5915: New cloudflared command to allow to retrieve the token credentials for a Tunnel 2022-03-23 10:35:16 +00:00
test_tunnel.py TUN-7550: Add pprof endpoint to management service 2023-07-05 20:29:00 +00:00
util.py TUN-8066: Define scripts to build on Windows agents 2023-12-15 23:21:42 +00:00

README.md

Requirements

  1. Python 3.7 or later with packages in the given requirements.txt

    • E.g. with conda:
    • conda create -n component-tests python=3.7
    • conda activate component-tests
    • pip3 install -r requirements.txt
  2. Create a config yaml file, for example:

cloudflared_binary: "cloudflared"
tunnel: "3d539f97-cd3a-4d8e-c33b-65e9099c7a8d"
credentials_file: "/Users/tunnel/.cloudflared/3d539f97-cd3a-4d8e-c33b-65e9099c7a8d.json"
origincert: "/Users/tunnel/.cloudflared/cert.pem"
ingress:
- hostname: named-tunnel-component-tests.example.com
  service: hello_world
- service: http_status:404
  1. Route hostname to the tunnel. For the example config above, we can do that via
   cloudflared tunnel route dns 3d539f97-cd3a-4d8e-c33b-65e9099c7a8d named-tunnel-component-tests.example.com
  1. Turn on linter If you are using Visual Studio, follow https://code.visualstudio.com/docs/python/linting to turn on linter.

  2. Turn on formatter If you are using Visual Studio, follow https://code.visualstudio.com/docs/python/editing#_formatting to turn on formatter and https://marketplace.visualstudio.com/items?itemName=cbrevik.toggle-format-on-save to turn on format on save.

  3. If you have cloudflared running as a service on your machine, you can either stop the service or ignore the service tests via --ignore test_service.py

How to run

Specify path to config file via env var COMPONENT_TESTS_CONFIG. This is required.

All tests

Run pytest inside this(component-tests) folder

Specific files

Run pytest <file 1 name>.py <file 2 name>.py

Specific tests

Run pytest file.py -k <test 1 name> -k <test 2 name>

Live Logging

Running with -o log_cli=true outputs logging to CLI as the tests are. By default the log level is WARN. --log-cli-level control logging level. For example, to log at info level, run pytest -o log_cli=true --log-cli-level=INFO. See https://docs.pytest.org/en/latest/logging.html#live-logs for more documentation on logging.