You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kyuubi.apache.org by ch...@apache.org on 2023/05/22 01:46:14 UTC
[kyuubi] branch master updated: [KYUUBI #4865] Fix flaky test BackendServiceMetricSuite
This is an automated email from the ASF dual-hosted git repository.
chengpan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kyuubi.git
The following commit(s) were added to refs/heads/master by this push:
new f4178851e [KYUUBI #4865] Fix flaky test BackendServiceMetricSuite
f4178851e is described below
commit f4178851ee3ac89289bcecb296df5df6db6493f4
Author: Cheng Pan <ch...@apache.org>
AuthorDate: Mon May 22 09:46:04 2023 +0800
[KYUUBI #4865] Fix flaky test BackendServiceMetricSuite
### _Why are the changes needed?_
Wrap assertion w/ `eventually` to address the flaky test.
### _How was this patch tested?_
- [ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible
- [ ] Add screenshots for manual tests if appropriate
- [x] [Run test](https://kyuubi.readthedocs.io/en/master/develop_tools/testing.html#running-tests) locally before make a pull request
Closes #4865 from pan3793/flaky-test-2.
Closes #4865
d582d575f [Cheng Pan] Fix flaky test BackendServiceMetricSuite
Authored-by: Cheng Pan <ch...@apache.org>
Signed-off-by: Cheng Pan <ch...@apache.org>
---
.../kyuubi/server/BackendServiceMetricSuite.scala | 63 +++++++++++-----------
1 file changed, 31 insertions(+), 32 deletions(-)
diff --git a/kyuubi-server/src/test/scala/org/apache/kyuubi/server/BackendServiceMetricSuite.scala b/kyuubi-server/src/test/scala/org/apache/kyuubi/server/BackendServiceMetricSuite.scala
index a58d1842c..9745917dd 100644
--- a/kyuubi-server/src/test/scala/org/apache/kyuubi/server/BackendServiceMetricSuite.scala
+++ b/kyuubi-server/src/test/scala/org/apache/kyuubi/server/BackendServiceMetricSuite.scala
@@ -21,10 +21,12 @@ import java.nio.file.{Path, Paths}
import java.time.Duration
import com.fasterxml.jackson.databind.ObjectMapper
+import org.scalatest.time.SpanSugar.convertIntToGrainOfTime
import org.apache.kyuubi.{Utils, WithKyuubiServer}
import org.apache.kyuubi.config.KyuubiConf
-import org.apache.kyuubi.metrics.{MetricsConf, MetricsConstants}
+import org.apache.kyuubi.metrics.MetricsConf
+import org.apache.kyuubi.metrics.MetricsConstants._
import org.apache.kyuubi.operation.HiveJDBCTestHelper
class BackendServiceMetricSuite extends WithKyuubiServer with HiveJDBCTestHelper {
@@ -45,43 +47,40 @@ class BackendServiceMetricSuite extends WithKyuubiServer with HiveJDBCTestHelper
withJdbcStatement() { statement =>
statement.executeQuery("CREATE TABLE stu_test(id int, name string) USING parquet")
statement.execute("insert into stu_test values(1, 'a'), (2, 'b'), (3, 'c')")
- Thread.sleep(Duration.ofMillis(111).toMillis)
+ val logRows1 = eventually(timeout(10.seconds), interval(1.second)) {
+ val res = objMapper.readTree(Paths.get(reportPath.toString, "report.json").toFile)
+ assert(res.has("timers"))
+ val timer = res.get("timers")
+ assert(timer.get(BS_EXECUTE_STATEMENT).get("count").asInt() == 2)
+ assert(timer.get(BS_EXECUTE_STATEMENT).get("mean").asDouble() > 0)
- val res1 = objMapper.readTree(Paths.get(reportPath.toString, "report.json").toFile)
- assert(res1.has("timers"))
- val timer1 = res1.get("timers")
- assert(
- timer1.get(MetricsConstants.BS_EXECUTE_STATEMENT).get("count").asInt() == 2)
- assert(
- timer1.get(MetricsConstants.BS_EXECUTE_STATEMENT).get("mean").asDouble() > 0)
-
- assert(res1.has("meters"))
- val meters1 = res1.get("meters")
- val logRows1 = meters1.get(MetricsConstants.BS_FETCH_LOG_ROWS_RATE).get("count").asInt()
- assert(logRows1 > 0)
+ assert(res.has("meters"))
+ val meters = res.get("meters")
+ val logRows = meters.get(BS_FETCH_LOG_ROWS_RATE).get("count").asInt()
+ assert(logRows > 0)
+ logRows
+ }
statement.execute("select * from stu_test limit 2")
statement.getResultSet.next()
- Thread.sleep(Duration.ofMillis(111).toMillis)
-
- val res2 = objMapper.readTree(Paths.get(reportPath.toString, "report.json").toFile)
- val timer2 = res2.get("timers")
- assert(
- timer2.get(MetricsConstants.BS_OPEN_SESSION).get("count").asInt() == 1)
- assert(
- timer2.get(MetricsConstants.BS_OPEN_SESSION).get("min").asInt() > 0)
- val execStatementNode2 = timer2.get(MetricsConstants.BS_EXECUTE_STATEMENT)
- assert(execStatementNode2.get("count").asInt() == 3)
- assert(
- execStatementNode2.get("max").asDouble() >= execStatementNode2.get("mean").asDouble() &&
- execStatementNode2.get("mean").asDouble() >= execStatementNode2.get("min").asDouble())
+ eventually(timeout(60.seconds), interval(1.second)) {
+ val res = objMapper.readTree(Paths.get(reportPath.toString, "report.json").toFile)
+ val timer = res.get("timers")
+ assert(timer.get(BS_OPEN_SESSION).get("count").asInt() == 1)
+ assert(timer.get(BS_OPEN_SESSION).get("min").asInt() > 0)
+ val execStatementNode = timer.get(BS_EXECUTE_STATEMENT)
+ assert(execStatementNode.get("count").asInt() == 3)
+ assert(
+ execStatementNode.get("max").asDouble() >= execStatementNode.get("mean").asDouble() &&
+ execStatementNode.get("mean").asDouble() >= execStatementNode.get("min").asDouble())
- val meters2 =
- objMapper.readTree(Paths.get(reportPath.toString, "report.json").toFile).get("meters")
- assert(meters2.get(MetricsConstants.BS_FETCH_RESULT_ROWS_RATE).get("count").asInt() == 8)
- assert(meters2.get(MetricsConstants.BS_FETCH_LOG_ROWS_RATE).get("count").asInt() >= logRows1)
+ val meters =
+ objMapper.readTree(Paths.get(reportPath.toString, "report.json").toFile).get("meters")
+ assert(meters.get(BS_FETCH_RESULT_ROWS_RATE).get("count").asInt() == 8)
+ assert(meters.get(BS_FETCH_LOG_ROWS_RATE).get("count").asInt() >= logRows1)
- statement.executeQuery("DROP TABLE stu_test")
+ statement.executeQuery("DROP TABLE stu_test")
+ }
}
}
}