Skip to content

Commit 4174f48

Browse files
committed
Refactor and add ET_EXPECT_DEATH tests to LogDelegateIntermediateOutput
1 parent 2aa7748 commit 4174f48

File tree

1 file changed

+46
-19
lines changed

1 file changed

+46
-19
lines changed

devtools/etdump/tests/etdump_test.cpp

Lines changed: 46 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -497,36 +497,60 @@ TEST_F(ProfilerETDumpTest, VerifyData) {
497497
}
498498
}
499499

500+
// Helper to assert that logging without a data sink triggers ET_EXPECT_DEATH
501+
static void et_expect_death_log_delegate(
502+
ETDumpGen* gen,
503+
TensorFactory<ScalarType::Float>& tf) {
504+
ET_EXPECT_DEATH(
505+
gen->log_intermediate_output_delegate(
506+
"test_event_tensor",
507+
static_cast<torch::executor::DebugHandle>(-1),
508+
tf.ones({3, 2})),
509+
"Must set data sink before writing tensor-like data");
510+
}
511+
500512
TEST_F(ProfilerETDumpTest, LogDelegateIntermediateOutput) {
513+
const size_t debug_buf_size = 2048;
514+
const size_t etdump_buf_size = 512 * 1024;
515+
501516
for (size_t i = 0; i < 2; i++) {
502517
for (size_t j = 0; j < 3; j++) {
503-
void* ptr = malloc(2048);
504-
Span<uint8_t> buffer((uint8_t*)ptr, 2048);
518+
uint8_t* buf = nullptr;
519+
void* ptr = malloc(debug_buf_size);
520+
Span<uint8_t> buffer((uint8_t*)ptr, debug_buf_size);
505521

506-
auto buffer_data_sink = BufferDataSink::create(ptr, 2048);
522+
auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
507523
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());
508524

509525
etdump_gen[i]->create_event_block("test_block");
510526
TensorFactory<ScalarType::Float> tf;
511527

512-
// using span to record debug data
513528
if (j == 0) {
514-
// TODO(gasoonjia): add similar ET_EXPECT_DEATH on BufferDataSink branch
515-
ET_EXPECT_DEATH(
516-
etdump_gen[i]->log_intermediate_output_delegate(
517-
"test_event_tensor",
518-
static_cast<torch::executor::DebugHandle>(-1),
519-
tf.ones({3, 2})),
520-
"Must set data sink before writing tensor-like data");
529+
// Use span to record debug data
530+
et_expect_death_log_delegate(etdump_gen[i], tf);
521531
etdump_gen[i]->set_debug_buffer(buffer);
522-
}
523-
// using buffer data sink to record debug data
524-
else if (j == 1) {
525-
etdump_gen[i]->set_data_sink(&buffer_data_sink.get());
526-
}
527-
// using file data sink to record debug data
528-
else {
529-
etdump_gen[i]->set_data_sink(&file_data_sink.get());
532+
} else {
533+
buf = (uint8_t*)malloc(etdump_buf_size * sizeof(uint8_t));
534+
535+
// Wrap buffer in span for ETDumGen constructor
536+
Span<uint8_t> span_buf(buf, etdump_buf_size);
537+
538+
// Reset ETDumpGen to correctly trigger ET_EXPECT_DEATH
539+
delete etdump_gen[i];
540+
541+
// Recreate ETDumpGen; use span buffer only for etdump_gen[1]
542+
etdump_gen[i] = (i == 0) ? new ETDumpGen() : new ETDumpGen(span_buf);
543+
544+
etdump_gen[i]->create_event_block("test_block");
545+
et_expect_death_log_delegate(etdump_gen[i], tf);
546+
547+
if (j == 1) {
548+
// Use buffer data sink to record debug data
549+
etdump_gen[i]->set_data_sink(&buffer_data_sink.get());
550+
} else {
551+
// Use file data sink to record debug data
552+
etdump_gen[i]->set_data_sink(&file_data_sink.get());
553+
}
530554
}
531555

532556
// Log a tensor
@@ -568,6 +592,9 @@ TEST_F(ProfilerETDumpTest, LogDelegateIntermediateOutput) {
568592
if (!etdump_gen[i]->is_static_etdump()) {
569593
free(result.buf);
570594
}
595+
if (buf) {
596+
free(buf);
597+
}
571598
}
572599
}
573600
}

0 commit comments

Comments
 (0)