cloudflare/cloudflared

Public

mirrored from https://github.com/cloudflare/cloudflaredAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
2021.12.3

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

component-tests/conftest.py

60lines · modeblame

a7344435cthuang5 years ago1import os
1e8dea91Nuno Diegues4 years ago2from enum import Enum, auto
3from time import sleep
4
a7344435cthuang5 years ago5import pytest
6import yaml
7
1e8dea91Nuno Diegues4 years ago8from config import NamedTunnelConfig, ClassicTunnelConfig, ProxyDnsConfig
9from constants import BACKOFF_SECS, PROXY_DNS_PORT
a7344435cthuang5 years ago10from util import LOGGER
11
f23e33c0cthuang5 years ago12
1e8dea91Nuno Diegues4 years ago13class CfdModes(Enum):
14NAMED = auto()
15CLASSIC = auto()
16PROXY_DNS = auto()
17
18
a7344435cthuang5 years ago19@pytest.fixture(scope="session")
20def component_tests_config():
21config_file = os.getenv("COMPONENT_TESTS_CONFIG")
22if config_file is None:
f23e33c0cthuang5 years ago23raise Exception(
24"Need to provide path to config file in COMPONENT_TESTS_CONFIG")
a7344435cthuang5 years ago25with open(config_file, 'r') as stream:
26config = yaml.safe_load(stream)
27LOGGER.info(f"component tests base config {config}")
28
1e8dea91Nuno Diegues4 years ago29def _component_tests_config(additional_config={}, cfd_mode=CfdModes.NAMED, run_proxy_dns=True):
30if run_proxy_dns:
31# Regression test for TUN-4177, running with proxy-dns should not prevent tunnels from running.
32# So we run all tests with it.
33additional_config["proxy-dns"] = True
34additional_config["proxy-dns-port"] = PROXY_DNS_PORT
35else:
36additional_config.pop("proxy-dns", None)
37additional_config.pop("proxy-dns-port", None)
38
39if cfd_mode is CfdModes.NAMED:
25cfbec0cthuang5 years ago40return NamedTunnelConfig(additional_config=additional_config,
b25d38ddNuno Diegues5 years ago41cloudflared_binary=config['cloudflared_binary'],
42tunnel=config['tunnel'],
43credentials_file=config['credentials_file'],
44ingress=config['ingress'])
1e8dea91Nuno Diegues4 years ago45elif cfd_mode is CfdModes.CLASSIC:
46return ClassicTunnelConfig(
47additional_config=additional_config, cloudflared_binary=config['cloudflared_binary'],
48hostname=config['classic_hostname'], origincert=config['origincert'])
49elif cfd_mode is CfdModes.PROXY_DNS:
50return ProxyDnsConfig(cloudflared_binary=config['cloudflared_binary'])
51else:
52raise Exception(f"Unknown cloudflared mode {cfd_mode}")
a7344435cthuang5 years ago53
f23e33c0cthuang5 years ago54return _component_tests_config
55
56
57# This fixture is automatically called before each tests to make sure the previous cloudflared has been shutdown
58@pytest.fixture(autouse=True)
59def wait_previous_cloudflared():
60sleep(BACKOFF_SECS)