| 28 | : public ::testing::TestWithParam<std::tuple<int64, double>> {}; |
| 29 | |
| 30 | TEST_P(AsyncInterleaveManyTest, Model) { |
| 31 | const int64 parallelism = std::get<0>(GetParam()); |
| 32 | const double input_time = std::get<1>(GetParam()); |
| 33 | std::shared_ptr<Node> async_interleave_many = |
| 34 | model::MakeAsyncInterleaveManyNode( |
| 35 | {0, "async_interleave_many", nullptr}, |
| 36 | {model::MakeParameter( |
| 37 | "parallelism", |
| 38 | std::make_shared<SharedState>(parallelism, nullptr, nullptr), 1, |
| 39 | parallelism)}); |
| 40 | std::shared_ptr<Node> meta_source = |
| 41 | model::MakeSourceNode({1, "meta_source", async_interleave_many}); |
| 42 | async_interleave_many->add_input(meta_source); |
| 43 | auto cleanup_meta = gtl::MakeCleanup([async_interleave_many, meta_source]() { |
| 44 | async_interleave_many->remove_input(meta_source); |
| 45 | }); |
| 46 | std::shared_ptr<Node> source1 = |
| 47 | model::MakeSourceNode({1, "source1", async_interleave_many}); |
| 48 | async_interleave_many->add_input(source1); |
| 49 | auto cleanup1 = gtl::MakeCleanup([async_interleave_many, source1]() { |
| 50 | async_interleave_many->remove_input(source1); |
| 51 | }); |
| 52 | std::shared_ptr<Node> source2 = |
| 53 | model::MakeSourceNode({2, "source2", async_interleave_many}); |
| 54 | async_interleave_many->add_input(source2); |
| 55 | auto cleanup2 = gtl::MakeCleanup([async_interleave_many, source2]() { |
| 56 | async_interleave_many->remove_input(source2); |
| 57 | }); |
| 58 | std::vector<double> input_times(1, input_time); |
| 59 | EXPECT_EQ(async_interleave_many->TotalBufferedBytes(), 0); |
| 60 | EXPECT_EQ(async_interleave_many->TotalMaximumBufferedBytes(), 0); |
| 61 | async_interleave_many->record_buffer_event(110, 10); |
| 62 | EXPECT_EQ(async_interleave_many->TotalBufferedBytes(), 110); |
| 63 | EXPECT_EQ(async_interleave_many->TotalMaximumBufferedBytes(), |
| 64 | 110 * parallelism / 10); |
| 65 | async_interleave_many->add_processing_time(100); |
| 66 | EXPECT_EQ(async_interleave_many->processing_time(), 100); |
| 67 | EXPECT_EQ( |
| 68 | async_interleave_many->TotalProcessingTime(/*processing_times=*/nullptr), |
| 69 | 0); |
| 70 | EXPECT_EQ(async_interleave_many->OutputTime(&input_times, nullptr), 0); |
| 71 | async_interleave_many->record_element(); |
| 72 | EXPECT_EQ(async_interleave_many->num_elements(), 1); |
| 73 | EXPECT_EQ( |
| 74 | async_interleave_many->TotalProcessingTime(/*processing_times=*/nullptr), |
| 75 | 100); |
| 76 | EXPECT_LE(async_interleave_many->OutputTime(&input_times, nullptr), 100); |
| 77 | EXPECT_GE(async_interleave_many->OutputTime(&input_times, nullptr), 0); |
| 78 | source1->add_processing_time(200); |
| 79 | source2->add_processing_time(300); |
| 80 | EXPECT_EQ( |
| 81 | async_interleave_many->TotalProcessingTime(/*processing_times=*/nullptr), |
| 82 | 100); |
| 83 | EXPECT_LE(async_interleave_many->OutputTime(&input_times, nullptr), 100); |
| 84 | EXPECT_GE(async_interleave_many->OutputTime(&input_times, nullptr), 0); |
| 85 | source1->record_element(); |
| 86 | source2->record_element(); |
| 87 | EXPECT_EQ( |
nothing calls this directly
no test coverage detected