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

Automate test harness and integrate into build process #1416

Closed
2 tasks
binarylogic opened this issue Dec 22, 2019 · 4 comments · Fixed by #2028
Closed
2 tasks

Automate test harness and integrate into build process #1416

binarylogic opened this issue Dec 22, 2019 · 4 comments · Fixed by #2028
Assignees
Labels
domain: tests Anything related to Vector's internal tests type: task Generic non-code related tasks

Comments

@binarylogic
Copy link
Contributor

binarylogic commented Dec 22, 2019

The Vector test harness is a blackbox test suite that allows for full end-to-end integration testing on log forwarders/routers (not just Vector). It allows for 3 types of tests:

  1. Ephemeral performance tests
  2. Ephemeral correctness tests
  3. Long-running reliability tests

1 and 2 should are finite tests, 3 runs indefinitely. Each time Vector is released we should test it on this suite and compare it to previous versions. Keep in mind, test data is persisted on S3, and standard Athena SQL queries can be run to compare results. This is what the compare and cohort commands do.

Prior art

  1. Option::{expect,unwrap} and Result::{expect, expect_err, unwrap, unwrap_err} have #[track_caller] rust-lang/rust#67887 (comment)

Design

  1. I'm open to the design of this features. We use CircleCI for Vector itself, but I would not be oppsed to experimenting with Github actions if we find it to be easier. Especially if it's easier to comment on pull requests, etc.
  2. You have liberty to change anything in the vector-test-harness repo. I originally built that and I am not an operations expert.

Requirements

  • Ability to manually test new Vector versions, ideally within a pull request. We would then wait to merge the PR until we have manually verified that there are no regressions.
  • Bonus points if we can post the results as a comment on the PR or in a Slack message.
@binarylogic binarylogic added domain: tests Anything related to Vector's internal tests domain: operations type: task Generic non-code related tasks labels Dec 22, 2019
@LucioFranco
Copy link
Contributor

I was chatting with eliza about what buoyant is doing with linkerd's benchmarks. They are still in the early stages of designing what they CI benches will look like. One thing she suggested was using gh action that triggers a bench build on a bare metal machine. This would ensure the least amount of noisiness.

I wonder if we could capture https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows#issue-comment-event-issue_comment events then use something like /bench to trigger a remote bench job that will run then report back in a new comment the results of this branch vs master. So this would allow us to then trigger this job either via comment or a prep PR for a release etc.

@MOZGIII
Copy link
Contributor

MOZGIII commented Jan 25, 2020

My understanding is with Github actions it's super easy, cause we can:

  • run a custom docker image - and we'll just wrap the test harness itself as a docker image
  • react to events like comments in the repo - and it's super easy too
  • since we'll be executing the code at the context of a comment hook - we can trivially respond to the comment with the whatever output our command generates

So, I'd just go with Github actions if everyone's ok with this.

Based on the requirements, we might not even need this to run automatically on a PR - just to have a manual trigger by a comment with something like /bench like @LucioFranco wrote.

@binarylogic
Copy link
Contributor Author

I am ok with that.

@MOZGIII
Copy link
Contributor

MOZGIII commented Feb 1, 2020

I created a tracking issue at vector-test-harness repo - vectordotdev/vector-test-harness#14 - check it out! Also, let's move the Github Action specific automation implementation there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
domain: tests Anything related to Vector's internal tests type: task Generic non-code related tasks
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants