@@ -21,10 +21,12 @@ import java.nio.file.{Path, Paths}
21
21
import java .time .Duration
22
22
23
23
import com .fasterxml .jackson .databind .ObjectMapper
24
+ import org .scalatest .time .SpanSugar .convertIntToGrainOfTime
24
25
25
26
import org .apache .kyuubi .{Utils , WithKyuubiServer }
26
27
import org .apache .kyuubi .config .KyuubiConf
27
- import org .apache .kyuubi .metrics .{MetricsConf , MetricsConstants }
28
+ import org .apache .kyuubi .metrics .MetricsConf
29
+ import org .apache .kyuubi .metrics .MetricsConstants ._
28
30
import org .apache .kyuubi .operation .HiveJDBCTestHelper
29
31
30
32
class BackendServiceMetricSuite extends WithKyuubiServer with HiveJDBCTestHelper {
@@ -45,43 +47,40 @@ class BackendServiceMetricSuite extends WithKyuubiServer with HiveJDBCTestHelper
45
47
withJdbcStatement() { statement =>
46
48
statement.executeQuery(" CREATE TABLE stu_test(id int, name string) USING parquet" )
47
49
statement.execute(" insert into stu_test values(1, 'a'), (2, 'b'), (3, 'c')" )
48
- Thread .sleep(Duration .ofMillis(111 ).toMillis)
50
+ val logRows1 = eventually(timeout(10 .seconds), interval(1 .second)) {
51
+ val res = objMapper.readTree(Paths .get(reportPath.toString, " report.json" ).toFile)
52
+ assert(res.has(" timers" ))
53
+ val timer = res.get(" timers" )
54
+ assert(timer.get(BS_EXECUTE_STATEMENT ).get(" count" ).asInt() == 2 )
55
+ assert(timer.get(BS_EXECUTE_STATEMENT ).get(" mean" ).asDouble() > 0 )
49
56
50
- val res1 = objMapper.readTree(Paths .get(reportPath.toString, " report.json" ).toFile)
51
- assert(res1.has(" timers" ))
52
- val timer1 = res1.get(" timers" )
53
- assert(
54
- timer1.get(MetricsConstants .BS_EXECUTE_STATEMENT ).get(" count" ).asInt() == 2 )
55
- assert(
56
- timer1.get(MetricsConstants .BS_EXECUTE_STATEMENT ).get(" mean" ).asDouble() > 0 )
57
-
58
- assert(res1.has(" meters" ))
59
- val meters1 = res1.get(" meters" )
60
- val logRows1 = meters1.get(MetricsConstants .BS_FETCH_LOG_ROWS_RATE ).get(" count" ).asInt()
61
- assert(logRows1 > 0 )
57
+ assert(res.has(" meters" ))
58
+ val meters = res.get(" meters" )
59
+ val logRows = meters.get(BS_FETCH_LOG_ROWS_RATE ).get(" count" ).asInt()
60
+ assert(logRows > 0 )
61
+ logRows
62
+ }
62
63
63
64
statement.execute(" select * from stu_test limit 2" )
64
65
statement.getResultSet.next()
65
- Thread .sleep(Duration .ofMillis(111 ).toMillis)
66
-
67
- val res2 = objMapper.readTree(Paths .get(reportPath.toString, " report.json" ).toFile)
68
- val timer2 = res2.get(" timers" )
69
- assert(
70
- timer2.get(MetricsConstants .BS_OPEN_SESSION ).get(" count" ).asInt() == 1 )
71
- assert(
72
- timer2.get(MetricsConstants .BS_OPEN_SESSION ).get(" min" ).asInt() > 0 )
73
- val execStatementNode2 = timer2.get(MetricsConstants .BS_EXECUTE_STATEMENT )
74
- assert(execStatementNode2.get(" count" ).asInt() == 3 )
75
- assert(
76
- execStatementNode2.get(" max" ).asDouble() >= execStatementNode2.get(" mean" ).asDouble() &&
77
- execStatementNode2.get(" mean" ).asDouble() >= execStatementNode2.get(" min" ).asDouble())
66
+ eventually(timeout(60 .seconds), interval(1 .second)) {
67
+ val res = objMapper.readTree(Paths .get(reportPath.toString, " report.json" ).toFile)
68
+ val timer = res.get(" timers" )
69
+ assert(timer.get(BS_OPEN_SESSION ).get(" count" ).asInt() == 1 )
70
+ assert(timer.get(BS_OPEN_SESSION ).get(" min" ).asInt() > 0 )
71
+ val execStatementNode = timer.get(BS_EXECUTE_STATEMENT )
72
+ assert(execStatementNode.get(" count" ).asInt() == 3 )
73
+ assert(
74
+ execStatementNode.get(" max" ).asDouble() >= execStatementNode.get(" mean" ).asDouble() &&
75
+ execStatementNode.get(" mean" ).asDouble() >= execStatementNode.get(" min" ).asDouble())
78
76
79
- val meters2 =
80
- objMapper.readTree(Paths .get(reportPath.toString, " report.json" ).toFile).get(" meters" )
81
- assert(meters2 .get(MetricsConstants . BS_FETCH_RESULT_ROWS_RATE ).get(" count" ).asInt() == 8 )
82
- assert(meters2 .get(MetricsConstants . BS_FETCH_LOG_ROWS_RATE ).get(" count" ).asInt() >= logRows1)
77
+ val meters =
78
+ objMapper.readTree(Paths .get(reportPath.toString, " report.json" ).toFile).get(" meters" )
79
+ assert(meters .get(BS_FETCH_RESULT_ROWS_RATE ).get(" count" ).asInt() == 8 )
80
+ assert(meters .get(BS_FETCH_LOG_ROWS_RATE ).get(" count" ).asInt() >= logRows1)
83
81
84
- statement.executeQuery(" DROP TABLE stu_test" )
82
+ statement.executeQuery(" DROP TABLE stu_test" )
83
+ }
85
84
}
86
85
}
87
86
}
0 commit comments