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

VStreamer Unit Tests: framework to remove the need to specify serialized strings in row events for unit tests #14903

Merged

Conversation

rohit-nayak-ps
Copy link
Contributor

@rohit-nayak-ps rohit-nayak-ps commented Jan 8, 2024

Description

This PR introduces a new framework to define the vstreamer unit test events in a structured manner, eliminating the need for specifying serialized row event strings directly.

This makes our tests less brittle by automating event generation for straightforward queries, thus reducing the need for extensive manual adjustments whenever row events change. While not all tests will benefit from this method, it's a significant step towards simplifying our testing process.

We plan to further refine this framework in future PRs, aiming for a balance to avoid unnecessary complexity. The framework is designed for generic applicability across multiple tests wherever feasible.

The tests currently modified are: TestNoBlob, TestSetAndEnum, TestFilteredVarBinary, TestFilteredInt, TestCellValuePadding, TestSetStatement, TestSetForeignKeyCheck, TestSavepoint, TestSavepointWithFilter.

Related Issue(s)

Checklist

  • "Backport to:" labels have been added if this change should be back-ported to release branches
  • If this change is to be back-ported to previous releases, a justification is included in the PR description
  • Tests were added or are not required
  • Did the new or modified tests pass consistently locally and on CI?
  • Documentation was added or is not required

Copy link
Contributor

vitess-bot bot commented Jan 8, 2024

Review Checklist

Hello reviewers! 👋 Please follow this checklist when reviewing this Pull Request.

General

  • Ensure that the Pull Request has a descriptive title.
  • Ensure there is a link to an issue (except for internal cleanup and flaky test fixes), new features should have an RFC that documents use cases and test cases.

Tests

  • Bug fixes should have at least one unit or end-to-end test, enhancement and new features should have a sufficient number of tests.

Documentation

  • Apply the release notes (needs details) label if users need to know about this change.
  • New features should be documented.
  • There should be some code comments as to why things are implemented the way they are.
  • There should be a comment at the top of each new or modified test to explain what the test does.

New flags

  • Is this flag really necessary?
  • Flag names must be clear and intuitive, use dashes (-), and have a clear help text.

If a workflow is added or modified:

  • Each item in Jobs should be named in order to mark it as required.
  • If the workflow needs to be marked as required, the maintainer team must be notified.

Backward compatibility

  • Protobuf changes should be wire-compatible.
  • Changes to _vt tables and RPCs need to be backward compatible.
  • RPC changes should be compatible with vitess-operator
  • If a flag is removed, then it should also be removed from vitess-operator and arewefastyet, if used there.
  • vtctl command output order should be stable and awk-able.

@vitess-bot vitess-bot bot added NeedsBackportReason If backport labels have been applied to a PR, a justification is required NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsIssue A linked issue is missing for this Pull Request NeedsWebsiteDocsUpdate What it says labels Jan 8, 2024
@github-actions github-actions bot added this to the v19.0.0 milestone Jan 8, 2024
@rohit-nayak-ps rohit-nayak-ps added Type: Enhancement Logical improvement (somewhere between a bug and feature) Component: VReplication Type: Testing and removed NeedsWebsiteDocsUpdate What it says NeedsBackportReason If backport labels have been applied to a PR, a justification is required labels Jan 8, 2024
@rohit-nayak-ps rohit-nayak-ps force-pushed the rohit/vr-unit-tests-events-refactor branch from 40d4575 to fe2a2c8 Compare January 8, 2024 22:17
Copy link

codecov bot commented Jan 9, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (b539ce9) 67.47% compared to head (8c28eed) 67.47%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #14903      +/-   ##
==========================================
- Coverage   67.47%   67.47%   -0.01%     
==========================================
  Files        1561     1561              
  Lines      193186   193185       -1     
==========================================
- Hits       130353   130351       -2     
- Misses      62833    62834       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@frouioui frouioui modified the milestones: v19.0.0, v20.0.0 Feb 6, 2024
@rohit-nayak-ps rohit-nayak-ps removed NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsIssue A linked issue is missing for this Pull Request labels Feb 14, 2024
@rohit-nayak-ps rohit-nayak-ps force-pushed the rohit/vr-unit-tests-events-refactor branch from 6da7aae to d6d95ce Compare February 14, 2024 12:57
@rohit-nayak-ps rohit-nayak-ps marked this pull request as ready for review February 14, 2024 17:40
Copy link
Contributor

@mattlord mattlord left a comment

Choose a reason for hiding this comment

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

Looks good overall! Just some concerns about modifying unrelated packages' logging behavior — I think that we should remove those changes.

Otherwise I only had suggestions on potential minor improvements. Let me know what you think.

Thanks!

go/cmd/vtadmin/main.go Show resolved Hide resolved
go/vt/vtctl/workflow/traffic_switcher.go Outdated Show resolved Hide resolved
go/vt/vttablet/tabletserver/vstreamer/helper_event_test.go Outdated Show resolved Hide resolved
go/vt/vttablet/tabletserver/vstreamer/helper_event_test.go Outdated Show resolved Hide resolved
go/vt/vttablet/tabletserver/vstreamer/helper_event_test.go Outdated Show resolved Hide resolved
go/vt/vttablet/tabletserver/vstreamer/helper_event_test.go Outdated Show resolved Hide resolved
Copy link
Contributor

@ajm188 ajm188 left a comment

Choose a reason for hiding this comment

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

this is awesome, made a few minor comments and pending @mattlord's review comments i'm good to go.

thanks @rohit-nayak-ps !!

…e moment we can infer the required test events from the sql query. If this changes we will require tests to optionally pass more info

Signed-off-by: Rohit Nayak <rohit@planetscale.com>
…re custom logic that cannot be determined just from the query

Signed-off-by: Rohit Nayak <rohit@planetscale.com>
…e statement

Signed-off-by: Rohit Nayak <rohit@planetscale.com>
… Refactor

Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
@rohit-nayak-ps rohit-nayak-ps force-pushed the rohit/vr-unit-tests-events-refactor branch from 935adf5 to 646974e Compare February 16, 2024 13:47
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
@mattlord mattlord requested review from mattlord and ajm188 February 16, 2024 16:06
Copy link
Contributor

@mattlord mattlord left a comment

Choose a reason for hiding this comment

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

LGTM! I think it's worth adding the noted comment about collationID 45, but also not necessary if there's nothing else you want to change (to avoid the CI overhead -- if so I could add that comment in another open PR after merging in main again).

Thanks!

Comment on lines +63 to +65
func getDefaultCollationID() int64 {
return 45
}
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we should add a comment that 45 is utf8mb4_general_ci just to avoid others having to look it up in the future.

Copy link
Contributor

Choose a reason for hiding this comment

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

Added here: 981dc0b

@rohit-nayak-ps rohit-nayak-ps merged commit 2929dee into vitessio:main Feb 16, 2024
102 checks passed
@rohit-nayak-ps rohit-nayak-ps deleted the rohit/vr-unit-tests-events-refactor branch February 16, 2024 17:32
vitess-bot bot added a commit to vitessio/website that referenced this pull request Feb 16, 2024
frouioui pushed a commit to vitessio/website that referenced this pull request Feb 19, 2024
frouioui added a commit to vitessio/website that referenced this pull request Feb 19, 2024
…e the need to specify serialized strings in row events for unit tests (vitess#14903) (#1693)

* synchronize cobradocs with vitessio/vitess#14903

* revert unwanted change

Signed-off-by: Florent Poinsard <florent.poinsard@outlook.fr>

---------

Signed-off-by: Florent Poinsard <florent.poinsard@outlook.fr>
Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com>
Co-authored-by: Florent Poinsard <florent.poinsard@outlook.fr>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: VReplication Type: Enhancement Logical improvement (somewhere between a bug and feature) Type: Testing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants