Skip to content

chore(vdev): Rework support for integration tests #16085

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

Merged
merged 93 commits into from
Jan 24, 2023
Merged

Conversation

bruceg
Copy link
Member

@bruceg bruceg commented Jan 23, 2023

This reworks the support in vdev for integration testing, starting from the integration test environments (#15232 through #15259) and refactored the program code into vdev, and incrementally moving all of the test framework inside of the tool, leaving only config files outside of the vdev directory, and then refactoring the result.

As of this PR, several of the integration tests run properly, but not all, and they are not used in the CI process. I will submit a second PR following this one to clean up the actual tests, as that should not impact the test runner. I am putting this out now so the runner portion can get review while I work through the individual tests.

Notably, the following tests work out of the box:

  • amqp
  • apex
  • azure
  • chronicle
  • clickhouse
  • elasticsearch
  • http-client
  • kafka
  • nats
  • redis

You can run them with:

cargo vdev integration test http-client

or, as individual steps to enable faster repeat testing:

cargo vdev integration start http-client latest
cargo vdev integration test http-client latest
cargo vdev integration stop http-client

@bruceg bruceg deleted the bruceg/vdev-integrations branch January 24, 2023 20:46
davidhuie-dd pushed a commit that referenced this pull request Jan 24, 2023
* Add environment manager for amqp

* Add environment manager for apex

* Add environment manager for aws

* Add environment manager for axiom

* Add environment manager for azure

* Add environment manager for chronicle

* Add environment manager for clickhouse

* Add environment manager for datadog-agent

* Add environment manager for datadog-traces

* Add environment manager for elasticsearch

* Add environment manager for eventstoredb

* Add environment manager for gcp

* Add environment manager for http-client

* Add environment manager for humio

* Add environment manager for influxdb

* Add environment manager for kafka

* Add environment manager for logstash

* Add environment manager for loki

* Add environment manager for mongodb

* Add environment manager for nats

* Add environment manager for nginx

* Add environment manager for opentelemetry

* Add environment manager for postgres

* Add environment manager for prometheus

* Add environment manager for pulsar

* Add environment manager for redis

* Add environment manager for shutdown

* Add environment manager for splunk

* Fix integration test matrix data

* Merge all the integration tests into a common `bin` directory

* Merge all the main routines into a library

* Merge all the core libraries into the main lib

* Move all integration manager bins into one program

* Flatten out docker-compose files and bail on canonicalization error

* Integration integration manager into vdev

* Convert integration test state functions into a struct

* Refactor testing config types

* Move integration test running into library

* Use `collect_all` function to provide integration test versions

* Allow use of podman-compose using CONTAINER_TOOL

* Fix version environment variable name

* Rename the `docker-compose.yml` files to `compose.yaml` as per spec

Ref: https://github.com/compose-spec/compose-spec/blob/master/spec.md#compose-file

"The default path for a Compose file is compose.yaml (preferred) or compose.yml"

* Refactor integration test running compose into struct

* Fix running integration tests with podman

* Remove unneeded README files

* Fix obsolete image name in aws integration compose file

* Fix integration test relative paths

* Only list integration directories that have a config file

* Show active environments in the compact integration listing

* Let `vdev integration stop` stop all environments

* Remove accidentally committed file

* Add a README for the integration test files

* Drop unused network reference in aws integration

* Simplify path to chronicle pub key

* Add header to the `integration show` output

Co-authored-by: Ofek Lev <[email protected]>
@bruceg bruceg added the domain: vdev Anything related to the vdev tooling label Feb 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
domain: ci Anything related to Vector's CI environment domain: dev Anything related to Vector's development environment domain: tests Anything related to Vector's internal tests domain: vdev Anything related to the vdev tooling
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants