Fix flaky LastCallStartedTime

pull/22655/head
Esun Kim 5 years ago
parent d86acba1da
commit 8c64e96458
  1. 26
      test/core/channel/channelz_test.cc

@ -48,11 +48,11 @@ namespace testing {
class CallCountingHelperPeer {
public:
explicit CallCountingHelperPeer(CallCountingHelper* node) : node_(node) {}
grpc_millis last_call_started_millis() const {
gpr_timespec last_call_started_time() const {
CallCountingHelper::CounterData data;
node_->CollectData(&data);
gpr_timespec ts = gpr_cycle_counter_to_time(data.last_call_started_cycle);
return grpc_timespec_to_millis_round_up(ts);
return gpr_cycle_counter_to_time(data.last_call_started_cycle);
}
private:
@ -243,9 +243,9 @@ void ValidateServer(ServerNode* server, const ValidateChannelDataArgs& args) {
gpr_free(core_api_json_str);
}
grpc_millis GetLastCallStartedMillis(CallCountingHelper* channel) {
gpr_timespec GetLastCallStartedTime(CallCountingHelper* channel) {
CallCountingHelperPeer peer(channel);
return peer.last_call_started_millis();
return peer.last_call_started_time();
}
void ChannelzSleep(int64_t sleep_us) {
@ -301,28 +301,28 @@ TEST_P(ChannelzChannelTest, BasicChannelAPIFunctionality) {
ValidateChannel(channelz_channel, {3, 3, 3});
}
TEST_P(ChannelzChannelTest, LastCallStartedMillis) {
TEST_P(ChannelzChannelTest, LastCallStartedTime) {
grpc_core::ExecCtx exec_ctx;
CallCountingHelper counter;
// start a call to set the last call started timestamp
counter.RecordCallStarted();
grpc_millis millis1 = GetLastCallStartedMillis(&counter);
gpr_timespec time1 = GetLastCallStartedTime(&counter);
// time gone by should not affect the timestamp
ChannelzSleep(100);
grpc_millis millis2 = GetLastCallStartedMillis(&counter);
EXPECT_EQ(millis1, millis2);
gpr_timespec time2 = GetLastCallStartedTime(&counter);
EXPECT_EQ(gpr_time_cmp(time1, time2), 0);
// calls succeeded or failed should not affect the timestamp
ChannelzSleep(100);
counter.RecordCallFailed();
counter.RecordCallSucceeded();
grpc_millis millis3 = GetLastCallStartedMillis(&counter);
EXPECT_EQ(millis1, millis3);
gpr_timespec time3 = GetLastCallStartedTime(&counter);
EXPECT_EQ(gpr_time_cmp(time1, time3), 0);
// another call started should affect the timestamp
// sleep for extra long to avoid flakes (since we cache Now())
ChannelzSleep(5000);
counter.RecordCallStarted();
grpc_millis millis4 = GetLastCallStartedMillis(&counter);
EXPECT_NE(millis1, millis4);
gpr_timespec time4 = GetLastCallStartedTime(&counter);
EXPECT_NE(gpr_time_cmp(time1, time4), 0);
}
class ChannelzRegistryBasedTest : public ::testing::TestWithParam<size_t> {

Loading…
Cancel
Save