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

Including setup method to clean state between tests #9265

Merged
merged 2 commits into from
Nov 28, 2021

Conversation

odrepa
Copy link
Contributor

@odrepa odrepa commented Nov 13, 2021

What is the purpose of the change

In InternalThreadLocalTest, testSize fails when run after testSetAndGet, testRemove, or testRemoveAll in the same test class. I found that running InternalThreadLocalMap.remove() before testSize ensures the starting state is correct such that testSize can pass even when run after those three tests. I introduced the setup method to ensure this resetting logic is run before each test. Please let me know if there is a more preferred way to address this issue.

Brief changelog

Including a setup method that sets the state through InternalThreadLocalMap.remove().

Verifying this change

Checklist

  • Make sure there is a GitHub_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GitHub issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
  • Each commit in the pull request should have a meaningful subject line and body.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Check if is necessary to patch to Dubbo 3 if you are work on Dubbo 2.7
  • Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
  • Add some description to dubbo-website project if you are requesting to add a feature.
  • GitHub Actions works fine on your own branch.
  • If this contribution is large, please follow the Software Donation Guide.

@BurningCN
Copy link
Member

hi, why my local test did not reproduce
image

@odrepa
Copy link
Contributor Author

odrepa commented Nov 24, 2021

Hi,

Sorry for the late response. On my side, what I could do to reproduce the failure in the specific order is to add the annotation "@org.junit.jupiter.api.TestMethodOrder(org.junit.jupiter.api.MethodOrderer.Alphanumeric.class)" to the test class (as to force alphabetical test method order, which would put testSize at the end), leading to testSize to fail. The failure message I would see is:

org.opentest4j.AssertionFailedError: size method is wrong! ==> expected: <1> but was: <4>
        at org.apache.dubbo.common.threadlocal.InternalThreadLocalTest.testSize(InternalThreadLocalTest.java:78)

Copy link
Member

@BurningCN BurningCN left a comment

Choose a reason for hiding this comment

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

LGTM

@BurningCN
Copy link
Member

BurningCN commented Nov 25, 2021

Without the TestMethodOrder annotation, my side has always been normal.
In terms of pr, the cleaning operation is good, but I recommend using the AfterEach method, so that the resources can be cleaned up after the last case to avoid polluting other tests.

@odrepa
Copy link
Contributor Author

odrepa commented Nov 25, 2021

As per the suggestion, I've switched to using @AfterEach to clean up instead of setting up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants