Internal change
PiperOrigin-RevId: 492253867
This commit is contained in:
		
							parent
							
								
									02aa162c9e
								
							
						
					
					
						commit
						1e2cb2b359
					
				|  | @ -354,7 +354,9 @@ NodeReadiness SyncSet::GetReadiness(Timestamp* min_stream_timestamp) { | |||
|     } | ||||
|   } | ||||
|   *min_stream_timestamp = std::min(min_packet, min_bound); | ||||
|   if (*min_stream_timestamp == Timestamp::Done()) { | ||||
|   if (*min_stream_timestamp >= Timestamp::OneOverPostStream()) { | ||||
|     // Either OneOverPostStream or Done indicates no more packets.
 | ||||
|     *min_stream_timestamp = Timestamp::Done(); | ||||
|     last_processed_ts_ = Timestamp::Done().PreviousAllowedInStream(); | ||||
|     return NodeReadiness::kReadyForClose; | ||||
|   } | ||||
|  |  | |||
|  | @ -230,6 +230,43 @@ TEST_F(ImmediateInputStreamHandlerTest, StreamDoneReady) { | |||
|   input_stream_handler_->ClearCurrentInputs(cc_); | ||||
| } | ||||
| 
 | ||||
| // This test checks that the state is ReadyForClose after all streams reach
 | ||||
| // Timestamp::Max.
 | ||||
| TEST_F(ImmediateInputStreamHandlerTest, ReadyForCloseAfterTimestampMax) { | ||||
|   Timestamp min_stream_timestamp; | ||||
|   std::list<Packet> packets; | ||||
| 
 | ||||
|   // One packet arrives, ready for process.
 | ||||
|   packets.push_back(Adopt(new std::string("packet 1")).At(Timestamp(10))); | ||||
|   input_stream_handler_->AddPackets(name_to_id_["input_a"], packets); | ||||
|   EXPECT_TRUE(input_stream_handler_->ScheduleInvocations( | ||||
|       /*max_allowance=*/1, &min_stream_timestamp)); | ||||
|   EXPECT_EQ(Timestamp(10), cc_->InputTimestamp()); | ||||
|   input_stream_handler_->FinalizeInputSet(cc_->InputTimestamp(), | ||||
|                                           &cc_->Inputs()); | ||||
|   input_stream_handler_->ClearCurrentInputs(cc_); | ||||
| 
 | ||||
|   // No packets arrive, not ready.
 | ||||
|   EXPECT_FALSE(input_stream_handler_->ScheduleInvocations( | ||||
|       /*max_allowance=*/1, &min_stream_timestamp)); | ||||
|   EXPECT_EQ(Timestamp::Unset(), cc_->InputTimestamp()); | ||||
| 
 | ||||
|   // Timestamp::Max arrives, ready for close.
 | ||||
|   input_stream_handler_->SetNextTimestampBound( | ||||
|       name_to_id_["input_a"], Timestamp::Max().NextAllowedInStream()); | ||||
|   input_stream_handler_->SetNextTimestampBound( | ||||
|       name_to_id_["input_b"], Timestamp::Max().NextAllowedInStream()); | ||||
|   input_stream_handler_->SetNextTimestampBound( | ||||
|       name_to_id_["input_c"], Timestamp::Max().NextAllowedInStream()); | ||||
| 
 | ||||
|   EXPECT_TRUE(input_stream_handler_->ScheduleInvocations( | ||||
|       /*max_allowance=*/1, &min_stream_timestamp)); | ||||
|   EXPECT_EQ(Timestamp::Done(), cc_->InputTimestamp()); | ||||
|   input_stream_handler_->FinalizeInputSet(cc_->InputTimestamp(), | ||||
|                                           &cc_->Inputs()); | ||||
|   input_stream_handler_->ClearCurrentInputs(cc_); | ||||
| } | ||||
| 
 | ||||
| // This test checks that when any stream is done, the state is ready to close.
 | ||||
| TEST_F(ImmediateInputStreamHandlerTest, ReadyForClose) { | ||||
|   Timestamp min_stream_timestamp; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user