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

[Enhancement] The method of verifying no exception thrown is not appropriate. #3887

Open
2 tasks done
pandaapo opened this issue May 8, 2023 · 1 comment · May be fixed by #3889
Open
2 tasks done

[Enhancement] The method of verifying no exception thrown is not appropriate. #3887

pandaapo opened this issue May 8, 2023 · 1 comment · May be fixed by #3889
Labels
enhancement New feature or request Stale

Comments

@pandaapo
Copy link
Member

pandaapo commented May 8, 2023

Search before asking

  • I had searched in the issues and found no similar issues.

Enhancement Request

org.apache.eventmesh.common.loadbalance.RandomLoadBalanceSelectorTest

{
    ......
    // just assert success if no exception
    Assert.assertTrue(true);
}

This method of verifying no exception thrown is not appropriate.


org.apache.eventmesh.common.loadbalance.WeightRandomLoadBalanceSelectorTest

// testRange = 100000
Assert.assertTrue(Math.abs(addressToNum.get("192.168.0.3") - addressToNum.get("192.168.0.2") * 2) < testRange / 20);
Assert.assertTrue(Math.abs(addressToNum.get("192.168.0.3") - addressToNum.get("192.168.0.1") * 4) < testRange / 20);

[bug]: Map addressToNum is the result of weighted random selection for 100000 times. Key is a address and value is times. The weight of "192.168.0.3":"192.168.0.2":"192.168.0.1" is 4:2:1. So addressToNum.get("192.168.0.3") should ≈ addressToNum.get("192.168.0.2") * 2.

Three cases, pairwise verification should be conducted, otherwise the verification is insufficient.

In java 9 and later version, Reflection access private field is regard as illegal reflective access operation. It cause warning, even exception according to VM options.


org.apache.eventmesh.common.loadbalance.WeightRoundRobinLoadBalanceSelectorTest

Assert.assertTrue(addressToNum.get("B") > addressToNum.get("A"));

It is not accurate for verify the weight in WeightRoundRobin.

The capacity of Map in #testSelect() is definite.

Describe the solution you'd like

org.apache.eventmesh.common.loadbalance.RandomLoadBalanceSelectorTest

Use Assert.fail()

org.apache.eventmesh.common.loadbalance.WeightRandomLoadBalanceSelectorTest

[bug]: Set the error rate to 0.05 instead of 5000(=100000/20).

Verify the ratio of "192.168.0.2" : "192.168.0.1"

User getter access private field.

org.apache.eventmesh.common.loadbalance.WeightRoundRobinLoadBalanceSelectorTest

Use Assert.assertEquals(excepted, actual, delta)

Init map with a specified capacity.

Are you willing to submit PR?

  • Yes I am willing to submit a PR!
@pandaapo pandaapo added the enhancement New feature or request label May 8, 2023
Copy link
Contributor

It has been 90 days since the last activity on this issue. Apache EventMesh values the voices of the community. Please don't hesitate to share your latest insights on this matter at any time, as the community is more than willing to engage in discussions regarding the development and optimization directions of this feature.

If you feel that your issue has been resolved, please feel free to close it. Should you have any additional information to share, you are welcome to reopen this issue.

@github-actions github-actions bot added the Stale label Apr 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Stale
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant