66 * LICENSE file in the root directory of this source tree.
77 */
88
9- #include < executorch/devtools/etdump/data_sink .h>
9+ #include < executorch/devtools/etdump/buffer_data_sink .h>
1010#include < executorch/runtime/core/exec_aten/testing_util/tensor_factory.h>
1111#include < executorch/runtime/core/span.h>
1212#include < executorch/runtime/platform/runtime.h>
@@ -19,15 +19,15 @@ using executorch::aten::Tensor;
1919using ::executorch::runtime::Span;
2020using torch::executor::testing::TensorFactory;
2121
22- class DataSinkTest : public ::testing::Test {
22+ class BufferDataSinkTest : public ::testing::Test {
2323 protected:
2424 void SetUp () override {
2525 torch::executor::runtime_init ();
2626 // Allocate a small buffer for testing
2727 buffer_size_ = 128 ; // Small size for testing
2828 buffer_ptr_ = malloc (buffer_size_);
2929 buffer_ = Span<uint8_t >(static_cast <uint8_t *>(buffer_ptr_), buffer_size_);
30- data_sink_ = std::make_unique<executorch::etdump::DataSink >(buffer_);
30+ data_sink_ = std::make_unique<executorch::etdump::BufferDataSink >(buffer_);
3131 }
3232
3333 void TearDown () override {
@@ -37,18 +37,35 @@ class DataSinkTest : public ::testing::Test {
3737 size_t buffer_size_;
3838 void * buffer_ptr_;
3939 Span<uint8_t > buffer_;
40- std::unique_ptr<executorch::etdump::DataSink > data_sink_;
40+ std::unique_ptr<executorch::etdump::BufferDataSink > data_sink_;
4141};
4242
43- TEST_F (DataSinkTest, StorageSizeCheck) {
44- EXPECT_EQ (data_sink_->get_storage_size (), buffer_size_);
43+ TEST_F (BufferDataSinkTest, StorageSizeCheck) {
44+ Result<size_t > ret = data_sink_->get_storage_size ();
45+ if (!ret.ok ()) {
46+ ET_LOG (
47+ Info,
48+ " Get storage size failed with 0x%" PRIx32,
49+ (unsigned int )ret.error ());
50+ }
51+ size_t storage_size = ret.get ();
52+ EXPECT_EQ (storage_size, buffer_size_);
4553}
4654
47- TEST_F (DataSinkTest , WriteOneTensorAndCheckData) {
55+ TEST_F (BufferDataSinkTest , WriteOneTensorAndCheckData) {
4856 TensorFactory<ScalarType::Float> tf;
4957 Tensor tensor = tf.make ({1 , 4 }, {1.0 , 2.0 , 3.0 , 4.0 });
5058
51- size_t offset = data_sink_->write_tensor (tensor);
59+ Result<size_t > ret = data_sink_->write_tensor (tensor);
60+ if (!ret.ok ()) {
61+ ET_LOG (
62+ Info,
63+ " Write tensor into debug storage failed with 0x%" PRIx32,
64+ (unsigned int )ret.error ());
65+ }
66+
67+ size_t offset = ret.get ();
68+
5269 EXPECT_NE (offset, static_cast <size_t >(-1 ));
5370
5471 // Check that the data in the buffer matches the tensor data
@@ -59,14 +76,21 @@ TEST_F(DataSinkTest, WriteOneTensorAndCheckData) {
5976 }
6077}
6178
62- TEST_F (DataSinkTest , WriteMultiTensorsAndCheckData) {
79+ TEST_F (BufferDataSinkTest , WriteMultiTensorsAndCheckData) {
6380 TensorFactory<ScalarType::Float> tf;
6481 std::vector<Tensor> tensors = {
6582 tf.make ({1 , 4 }, {1.0 , 2.0 , 3.0 , 4.0 }),
6683 tf.make ({1 , 4 }, {5.0 , 6.0 , 7.0 , 8.0 })};
67- size_t offset = 0 ;
6884 for (const auto & tensor : tensors) {
69- offset = data_sink_->write_tensor (tensor);
85+ Result<size_t > ret = data_sink_->write_tensor (tensor);
86+ if (!ret.ok ()) {
87+ ET_LOG (
88+ Info,
89+ " Write tensor into debug storage failed with 0x%" PRIx32,
90+ (unsigned int )ret.error ());
91+ }
92+
93+ size_t offset = ret.get ();
7094 EXPECT_NE (offset, static_cast <size_t >(-1 ));
7195 // Check that the data in the buffer matches the tensor data
7296 const float * buffer_data =
@@ -77,17 +101,25 @@ TEST_F(DataSinkTest, WriteMultiTensorsAndCheckData) {
77101 }
78102}
79103
80- TEST_F (DataSinkTest , PointerAlignmentCheck) {
104+ TEST_F (BufferDataSinkTest , PointerAlignmentCheck) {
81105 TensorFactory<ScalarType::Float> tf;
82106 Tensor tensor = tf.make ({1 , 4 }, {1.0 , 2.0 , 3.0 , 4.0 });
83- size_t offset = data_sink_->write_tensor (tensor);
107+ Result<size_t > ret = data_sink_->write_tensor (tensor);
108+ if (!ret.ok ()) {
109+ ET_LOG (
110+ Info,
111+ " Write tensor into debug storage failed with 0x%" PRIx32,
112+ (unsigned int )ret.error ());
113+ }
114+
115+ size_t offset = ret.get ();
84116 EXPECT_NE (offset, static_cast <size_t >(-1 ));
85117 // Check that the offset pointer is 64-byte aligned
86118 const uint8_t * offset_ptr = buffer_.data () + offset;
87119 EXPECT_EQ (reinterpret_cast <uintptr_t >(offset_ptr) % 64 , 0 );
88120}
89121
90- TEST_F (DataSinkTest , WriteUntilOverflow) {
122+ TEST_F (BufferDataSinkTest , WriteUntilOverflow) {
91123 TensorFactory<ScalarType::Float> tf;
92124 Tensor tensor = tf.zeros ({1 , 8 }); // Large tensor to fill the buffer
93125
0 commit comments