tree cad81ff993968e5b038956471d3c25890b254947
parent 3b8ddc64b3936cc1673d8af2bdfb34b487e68507
author roryqi <jerqi1242949407@gmail.com> 1663899278 +0800
committer roryqi <roryqi@tencent.com> 1665576589 +0800

[MINOR] Fix flaky test (#238)

### What changes were proposed in this pull request?
`org.apache.uniffle.test.GetShuffleReportForMultiPartTest` is flaky
 throws Exception:
ava.lang.ClassCastException: org.apache.spark.shuffle.RssShuffleManager cannot be cast to org.apache.uniffle.test.GetShuffleReportForMultiPartTest$RssShuffleManagerWrapper
	at org.apache.uniffle.test.GetShuffleReportForMultiPartTest.runTest(GetShuffleReportForMultiPartTest.java:180)
	at org.apache.uniffle.test.SparkIntegrationTestBase.runSparkApp(SparkIntegrationTestBase.java:74)
	at org.apache.uniffle.test.SparkIntegrationTestBase.run(SparkIntegrationTestBase.java:52)
	at org.apache.uniffle.test.GetShuffleReportForMultiPartTest.resultCompareTest(GetShuffleReportForMultiPartTest.java:141)

### Why are the changes needed?
Fix flaky test


### Does this PR introduce _any_ user-facing change?
No

### How was this patch tested?
GA passed

Co-authored-by: roryqi <roryqi@tencent.com>