def app_spec_thrift(app_spec): return app_spec._replace( ports=[ PortSpec(protocol="tcp", name="thrift", port=7999, target_port=7999), ], health_checks=HealthCheckSpec( liveness=CheckSpec(tcp=TcpCheckSpec(port=7999), http=None, execute=None, initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1), readiness=CheckSpec(tcp=TcpCheckSpec(port=7999), http=None, execute=None, initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1)), ingresses=[])
def app_spec(): return AppSpec( name="testapp", namespace="default", image="finntech/testimage:version", replicas=3, autoscaler=AUTOSCALER_SPEC, resources=EMPTY_RESOURCE_SPEC, admin_access=False, secrets_in_environment=False, prometheus=PROMETHEUS_SPEC, datadog=DATADOG_SPEC, ports=[ PortSpec(protocol="http", name="http", port=80, target_port=8080), ], health_checks=HealthCheckSpec( liveness=CheckSpec(tcp=TcpCheckSpec(port=8080), http=None, execute=None, initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1), readiness=CheckSpec(http=HttpCheckSpec(path="/", port=8080, http_headers={}), tcp=None, execute=None, initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1)), teams=[u'foo'], tags=[u'bar'], deployment_id="test_app_deployment_id", labels=LabelAndAnnotationSpec({}, {}, {}, {}, {}), annotations=LabelAndAnnotationSpec({}, {}, {}, {}, {}), ingresses=[IngressItemSpec(host=None, pathmappings=[IngressPathMappingSpec(path="/", port=80)])], strongbox=StrongboxSpec(enabled=False, iam_role=None, aws_region="eu-west-1", groups=None), singleton=False, ingress_tls=IngressTlsSpec(enabled=False, certificate_issuer=None) )
def app_spec_thrift_and_http(app_spec): return app_spec._replace( ports=[ PortSpec(protocol="http", name="http", port=80, target_port=8080), PortSpec(protocol="tcp", name="thrift", port=7999, target_port=7999), ], health_checks=HealthCheckSpec( liveness=CheckSpec(tcp=TcpCheckSpec(port=7999), http=None, execute=None, initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1), readiness=CheckSpec(http=HttpCheckSpec(path="/", port=8080, http_headers={}), tcp=None, execute=None, initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1)), )
def app_spec(**kwargs): default_app_spec = AppSpec( uid="c1f34517-6f54-11ea-8eaf-0ad3d9992c8c", name="testapp", namespace="default", image="finntech/testimage:version", autoscaler=AutoscalerSpec(enabled=False, min_replicas=2, max_replicas=3, cpu_threshold_percentage=50), resources=ResourcesSpec(requests=ResourceRequirementSpec(cpu=None, memory=None), limits=ResourceRequirementSpec(cpu=None, memory=None)), admin_access=False, secrets_in_environment=False, prometheus=PrometheusSpec(enabled=True, port='http', path='/internal-backstage/prometheus'), datadog=DatadogSpec(enabled=False, tags={}), ports=[ PortSpec(protocol="http", name="http", port=80, target_port=8080), ], health_checks=HealthCheckSpec( liveness=CheckSpec(tcp=TcpCheckSpec(port=8080), http=None, execute=None, initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1), readiness=CheckSpec(http=HttpCheckSpec(path="/", port=8080, http_headers={}), tcp=None, execute=None, initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1)), teams=[u'foo'], tags=[u'bar'], deployment_id="test_app_deployment_id", labels=LabelAndAnnotationSpec({}, {}, {}, {}, {}, {}), annotations=LabelAndAnnotationSpec({}, {}, ANNOTATIONS.copy(), {}, {}, {}), ingresses=[IngressItemSpec(host=None, pathmappings=[IngressPathMappingSpec(path="/", port=80)], annotations={})], strongbox=StrongboxSpec(enabled=False, iam_role=None, aws_region="eu-west-1", groups=None), singleton=False, ingress_tls=IngressTlsSpec(enabled=False, certificate_issuer=None), secrets=[] ) return default_app_spec._replace(**kwargs)
def app_spec_no_ports(app_spec): exec_check = CheckSpec(http=None, tcp=None, execute=ExecCheckSpec(command="/app/check.sh"), initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1) return app_spec._replace(ports=[], health_checks=HealthCheckSpec(liveness=exec_check, readiness=exec_check), ingresses=[])
def app_spec(self, request, app_spec): generic_toggle, deploy_labels, deploy_annotations, pod_labels, pod_annotations, singleton = request.param labels = LabelAndAnnotationSpec(deployment=deploy_labels, horizontal_pod_autoscaler={}, ingress={}, service={}, pod=pod_labels, status={}) annotations = LabelAndAnnotationSpec(deployment=deploy_annotations, horizontal_pod_autoscaler={}, ingress={}, service={}, pod=pod_annotations, status={}) if generic_toggle: ports = app_spec.ports health_checks = app_spec.health_checks replicas = 1 else: ports = [] exec_check = CheckSpec(http=None, tcp=None, execute=ExecCheckSpec(command="/app/check.sh"), initial_delay_seconds=10, period_seconds=10, success_threshold=1, failure_threshold=3, timeout_seconds=1) health_checks = HealthCheckSpec(liveness=exec_check, readiness=exec_check) replicas = 5 yield app_spec._replace( admin_access=generic_toggle, ports=ports, health_checks=health_checks, labels=labels, annotations=annotations, replicas=replicas, singleton=singleton, )
def test_make_tcp_probe(): check_spec = CheckSpec(tcp=TcpCheckSpec(port=31337), http=None, execute=None, initial_delay_seconds=30, period_seconds=60, success_threshold=3, failure_threshold=3, timeout_seconds=10) probe = _make_probe(check_spec) assert probe.tcpSocket.port == 31337 assert probe.initialDelaySeconds == 30 assert probe.periodSeconds == 60 assert probe.successThreshold == 3 assert probe.timeoutSeconds == 10
def test_make_probe_should_fail_when_no_healthcheck_is_defined(): check_spec = CheckSpec(tcp=None, execute=None, http=None, initial_delay_seconds=30, period_seconds=60, success_threshold=3, failure_threshold=3, timeout_seconds=10) with pytest.raises(RuntimeError): _make_probe(check_spec)
def test_make_http_probe(): check_spec = CheckSpec(http=HttpCheckSpec(path="/", port=8080, http_headers={"Authorization": "ZmlubjpqdXN0aW5iaWViZXJfeG94bw=="}), tcp=None, execute=None, initial_delay_seconds=30, period_seconds=60, success_threshold=3, failure_threshold=3, timeout_seconds=10) probe = _make_probe(check_spec) assert probe.httpGet.path == "/" assert probe.httpGet.port == 8080 assert probe.httpGet.scheme == "HTTP" assert len(probe.httpGet.httpHeaders) == 1 assert probe.httpGet.httpHeaders[0].name == "Authorization" assert probe.httpGet.httpHeaders[0].value == "ZmlubjpqdXN0aW5iaWViZXJfeG94bw==" assert probe.initialDelaySeconds == 30 assert probe.periodSeconds == 60 assert probe.successThreshold == 3 assert probe.timeoutSeconds == 10