Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Centralized test runner for backend-features specifications #429

Open
wants to merge 21 commits into
base: main
Choose a base branch
from

Conversation

pklaschka
Copy link
Member

@pklaschka pklaschka commented Dec 14, 2024

Summary

Enable easy (end-to-end-like) testing of Telestion Service libraries against the specifications specified in backend-features using a Python test runner (using the Gherkin specification files) that runs Docker containers.

Details

graph TD
    R[Test Runner]
    subgraph Docker
        T[Testbed Container]
        N[NATS Container]
        T --- W[Network] -- Host: nats --- N
    end
    NC[Temporary NATS Config File]
    NC -- mounted into --- N
    R -- writes --> NC
    R -- runs --> T
    T -- result --> R
    R -- controls containers of --> W
    R -- starts/restarts --> N
Loading
graph LR
    I[Testbed Image]
    R[Test Runner]
    subgraph Docker 
        C[Testbed Container]
    end
    R -- builds --> I
    R -- runs --> C
    C -- result --> R
    C -- is based on --> I
Loading

The test runner can be called in any directory, and you must pass the relative path from the CWD to a folder containing a Dockerfile that has the service as its ENTRYPOINT (cf. the specifications in backend-features/TESTBED.spec.md.

❯ ./run-tests.py --help                                                                                                    
usage: run-tests.py [-h] [-v] [path]

Run the Telestion Backend Service Behavior Tests

positional arguments:
  path           The path to the testbed folder containing a Dockerfile. Can also be set via the "TELESTION_TESTBED_PATH" environment variable.

optional arguments:
  -h, --help     show this help message and exit
  -v, --verbose  Verbose output for debugging purposes. Primarily for developing the tests themselves.

Additional information

The output of a test run with the verbose flag enabled looks like this:

run-tests.py -v .

Running tests from /home/runner/work/telestion/telestion/backend-features for testbed at .
USING RUNNER: behave.runner:Runner
=== Build Output ===
Step 1/7 : FROM denoland/deno:alpine-2.1.4
 ---> e[6](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:7)9e8818733f
Step 2/7 : WORKDIR /app
 ---> Running in 2[7](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:8)81f776e6c4
 ---> c24ae79fb6d3
Step 3/7 : COPY deno.json deno.lock /app/
 ---> 000bccb53[8](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:9)18
Step 4/7 : RUN deno install --frozen
 ---> Running in d284bea86630
Download https://registry.npmjs.org/tweetnacl
Download https://registry.npmjs.org/zod
Download https://jsr.io/@std/path/1.0.8_meta.json
Download https://jsr.io/@std/jsonc/1.0.1_meta.json
Download https://jsr.io/@std/cli/1.0.7_meta.json
Download https://jsr.io/@std/assert/1.0.8_meta.json
Download https://jsr.io/@nats-io/transport-deno/3.0.0-18_meta.json
Download https://jsr.io/@nats-io/nats-core/3.0.0-45_meta.json
Download https://jsr.io/@std/path/meta.json
Download https://jsr.io/@std/assert/meta.json
Download https://jsr.io/@std/jsonc/meta.json
Download https://jsr.io/@std/cli/meta.json
Download https://jsr.io/@nats-io/nats-core/meta.json
Download https://jsr.io/@nats-io/transport-deno/meta.json
Download https://jsr.io/@std/cli/1.0.7/_data.json
Download https://jsr.io/@std/internal/meta.json
Download https://jsr.io/@std/json/meta.json
Download https://jsr.io/@nats-io/nuid/meta.json
Download https://jsr.io/@nats-io/nkeys/meta.json
Download https://jsr.io/@std/io/meta.json
Download https://jsr.io/@std/internal/1.0.5_meta.json
Download https://jsr.io/@std/json/1.0.1_meta.json
Download https://jsr.io/@nats-io/nuid/2.0.1-2_meta.json
Download https://jsr.io/@nats-io/nkeys/2.0.0-3_meta.json
Download https://jsr.io/@std/io/0.225.0_meta.json
Download https://jsr.io/@std/bytes/meta.json
Download https://jsr.io/@std/bytes/1.0.4_meta.json
Download https://jsr.io/@std/path/1.0.8/mod.ts
Download https://jsr.io/@std/path/1.0.8/basename.ts
Download https://jsr.io/@std/path/1.0.8/common.ts
Download https://jsr.io/@std/path/1.0.8/constants.ts
Download https://jsr.io/@std/path/1.0.8/dirname.ts
Download https://jsr.io/@std/path/1.0.8/extname.ts
Download https://jsr.io/@std/path/1.0.8/format.ts
Download https://jsr.io/@std/path/1.0.8/from_file_url.ts
Download https://jsr.io/@std/path/1.0.8/glob_to_regexp.ts
Download https://jsr.io/@std/path/1.0.8/is_absolute.ts
Download https://jsr.io/@std/path/1.0.8/is_glob.ts
Download https://jsr.io/@std/path/1.0.8/join.ts
Download https://jsr.io/@std/path/1.0.8/join_globs.ts
Download https://jsr.io/@std/path/1.0.8/normalize.ts
Download https://jsr.io/@std/path/1.0.8/normalize_glob.ts
Download https://jsr.io/@std/path/1.0.8/parse.ts
Download https://jsr.io/@std/path/1.0.8/posix/mod.ts
Download https://jsr.io/@std/path/1.0.8/posix/basename.ts
Download https://jsr.io/@std/path/1.0.8/posix/common.ts
Download https://jsr.io/@std/path/1.0.8/posix/constants.ts
Download https://jsr.io/@std/path/1.0.8/posix/dirname.ts
Download https://jsr.io/@std/path/1.0.8/posix/extname.ts
Download https://jsr.io/@std/path/1.0.8/posix/format.ts
Download https://jsr.io/@std/path/1.0.8/posix/from_file_url.ts
Download https://jsr.io/@std/path/1.0.8/posix/glob_to_regexp.ts
Download https://jsr.io/@std/path/1.0.8/posix/is_absolute.ts
Download https://jsr.io/@std/path/1.0.8/posix/is_glob.ts
Download https://jsr.io/@std/path/1.0.8/posix/join.ts
Download https://jsr.io/@std/path/1.0.8/posix/join_globs.ts
Download https://jsr.io/@std/path/1.0.8/posix/normalize.ts
Download https://jsr.io/@std/path/1.0.8/posix/normalize_glob.ts
Download https://jsr.io/@std/path/1.0.8/posix/parse.ts
Download https://jsr.io/@std/path/1.0.8/posix/relative.ts
Download https://jsr.io/@std/path/1.0.8/posix/resolve.ts
Download https://jsr.io/@std/path/1.0.8/posix/to_file_url.ts
Download https://jsr.io/@std/path/1.0.8/posix/to_namespaced_path.ts
Download https://jsr.io/@std/path/1.0.8/posix/unstable_basename.ts
Download https://jsr.io/@std/path/1.0.8/posix/unstable_dirname.ts
Download https://jsr.io/@std/path/1.0.8/posix/unstable_extname.ts
Download https://jsr.io/@std/path/1.0.8/posix/unstable_join.ts
Download https://jsr.io/@std/path/1.0.8/posix/unstable_normalize.ts
Download https://jsr.io/@std/path/1.0.8/relative.ts
Download https://jsr.io/@std/path/1.0.8/resolve.ts
Download https://jsr.io/@std/path/1.0.8/to_file_url.ts
Download https://jsr.io/@std/path/1.0.8/to_namespaced_path.ts
Download https://jsr.io/@std/path/1.0.8/types.ts
Download https://jsr.io/@std/path/1.0.8/unstable_basename.ts
Download https://jsr.io/@std/path/1.0.8/unstable_dirname.ts
Download https://jsr.io/@std/path/1.0.8/unstable_extname.ts
Download https://jsr.io/@std/path/1.0.8/unstable_join.ts
Download https://jsr.io/@std/path/1.0.8/unstable_normalize.ts
Download https://jsr.io/@std/path/1.0.8/windows/mod.ts
Download https://jsr.io/@std/path/1.0.8/windows/basename.ts
Download https://jsr.io/@std/path/1.0.8/windows/common.ts
Download https://jsr.io/@std/path/1.0.8/windows/constants.ts
Download https://jsr.io/@std/path/1.0.8/windows/dirname.ts
Download https://jsr.io/@std/path/1.0.8/windows/extname.ts
Download https://jsr.io/@std/path/1.0.8/windows/format.ts
Download https://jsr.io/@std/path/1.0.8/windows/from_file_url.ts
Download https://jsr.io/@std/path/1.0.8/windows/glob_to_regexp.ts
Download https://jsr.io/@std/path/1.0.8/windows/is_absolute.ts
Download https://jsr.io/@std/path/1.0.8/windows/is_glob.ts
Download https://jsr.io/@std/path/1.0.8/windows/join.ts
Download https://jsr.io/@std/path/1.0.8/windows/join_globs.ts
Download https://jsr.io/@std/path/1.0.8/windows/normalize.ts
Download https://jsr.io/@std/path/1.0.8/windows/normalize_glob.ts
Download https://jsr.io/@std/path/1.0.8/windows/parse.ts
Download https://jsr.io/@std/path/1.0.8/windows/relative.ts
Download https://jsr.io/@std/path/1.0.8/windows/resolve.ts
Download https://jsr.io/@std/path/1.0.8/windows/to_file_url.ts
Download https://jsr.io/@std/path/1.0.8/windows/to_namespaced_path.ts
Download https://jsr.io/@std/path/1.0.8/windows/unstable_basename.ts
Download https://jsr.io/@std/path/1.0.8/windows/unstable_dirname.ts
Download https://jsr.io/@std/path/1.0.8/windows/unstable_extname.ts
Download https://jsr.io/@std/path/1.0.8/windows/unstable_join.ts
Download https://jsr.io/@std/path/1.0.8/windows/unstable_normalize.ts
Download https://jsr.io/@std/assert/1.0.8/mod.ts
Download https://jsr.io/@std/assert/1.0.8/assert.ts
Download https://jsr.io/@std/assert/1.0.8/almost_equals.ts
Download https://jsr.io/@std/assert/1.0.8/array_includes.ts
Download https://jsr.io/@std/assert/1.0.8/equals.ts
Download https://jsr.io/@std/assert/1.0.8/exists.ts
Download https://jsr.io/@std/assert/1.0.8/false.ts
Download https://jsr.io/@std/assert/1.0.8/greater.ts
Download https://jsr.io/@std/assert/1.0.8/greater_or_equal.ts
Download https://jsr.io/@std/assert/1.0.8/instance_of.ts
Download https://jsr.io/@std/assert/1.0.8/is_error.ts
Download https://jsr.io/@std/assert/1.0.8/less.ts
Download https://jsr.io/@std/assert/1.0.8/less_or_equal.ts
Download https://jsr.io/@std/assert/1.0.8/match.ts
Download https://jsr.io/@std/assert/1.0.8/unstable_never.ts
Download https://jsr.io/@std/assert/1.0.8/not_equals.ts
Download https://jsr.io/@std/assert/1.0.8/not_instance_of.ts
Download https://jsr.io/@std/assert/1.0.8/not_match.ts
Download https://jsr.io/@std/assert/1.0.8/not_strict_equals.ts
Download https://jsr.io/@std/assert/1.0.8/object_match.ts
Download https://jsr.io/@std/assert/1.0.8/rejects.ts
Download https://jsr.io/@std/assert/1.0.8/strict_equals.ts
Download https://jsr.io/@std/assert/1.0.8/string_includes.ts
Download https://jsr.io/@std/assert/1.0.8/throws.ts
Download https://jsr.io/@std/assert/1.0.8/assertion_error.ts
Download https://jsr.io/@std/assert/1.0.8/equal.ts
Download https://jsr.io/@std/assert/1.0.8/fail.ts
Download https://jsr.io/@std/assert/1.0.8/unimplemented.ts
Download https://jsr.io/@std/assert/1.0.8/unreachable.ts
Download https://jsr.io/@std/jsonc/1.0.1/mod.ts
Download https://jsr.io/@std/jsonc/1.0.1/parse.ts
Download https://jsr.io/@std/cli/1.0.7/mod.ts
Download https://jsr.io/@std/cli/1.0.7/parse_args.ts
Download https://jsr.io/@std/cli/1.0.7/prompt_secret.ts
Download https://jsr.io/@std/cli/1.0.7/unstable_spinner.ts
Download https://jsr.io/@std/cli/1.0.7/unicode_width.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/mod.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/internal_mod.ts
Download https://jsr.io/@nats-io/transport-deno/3.0.0-18/src/mod.ts
Download https://jsr.io/@std/path/1.0.8/_os.ts
Download https://jsr.io/@std/path/1.0.8/_common/common.ts
Download https://jsr.io/@std/path/1.0.8/_common/glob_to_reg_exp.ts
Download https://jsr.io/@std/path/1.0.8/_common/basename.ts
Download https://jsr.io/@std/path/1.0.8/_common/strip_trailing_separators.ts
Download https://jsr.io/@std/path/1.0.8/posix/_util.ts
Download https://jsr.io/@std/path/1.0.8/_common/dirname.ts
Download https://jsr.io/@std/path/1.0.8/_common/constants.ts
Download https://jsr.io/@std/path/1.0.8/_common/assert_path.ts
Download https://jsr.io/@std/path/1.0.8/_common/format.ts
Download https://jsr.io/@std/path/1.0.8/_common/from_file_url.ts
Download https://jsr.io/@std/path/1.0.8/_common/normalize.ts
Download https://jsr.io/@std/path/1.0.8/_common/normalize_string.ts
Download https://jsr.io/@std/path/1.0.8/_common/relative.ts
Download https://jsr.io/@std/path/1.0.8/_common/to_file_url.ts
Download https://jsr.io/@std/path/1.0.8/windows/_util.ts
Download https://jsr.io/@std/cli/1.0.7/_run_length.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/nats.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/nuid.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/msg.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/transport.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/protocol.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/util.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/headers.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/heartbeats.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/muxsubscription.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/databuffer.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/options.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/request.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/authenticator.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/codec.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/nkeys.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/queued_iterator.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/parser.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/denobuffer.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/bench.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/encoders.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/ipparser.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/semver.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/types.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/core.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/idleheartbeat_monitor.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/servers.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/base64.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/sha256.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/ws_transport.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/errors.ts
Download https://jsr.io/@nats-io/transport-deno/3.0.0-18/src/connect.ts
Download https://jsr.io/@nats-io/nats-core/3.0.0-45/src/version.ts
Download https://jsr.io/@nats-io/transport-deno/3.0.0-18/src/deno_transport.ts
Download https://jsr.io/@nats-io/transport-deno/3.0.0-18/src/version.ts
Download https://jsr.io/@std/internal/1.0.5/format.ts
Download https://jsr.io/@std/internal/1.0.5/build_message.ts
Download https://jsr.io/@std/internal/1.0.5/diff.ts
Download https://jsr.io/@std/internal/1.0.5/diff_str.ts
Download https://jsr.io/@std/internal/1.0.5/styles.ts
Download https://jsr.io/@std/json/1.0.1/types.ts
Download https://jsr.io/@nats-io/nuid/2.0.1-2/src/nuid.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/mod.ts
Download https://jsr.io/@std/io/0.225.0/mod.ts
Download https://jsr.io/@std/internal/1.0.5/types.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/nkeys.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/util.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/version.ts
Download https://jsr.io/@std/io/0.225.0/buffer.ts
Download https://jsr.io/@std/io/0.225.0/copy.ts
Download https://jsr.io/@std/io/0.225.0/iterate_reader.ts
Download https://jsr.io/@std/io/0.225.0/read_all.ts
Download https://jsr.io/@std/io/0.225.0/reader_from_stream_reader.ts
Download https://jsr.io/@std/io/0.225.0/to_readable_stream.ts
Download https://jsr.io/@std/io/0.225.0/to_writable_stream.ts
Download https://jsr.io/@std/io/0.225.0/types.ts
Download https://jsr.io/@std/io/0.225.0/write_all.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/kp.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/public.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/codec.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/curve.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/nacl.ts
Download https://jsr.io/@std/io/0.225.0/_constants.ts
Download https://jsr.io/@std/io/0.225.0/_common.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/crc16.ts
Download https://jsr.io/@nats-io/nkeys/2.0.0-3/src/base32.ts
Download https://jsr.io/@std/bytes/1.0.4/copy.ts
Download https://jsr.io/@std/bytes/1.0.4/concat.ts
Download https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz
Download https://registry.npmjs.org/zod/-/zod-3.23.8.tgz
 ---> 8ae11dc1d600
Step 5/7 : COPY . .
 ---> 485061[9](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:10)155bf
Step 6/7 : RUN deno cache mod.ts
 ---> Running in a3fed372b032
 ---> cdd93bf9e70f
Step 7/7 : ENTRYPOINT [ "deno", "run", "-A", "testbed.e2e.ts" ]
 ---> Running in 015e3fb84a82
 ---> a4cc7bda76e1
Successfully built a4cc7bda76e1
=== END Build Output ===
Feature: NATS authentication # ../backend-features/auth.feature:1

  Background: A NATS server with authentication is running on "nats:4222"  # ../backend-features/auth.feature:3

  Scenario: Starting the service with valid credentials                            # ../backend-features/auth.feature:9
    Given I have the basic service configuration                                   # ../backend-features/steps/config.py:4
    And I have a NATS server running on "nats:4222"                                # ../backend-features/steps/nats.py:7
    And the NATS server requires authentication                                    # ../backend-features/steps/nats.py:14
    And "nats" is a NATS user with password "password"                             # ../backend-features/steps/nats.py:23
    Given I have an environment variable named "NATS_URL" with value "nats:4222"   # ../backend-features/steps/config.py:18
    And I have an environment variable named "NATS_USER" with value "nats"         # ../backend-features/steps/config.py:18
    And I have an environment variable named "NATS_PASSWORD" with value "password" # ../backend-features/steps/config.py:18
    When I start the service                                                       # ../backend-features/steps/service.py:6
    Then the service should start                                                  # ../backend-features/steps/service.py:26
    And the service should connect to NATS                                         # ../backend-features/steps/service.py:33

  Scenario: Starting the service with invalid credentials fails                  # ../backend-features/auth.feature:17
    Given I have the basic service configuration                                 # ../backend-features/steps/config.py:4
    And I have a NATS server running on "nats:4222"                              # ../backend-features/steps/nats.py:7
    And the NATS server requires authentication                                  # ../backend-features/steps/nats.py:14
    And "nats" is a NATS user with password "password"                           # ../backend-features/steps/nats.py:23
    Given I have an environment variable named "NATS_URL" with value "nats:4222" # ../backend-features/steps/config.py:18
    And I have an environment variable named "NATS_USER" with value "nats"       # ../backend-features/steps/config.py:18
    And I have an environment variable named "NATS_PASSWORD" with value "wrong"  # ../backend-features/steps/config.py:18
    When I start the service                                                     # ../backend-features/steps/service.py:6
    Then the service should fail to start                                        # ../backend-features/steps/service.py:40

  Scenario: Starting the service without credentials fails when the authentication is required  # ../backend-features/auth.feature:24
    Given I have the basic service configuration                                                # ../backend-features/steps/config.py:4
    And I have a NATS server running on "nats:4222"                                             # ../backend-features/steps/nats.py:7
    And the NATS server requires authentication                                                 # ../backend-features/steps/nats.py:14
    And "nats" is a NATS user with password "password"                                          # ../backend-features/steps/nats.py:23
    Given I have an environment variable named "NATS_URL" with value "nats:4222"                # ../backend-features/steps/config.py:18
    When I start the service                                                                    # ../backend-features/steps/service.py:6
    Then the service should fail to start                                                       # ../backend-features/steps/service.py:40

  Scenario: Starting the service fails when the NATS server is offline             # ../backend-features/auth.feature:29
    Given I have the basic service configuration                                   # ../backend-features/steps/config.py:4
    And I have a NATS server running on "nats:4222"                                # ../backend-features/steps/nats.py:7
    And the NATS server requires authentication                                    # ../backend-features/steps/nats.py:14
    And "nats" is a NATS user with password "password"                             # ../backend-features/steps/nats.py:23
    Given I have an environment variable named "NATS_URL" with value "nats:4222"   # ../backend-features/steps/config.py:18
    And I have an environment variable named "NATS_USER" with value "nats"         # ../backend-features/steps/config.py:18
    And I have an environment variable named "NATS_PASSWORD" with value "password" # ../backend-features/steps/config.py:18
    And the NATS server is offline                                                 # ../backend-features/steps/nats.py:29
    When I start the service                                                       # ../backend-features/steps/service.py:6
    Then the service should fail to start                                          # ../backend-features/steps/service.py:40

Feature: Service Configuration # ../backend-features/config.feature:1

  Scenario: Services can be configured through environment variables  # ../backend-features/config.feature:3
    Given I have the basic service configuration                      # ../backend-features/steps/config.py:4
    And I have an environment variable named "TEST" with value "1"    # ../backend-features/steps/config.py:18
    When I start the service without NATS                             # ../backend-features/steps/service.py:11
    Then the service should be configured with "TEST" set to "1"      # ../backend-features/steps/service.py:47

  Scenario: Services can be configured through CLI arguments     # ../backend-features/config.feature:13
    Given I have the basic service configuration                 # ../backend-features/steps/config.py:4
    When I start the service with "--TEST=1" without NATS        # ../backend-features/steps/service.py:21
    Then the service should be configured with "TEST" set to "1" # ../backend-features/steps/service.py:47

  Scenario: Trying to run services without providing the required configuration fails  # ../backend-features/config.feature:21
    Given I have no service configuration                                              # ../backend-features/steps/config.py:13
    When I start the service                                                           # ../backend-features/steps/service.py:6
    Then the service should fail to start                                              # ../backend-features/steps/service.py:40

  Scenario: CLI arguments overwrite environment variables          # ../backend-features/config.feature:33
    Given I have the basic service configuration                   # ../backend-features/steps/config.py:4
    And I have an environment variable named "TEST" with value "1" # ../backend-features/steps/config.py:18
    When I start the service with "--TEST=2" without NATS          # ../backend-features/steps/service.py:21
    Then the service should be configured with "TEST" set to "2"   # ../backend-features/steps/service.py:47

Feature: Development mode # ../backend-features/dev-mode.feature:1

  Scenario: The service can be started in dev mode to use default parameters during development  # ../backend-features/dev-mode.feature:3
    Given I have no service configuration                                                        # ../backend-features/steps/config.py:13
    When I start the service with "--dev" without NATS                                           # ../backend-features/steps/service.py:21
    Then the service should start                                                                # ../backend-features/steps/service.py:26
    And the service should be configured with "NATS_URL" set to "localhost:4222"                 # ../backend-features/steps/service.py:47
    And the service should be configured with "NATS_USER" set to "undefined"                     # ../backend-features/steps/service.py:47
    And the service should be configured with "NATS_PASSWORD" set to "undefined"                 # ../backend-features/steps/service.py:47

  Scenario: Any custom configuration overwrites dev mode parameters            # ../backend-features/dev-mode.feature:13
    Given I have no service configuration                                      # ../backend-features/steps/config.py:13
    And I have a NATS server running on "nats:4255"                            # ../backend-features/steps/nats.py:7
    And I have an environment variable named "NATS_URL" with value "nats:4255" # ../backend-features/steps/config.py:18
    When I start the service with "--dev --DATA_DIR=/tmp"                      # ../backend-features/steps/service.py:16
    Then the service should start                                              # ../backend-features/steps/service.py:26
    And the service should connect to NATS                                     # ../backend-features/steps/service.py:33
    And the service should be configured with "DATA_DIR" set to "/tmp"         # ../backend-features/steps/service.py:47
    And the service should be configured with "NATS_URL" set to "nats:4255"    # ../backend-features/steps/service.py:47

Feature: NATS Integration in Services # ../backend-features/nats.feature:1

  Background: A NATS server is running on "nats:4222"  # ../backend-features/nats.feature:2

  Scenario: The service has access to the NATS client after startup  # ../backend-features/nats.feature:5
    Given I have a NATS server running on "nats:4222"                # ../backend-features/steps/nats.py:7
    Given I have the basic service configuration                     # ../backend-features/steps/config.py:4
    When I start the service                                         # ../backend-features/steps/service.py:6
    Then the service should connect to NATS                          # ../backend-features/steps/service.py:33
    And the NATS connection API should be available to the service   # ../backend-features/steps/service.py:60

  Scenario: The developer disables the NATS integration  # ../backend-features/nats.feature:13
    Given I have a NATS server running on "nats:4222"    # ../backend-features/steps/nats.py:7
    Given I have the basic service configuration         # ../backend-features/steps/config.py:4
    When I start the service without NATS                # ../backend-features/steps/service.py:11
    Then the service should not connect to NATS          # ../backend-features/steps/service.py:67

Feature: Service Lifecycle # ../backend-features/service.feature:1

  Scenario: Starting a service                      # ../backend-features/service.feature:3
    Given I have the basic service configuration    # ../backend-features/steps/config.py:4
    And I have a NATS server running on "nats:4222" # ../backend-features/steps/nats.py:7
    When I start the service                        # ../backend-features/steps/service.py:6
    Then the service should start                   # ../backend-features/steps/service.py:26

=== NATS Logs ===
/nats/nats.conf: config has no values or is empty
[1] 2024/12/14 00:01:51.304924 [INF] Starting nats-server
[1] 2024/12/14 00:01:51.305036 [INF]   Version:  2.[10](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:11).23
[1] 2024/12/14 00:01:51.305040 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:01:51.305042 [INF]   Name:     NAHFE6RPOFSU2O6E2FMLN7NI4KKRZ6LBMFJKL3N6TINCKLQ7YACPN5ZE
[1] 2024/12/14 00:01:51.305046 [INF]   ID:       NAHFE6RPOFSU2O6E2FMLN7NI4KKRZ6LBMFJKL3N6TINCKLQ7YACPN5ZE
[1] 2024/12/14 00:01:51.305058 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:01:51.305491 [INF] Listening for client connections on 0.0.0.0:4222
[1] 2024/12/14 00:01:51.305662 [INF] Server is ready
[1] 2024/12/14 00:02:00.018580 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:00.018781 [INF] Server Exiting..
[1] 2024/12/14 00:02:00.254569 [INF] Starting nats-server
[1] 2024/12/14 00:02:00.254852 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:00.254884 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:00.254958 [INF]   Name:     NA323OFITEEPCTMUAUZOUC45ENPXYMK4UKCQGKJHYZRJUPFGZACREXGH
[1] 2024/12/14 00:02:00.254983 [INF]   ID:       NA323OFITEEPCTMUAUZOUC45ENPXYMK4UKCQGKJHYZRJUPFGZACREXGH
[1] 2024/12/14 00:02:00.255070 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:00.256087 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:00.256[11](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:12)1 [INF] Server is ready
[1] 2024/[12](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:13)/14 00:02:00.266119 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:00.266246 [INF] Server Exiting..
[1] 2024/12/14 00:02:00.493527 [INF] Starting nats-server
[1] 2024/12/14 00:02:00.493619 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:00.493622 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:00.493625 [INF]   Name:     NA6EDSMXDYXQL53DTA2JHEN2YO35A4OOFJC7L5H5VRBB7TY3NA4D27WF
[1] 2024/12/14 00:02:00.493629 [INF]   ID:       NA6EDSMXDYXQL53DTA2JHEN2YO35A4OOFJC7L5H5VRBB7TY3NA4D27WF
[1] 2024/12/14 00:02:00.493639 [WRN] Plaintext passwords detected, use nkeys or bcrypt
[1] 2024/12/14 00:02:00.493645 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:00.494454 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:00.494476 [INF] Server is ready
[1] 2024/12/14 00:02:00.50[13](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:14)69 [INF] Initiating Shutdown...
[1] 2024/12/[14](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:15) 00:02:00.501482 [INF] Server Exiting..
[1] 2024/12/14 00:02:00.725478 [INF] Starting nats-server
[1] 2024/12/14 00:02:00.725746 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:00.725748 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:00.725750 [INF]   Name:     NDRZ5QF2JCBELDRH6ODJRJMCZX4V3U2PI6LOR2KM55JRNG34KPJKYDWY
[1] 2024/12/14 00:02:00.725752 [INF]   ID:       NDRZ5QF2JCBELDRH6ODJRJMCZX4V3U2PI6LOR2KM55JRNG34KPJKYDWY
[1] 2024/12/14 00:02:00.725758 [WRN] Plaintext passwords detected, use nkeys or bcrypt
[1] 2024/12/14 00:02:00.725768 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:00.726266 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:00.726283 [INF] Server is ready
[1] 2024/12/14 00:02:01.110139 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:01.110232 [INF] Server Exiting..
[1] 2024/12/14 00:02:01.342862 [INF] Starting nats-server
[1] 2024/12/14 00:02:01.343036 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:01.343039 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:01.343042 [INF]   Name:     NBOUZI45CIH7CG5ADHIWS7VMQWABGBAZUT3IKEWXM7TYRFNZVQZ22YCH
[1] 2024/12/14 00:02:01.343044 [INF]   ID:       NBOUZI45CIH7CG5ADHIWS7VMQWABGBAZUT3IKEWXM7TYRFNZVQZ22YCH
[1] 2024/12/14 00:02:01.343050 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:01.343854 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:01.344049 [INF] Server is ready
[1] 2024/12/14 00:02:01.351755 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:01.351856 [INF] Server Exiting..
[1] 2024/12/14 00:02:01.584712 [INF] Starting nats-server
[1] 2024/12/14 00:02:01.584807 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:01.584810 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:01.584812 [INF]   Name:     NBJ56O24LYMXZEBXZVIVNTTOF2GC64L77IJ2WHC6WQ5VYWOVXATEG5VZ
[1] 2024/12/14 00:02:01.584814 [INF]   ID:       NBJ56O24LYMXZEBXZVIVNTTOF2GC64L77IJ2WHC6WQ5VYWOVXATEG5VZ
[1] 2024/12/14 00:02:01.584821 [WRN] Plaintext passwords detected, use nkeys or bcrypt
[1] 2024/12/14 00:02:01.584827 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:01.585364 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:01.585381 [INF] Server is ready
[1] 2024/12/14 00:02:01.591990 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:01.592063 [INF] Server Exiting..
[1] 2024/12/14 00:02:01.812934 [INF] Starting nats-server
[1] 2024/12/14 00:02:01.813063 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:01.813070 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:01.813074 [INF]   Name:     NA47LBPYXPNCN3OSVLEMXU2LFPGJLZF2GNQ7SQXEN3TW64W6M4DARQ5T
[1] 2024/12/14 00:02:01.813078 [INF]   ID:       NA47LBPYXPNCN3OSVLEMXU2LFPGJLZF2GNQ7SQXEN3TW64W6M4DARQ5T
[1] 2024/12/14 00:02:01.813087 [WRN] Plaintext passwords detected, use nkeys or bcrypt
[1] 2024/12/14 00:02:01.813112 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:01.813727 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:01.813748 [INF] Server is ready
[1] 2024/12/14 00:02:02.111216 [ERR] 172.18.0.3:44840 - cid:5 - authentication error
[1] 2024/12/14 00:02:02.200458 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:02.200526 [INF] Server Exiting..
[1] 2024/12/14 00:02:02.427550 [INF] Starting nats-server
[1] 2024/12/14 00:02:02.427641 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:02.427645 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:02.427647 [INF]   Name:     NAI3A35AZWQ2RXSOYRCRYF4TNTAUGCT7QE6EV3NDUBCBE2GUTGKCTIAC
[1] 2024/12/14 00:02:02.427655 [INF]   ID:       NAI3A35AZWQ2RXSOYRCRYF4TNTAUGCT7QE6EV3NDUBCBE2GUTGKCTIAC
[1] 2024/12/14 00:02:02.427661 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:02.428322 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:02.428345 [INF] Server is ready
[1] 2024/12/14 00:02:02.436575 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:02.436655 [INF] Server Exiting..
[1] 2024/12/14 00:02:02.663721 [INF] Starting nats-server
[1] 2024/12/14 00:02:02.663819 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:02.663823 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:02.663826 [INF]   Name:     NBDYOJ2VGCYTEF6UGLYGDRN4MCHQSGYRAK2QBGMURMMJ6XXD5R7MZCEV
[1] 2024/12/14 00:02:02.663829 [INF]   ID:       NBDYOJ2VGCYTEF6UGLYGDRN4MCHQSGYRAK2QBGMURMMJ6XXD5R7MZCEV
[1] 2024/12/14 00:02:02.663837 [WRN] Plaintext passwords detected, use nkeys or bcrypt
[1] 2024/12/14 00:02:02.663842 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:02.664480 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:02.664503 [INF] Server is ready
[1] 2024/12/14 00:02:02.671750 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:02.671816 [INF] Server Exiting..
[1] 2024/12/14 00:02:02.907033 [INF] Starting nats-server
[1] 2024/12/14 00:02:02.907130 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:02.907134 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:02.907137 [INF]   Name:     NDIUIHC5O222CUJ3QRE4PAMHASBQ5OC4ARLGD5AWEH4J3H7JWE6A3BRO
[1] 2024/12/14 00:02:02.907139 [INF]   ID:       NDIUIHC5O222CUJ3QRE4PAMHASBQ5OC4ARLGD5AWEH4J3H7JWE6A3BRO
[1] 2024/12/14 00:02:02.907148 [WRN] Plaintext passwords detected, use nkeys or bcrypt
[1] 2024/12/14 00:02:02.907[15](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:16)3 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:02.907973 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:02.907995 [INF] Server is ready
[1] 2024/12/14 00:02:03.220885 [ERR] 172.18.0.3:44846 - cid:5 - authentication error
[1] 2024/12/14 00:02:03.307733 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:03.307789 [INF] Server Exiting..
[1] 2024/12/14 00:02:03.549131 [INF] Starting nats-server
[1] 2024/12/14 00:02:03.549264 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:03.549267 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:03.549270 [INF]   Name:     NDYJNSMPTDII7YQAZFSMINCQJZP2ECQW3WUXMHYHSB3HD6ODZWTY6IMU
[1] 2024/12/14 00:02:03.549274 [INF]   ID:       NDYJNSMPTDII7YQAZFSMINCQJZP2ECQW3WUXMHYHSB3HD6ODZWTY6IMU
[1] 2024/12/14 00:02:03.549285 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:03.550132 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:03.550154 [INF] Server is ready
[1] 2024/12/14 00:02:03.558305 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:03.558372 [INF] Server Exiting..
[1] 2024/12/14 00:02:03.792404 [INF] Starting nats-server
[1] 2024/12/14 00:02:03.792506 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:03.792510 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:03.792513 [INF]   Name:     NDFHUWTIG7PZWCQP4JKBK3C4VVUOFPE6V4CRJV4GFFKU7BFMQJCX3AAH
[1] 2024/12/14 00:02:03.792517 [INF]   ID:       NDFHUWTIG7PZWCQP4JKBK3C4VVUOFPE6V4CRJV4GFFKU7BFMQJCX3AAH
[1] 2024/12/14 00:02:03.792526 [WRN] Plaintext passwords detected, use nkeys or bcrypt
[1] 2024/12/14 00:02:03.792539 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:03.793115 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:03.793134 [INF] Server is ready
[1] 2024/12/14 00:02:03.799881 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:03.800011 [INF] Server Exiting..
[1] 2024/12/14 00:02:04.035522 [INF] Starting nats-server
[1] 2024/12/14 00:02:04.035618 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:04.035622 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:04.035624 [INF]   Name:     NDUQ7AXHPKWELNWCJAKCD45AUKGWYJPBBPKOHDT72G45E7UUZNMMUP3I
[1] 2024/12/14 00:02:04.035628 [INF]   ID:       NDUQ7AXHPKWELNWCJAKCD45AUKGWYJPBBPKOHDT72G45E7UUZNMMUP3I
[1] 2024/12/14 00:02:04.035636 [WRN] Plaintext passwords detected, use nkeys or bcrypt
[1] 2024/12/14 00:02:04.035644 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:04.036225 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:04.036242 [INF] Server is ready
[1] 2024/12/14 00:02:06.261390 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:06.261481 [INF] Server Exiting..
[1] 2024/12/14 00:02:06.397183 [INF] Starting nats-server
[1] 2024/12/14 00:02:06.397266 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:06.397269 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:06.397272 [INF]   Name:     NBOPCYEEAGQ4PM4E4JO2BFUHBWLPO3AXZ5PYO66EFUNXKLBCX2O7F3FH
[1] 2024/12/14 00:02:06.397276 [INF]   ID:       NBOPCYEEAGQ4PM4E4JO2BFUHBWLPO3AXZ5PYO66EFUNXKLBCX2O7F3FH
[1] 2024/12/14 00:02:06.397282 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:06.398253 [FTL] Error listening on port: nats:4255, "listen tcp: lookup nats on 127.0.0.53:53: read udp 127.0.0.1:59615->127.0.0.53:53: read: connection refused"
[1] 2024/12/14 00:02:06.695[16](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:17)4 [INF] Starting nats-server
[1] 2024/12/14 00:02:06.695260 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:06.695263 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:06.695268 [INF]   Name:     NANLUNJCPQN4YFLKW45GEP72AOMIGYX3DERPG2LQCJ5GANHDADBBZY4T
[1] 2024/12/14 00:02:06.695272 [INF]   ID:       NANLUNJCPQN4YFLKW45GEP72AOMIGYX3DERPG2LQCJ5GANHDADBBZY4T
[1] 2024/12/14 00:02:06.695278 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:06.695806 [INF] Listening for client connections on nats:4255
[1] 2024/12/14 00:02:06.695825 [INF] Server is ready
[1] 2024/12/14 00:02:07.087756 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:07.087840 [INF] Server Exiting..
[1] 2024/12/14 00:02:07.335493 [INF] Starting nats-server
[1] 2024/12/14 00:02:07.335598 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:07.335602 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:07.335605 [INF]   Name:     NAIO5IJWRWYGYYW3FNIILX6HY6UGWIBZRVUXZSZZXJAJWB7SIY2IQK6T
[1] 2024/12/14 00:02:07.335607 [INF]   ID:       NAIO5IJWRWYGYYW3FNIILX6HY6UGWIBZRVUXZSZZXJAJWB7SIY2IQK6T
[1] 2024/12/14 00:02:07.335616 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:07.336274 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:07.336302 [INF] Server is ready
[1] 2024/12/14 00:02:07.72[17](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:18)95 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:07.72[18](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:19)84 [INF] Server Exiting..
[1] 2024/12/14 00:02:07.968177 [INF] Starting nats-server
[1] 2024/12/14 00:02:07.968277 [INF]   Version:  2.10.23
[1] 2024/12/14 00:02:07.968280 [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:07.968283 [INF]   Name:     NBOYWWL5DZJK42PDBJV2GR4PH2OXSG7ADES7VHJZ2FW7UPO2CDGXLMGT
[1] 2024/12/14 00:02:07.968285 [INF]   ID:       NBOYWWL5DZJK42PDBJV2GR4PH2OXSG7ADES7VHJZ2FW7UPO2CDGXLMGT
[1] 2024/12/14 00:02:07.968296 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:07.968964 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:07.968981 [INF] Server is ready
[1] 2024/12/14 00:02:08.338621 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:08.338698 [INF] Server Exiting..
[1] 2024/12/14 00:02:08.568303 [INF] Starting nats-server
[1] 2024/12/14 00:02:08.5684[19](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:20) [INF]   Version:  2.10.23
[1] [20](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:21)24/12/14 00:02:08.5684[22](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:23) [INF]   Git:      [145e44d]
[1] 2024/12/14 00:02:08.568425 [INF]   Name:     NCMMDZRE4GXR2NJQZXPV4AGYTDHRBR7USHORJIELX5VV4SM4WPBVSKRT
[1] 2024/12/14 00:02:08.568429 [INF]   ID:       NCMMDZRE4GXR2NJQZXPV4AGYTDHRBR7USHORJIELX5VV4SM4WPBVSKRT
[1] 2024/12/14 00:02:08.568435 [INF] Using configuration file: /nats/nats.conf
[1] 2024/12/14 00:02:08.569055 [INF] Listening for client connections on nats:4222
[1] 2024/12/14 00:02:08.569072 [INF] Server is ready
[1] 2024/12/14 00:02:08.958198 [INF] Initiating Shutdown...
[1] 2024/12/14 00:02:08.958273 [INF] Server Exiting..

=== END NATS Logs ===
Removing NATS config file: /tmp/tmpvp7t0r55backend-features-nats.conf
Contents of NATS config file: {"listen": "nats:4222"}
5 features passed, 0 failed, 0 skipped
13 scenarios passed, 0 failed, 0 skipped
77 steps passed, 0 failed, 0 skipped
Took 0m8.9[23](https://github.com/wuespace/telestion/actions/runs/12324864073/job/34403171337#step:4:24)s

@pklaschka pklaschka added 📕 documentation Improvements or additions to documentation 🌷 enhancement New feature or request dependencies Pull requests that update a dependency file 🏃 github_actions GitHub Action changes that hit almost all workflows in the ecosystem labels Dec 14, 2024
@pklaschka pklaschka self-assigned this Dec 14, 2024
@pklaschka pklaschka requested a review from fussel178 as a code owner December 14, 2024 17:22

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot reviewed 23 out of 38 changed files in this pull request and generated no comments.

Files not reviewed (15)
  • .github/workflows/backend-features-lint.yml: Language not supported
  • backend-deno/Dockerfile: Language not supported
  • backend-deno/docker-compose.yml: Language not supported
  • backend-features/.gherkin-lintrc: Language not supported
  • backend-features/.gitignore: Language not supported
  • backend-features/Dockerfile: Language not supported
  • backend-features/auth.feature: Language not supported
  • backend-features/config.feature: Language not supported
  • backend-features/dev-mode.feature: Language not supported
  • backend-features/docker-compose.yml: Language not supported
  • backend-deno/cucumber/README.md: Evaluated as low risk
  • backend-deno/cucumber/step-registry.ts: Evaluated as low risk
  • backend-deno/cucumber/steps/config.ts: Evaluated as low risk
  • backend-deno/cucumber/steps/nats.ts: Evaluated as low risk
  • backend-deno/cucumber/steps/start.ts: Evaluated as low risk
Comments suppressed due to low confidence (2)

backend-deno/testbed.e2e.ts:44

  • [nitpick] The variable nats is used without a clear declaration or type. Consider declaring it explicitly for better readability.
const nats = res.nc;

backend-deno/testbed.e2e.ts:65

  • The error message 'Unknown error' is vague. Consider providing more context or details about the error.
result.error = "Unknown error";
@pklaschka pklaschka enabled auto-merge December 15, 2024 00:55
@github-actions github-actions bot mentioned this pull request Dec 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📕 documentation Improvements or additions to documentation dependencies Pull requests that update a dependency file 🏃 github_actions GitHub Action changes that hit almost all workflows in the ecosystem 🌷 enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants