| 162 | |
| 163 | template <typename element_t> |
| 164 | inline std::pair<daliDeleter_t, std::unique_ptr<TestDeleterCtx>> |
| 165 | MakeTestDeleter(element_t *expected_data) { |
| 166 | auto ctx = std::unique_ptr<TestDeleterCtx>(new TestDeleterCtx{ expected_data, 0, 0 }); |
| 167 | daliDeleter_t deleter = {}; |
| 168 | deleter.deleter_ctx = ctx.get(); |
| 169 | deleter.delete_buffer = [](void *vctx, void *data, const cudaStream_t *stream) { |
| 170 | ASSERT_NE(data, nullptr); |
| 171 | auto *ctx = static_cast<TestDeleterCtx *>(vctx); |
| 172 | EXPECT_EQ(ctx->context_delete_count, 0); |
| 173 | EXPECT_EQ(ctx->buffer_delete_count, 0); |
| 174 | EXPECT_EQ(data, ctx->expected_data); |
| 175 | ctx->buffer_delete_count++; |
| 176 | // do not actually delete the data |
| 177 | }; |
| 178 | deleter.destroy_context = [](void *vctx) { |
| 179 | auto *ctx = static_cast<TestDeleterCtx *>(vctx); |
| 180 | EXPECT_EQ(ctx->context_delete_count, 0); |
| 181 | EXPECT_EQ(ctx->buffer_delete_count, 1); |
| 182 | ctx->context_delete_count++; |
| 183 | }; |
| 184 | return { deleter, std::move(ctx) }; |
| 185 | } |
| 186 | |
| 187 | TEST(CAPI2_TensorListTest, AttachBuffer) { |
| 188 | daliBufferPlacement_t placement{}; |