@@ -17,9 +17,11 @@ class ChunkBatchTest : public ::testing::Test {
17
17
protected:
18
18
void SetUp () override {
19
19
br = std::make_unique<BufferResource>(cudf::get_current_device_resource_ref ());
20
+ stream = cudf::get_default_stream ();
20
21
}
21
22
22
23
std::unique_ptr<BufferResource> br;
24
+ rmm::cuda_stream_view stream;
23
25
};
24
26
25
27
TEST_F (ChunkBatchTest, FromFinishedPartition) {
@@ -44,110 +46,52 @@ TEST_F(ChunkBatchTest, FromFinishedPartition) {
44
46
auto chunk2 = ChunkBatch::from_metadata_message (chunk.release_metadata_buffer ());
45
47
test_chunk (chunk2);
46
48
47
- auto chunk3 = chunk2.get_data (chunk_id, 0 , cudf::get_default_stream () );
49
+ auto chunk3 = chunk2.get_data (chunk_id, 0 , stream );
48
50
test_chunk (chunk3);
51
+
52
+ EXPECT_THROW (chunk3.get_data (chunk_id, 1 , stream), std::out_of_range);
49
53
}
50
54
51
- // TEST_F(ChunkBatchTest, FromPackedData) {
52
- // ChunkID chunk_id = 123;
53
- // PartID part_id = 456;
54
-
55
- // // Create test metadata
56
- // auto metadata = std::make_unique<std::vector<uint8_t>>(4);
57
- // metadata->at(0) = 1;
58
- // metadata->at(1) = 2;
59
- // metadata->at(2) = 3;
60
- // metadata->at(3) = 4;
61
-
62
- // // Create test GPU data
63
- // auto gpu_data = br->allocate(MemoryType::DEVICE, 4);
64
- // uint8_t host_data[4] = {5, 6, 7, 8};
65
- // CUDA_TRY(cudaMemcpy(gpu_data->data, host_data, 4, cudaMemcpyHostToDevice));
66
-
67
- // PackedData packed_data{std::move(metadata), std::move(gpu_data)};
68
- // auto chunk =
69
- // ChunkBatch::from_packed_data(chunk_id, part_id, std::move(packed_data),
70
- // br.get());
71
-
72
- // EXPECT_EQ(chunk.chunk_id(), chunk_id);
73
- // EXPECT_EQ(chunk.n_messages(), 1);
74
- // EXPECT_EQ(chunk.part_id(0), part_id);
75
- // EXPECT_EQ(chunk.expected_num_chunks(0), 0);
76
- // EXPECT_FALSE(chunk.is_control_message(0));
77
- // EXPECT_EQ(chunk.metadata_size(0), 4);
78
- // EXPECT_EQ(chunk.data_size(0), 4);
79
- // }
80
-
81
- // TEST_F(ChunkBatchTest, ValidateMetadataFormat) {
82
- // // Test valid metadata format
83
- // auto valid_chunk = ChunkBatch::from_finished_partition(123, 456, 789);
84
- // EXPECT_TRUE(ChunkBatch::validate_metadata_format(*valid_chunk.release_metadata_buffer(
85
- // )));
86
-
87
- // // Test invalid metadata format (too small)
88
- // std::vector<uint8_t> too_small(4);
89
- // EXPECT_FALSE(ChunkBatch::validate_metadata_format(too_small));
90
-
91
- // // Test invalid metadata format (zero messages)
92
- // std::vector<uint8_t> zero_messages(16);
93
- // *reinterpret_cast<ChunkID*>(zero_messages.data()) = 123;
94
- // *reinterpret_cast<size_t*>(zero_messages.data() + sizeof(ChunkID)) = 0;
95
- // EXPECT_FALSE(ChunkBatch::validate_metadata_format(zero_messages));
96
- // }
97
-
98
- // TEST_F(ChunkBatchTest, GetData) {
99
- // ChunkID chunk_id = 123;
100
- // PartID part_id = 456;
101
-
102
- // // Create test metadata
103
- // auto metadata = std::make_unique<std::vector<uint8_t>>(4);
104
- // metadata->at(0) = 1;
105
- // metadata->at(1) = 2;
106
- // metadata->at(2) = 3;
107
- // metadata->at(3) = 4;
108
-
109
- // // Create test GPU data
110
- // auto gpu_data = br->allocate(MemoryType::DEVICE, 4);
111
- // uint8_t host_data[4] = {5, 6, 7, 8};
112
- // CUDA_TRY(cudaMemcpy(gpu_data->data, host_data, 4, cudaMemcpyHostToDevice));
113
-
114
- // PackedData packed_data{std::move(metadata), std::move(gpu_data)};
115
- // auto chunk =
116
- // ChunkBatch::from_packed_data(chunk_id, part_id, std::move(packed_data),
117
- // br.get());
118
-
119
- // // Test getting data from a data message
120
- // auto new_chunk = chunk.get_data(789, 0, cudf::get_default_stream());
121
- // EXPECT_EQ(new_chunk.chunk_id(), 789);
122
- // EXPECT_EQ(new_chunk.n_messages(), 1);
123
- // EXPECT_EQ(new_chunk.part_id(0), part_id);
124
- // EXPECT_EQ(new_chunk.metadata_size(0), 4);
125
- // EXPECT_EQ(new_chunk.data_size(0), 4);
126
-
127
- // // Test getting data from a control message
128
- // auto control_chunk = ChunkBatch::from_finished_partition(123, 456, 789);
129
- // auto new_control_chunk = control_chunk.get_data(999, 0,
130
- // cudf::get_default_stream()); EXPECT_EQ(new_control_chunk.chunk_id(), 999);
131
- // EXPECT_EQ(new_control_chunk.n_messages(), 1);
132
- // EXPECT_EQ(new_control_chunk.part_id(0), 456);
133
- // EXPECT_EQ(new_control_chunk.expected_num_chunks(0), 789);
134
- // EXPECT_TRUE(new_control_chunk.is_control_message(0));
135
- // }
136
-
137
- // TEST_F(ChunkBatchTest, FromMetadataMessage) {
138
- // // Create a chunk and convert it to metadata message
139
- // auto original_chunk = ChunkBatch::from_finished_partition(123, 456, 789);
140
- // auto metadata_msg = original_chunk.release_metadata_buffer();
141
-
142
- // // Create new chunk from metadata message
143
- // auto new_chunk = ChunkBatch::from_metadata_message(std::move(metadata_msg));
144
-
145
- // EXPECT_EQ(new_chunk.chunk_id(), 123);
146
- // EXPECT_EQ(new_chunk.n_messages(), 1);
147
- // EXPECT_EQ(new_chunk.part_id(0), 456);
148
- // EXPECT_EQ(new_chunk.expected_num_chunks(0), 789);
149
- // EXPECT_TRUE(new_chunk.is_control_message(0));
150
- // }
55
+ TEST_F (ChunkBatchTest, FromPackedData) {
56
+ ChunkID chunk_id = 123 ;
57
+ PartID part_id = 456 ;
58
+
59
+ // Create test metadata
60
+ auto metadata =
61
+ std::make_unique<std::vector<uint8_t >>(std::vector<uint8_t >{1 , 2 , 3 , 4 });
62
+
63
+ // Create test GPU data
64
+ auto data = std::make_unique<rmm::device_buffer>(4 , cudf::get_default_stream ());
65
+ std::vector<uint8_t > host_data{5 , 6 , 7 , 8 };
66
+ RAPIDSMPF_CUDA_TRY (
67
+ cudaMemcpy (data->data (), host_data.data (), 4 , cudaMemcpyHostToDevice)
68
+ );
69
+
70
+ PackedData packed_data{
71
+ std::make_unique<std::vector<uint8_t >>(*metadata), std::move (data)
72
+ };
73
+
74
+ auto test_chunk = [&](ChunkBatch& chunk) {
75
+ EXPECT_EQ (chunk.chunk_id (), chunk_id);
76
+ EXPECT_EQ (chunk.n_messages (), 1 );
77
+ EXPECT_EQ (chunk.part_id (0 ), part_id);
78
+ EXPECT_EQ (chunk.expected_num_chunks (0 ), 0 );
79
+ EXPECT_FALSE (chunk.is_control_message (0 ));
80
+ EXPECT_EQ (chunk.metadata_size (0 ), 4 );
81
+ EXPECT_EQ (chunk.data_size (0 ), 4 );
82
+ };
83
+ auto chunk = ChunkBatch::from_packed_data (
84
+ chunk_id, part_id, std::move (packed_data), stream, br.get ()
85
+ );
86
+ test_chunk (chunk);
87
+
88
+ auto chunk2 = ChunkBatch::from_metadata_message (chunk.release_metadata_buffer ());
89
+ chunk2.set_data_buffer (chunk.release_data_buffer ());
90
+ test_chunk (chunk2);
91
+
92
+ auto chunk3 = chunk2.get_data (chunk_id, 0 , stream);
93
+ test_chunk (chunk3);
94
+ }
151
95
152
96
} // namespace test
153
97
} // namespace rapidsmpf::shuffler::detail
0 commit comments