Skip to content

Commit

Permalink
test case
Browse files Browse the repository at this point in the history
  • Loading branch information
Colin Schultz committed Jan 28, 2025
1 parent c788d27 commit 87216a6
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions cpp/src/arrow/record_batch_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,13 @@
#include <gmock/gmock.h>
#include <gtest/gtest.h>

#include <atomic>
#include <cstddef>
#include <cstdint>
#include <memory>
#include <string>
#include <thread>
#include <utility>
#include <vector>

#include "arrow/array/array_base.h"
Expand All @@ -38,6 +43,7 @@
#include "arrow/testing/gtest_util.h"
#include "arrow/testing/random.h"
#include "arrow/type.h"
#include "arrow/type_fwd.h"
#include "arrow/util/float16.h"
#include "arrow/util/iterator.h"
#include "arrow/util/key_value_metadata.h"
Expand Down Expand Up @@ -393,6 +399,27 @@ TEST_F(TestRecordBatch, RemoveColumnEmpty) {
AssertBatchesEqual(*added, *batch1);
}

TEST_F(TestRecordBatch, ColumnsThreadSafety) {
const int length = 10;

random::RandomArrayGenerator gen(42);
std::shared_ptr<ArrayData> array_data = gen.ArrayOf(utf8(), length)->data();
auto schema = ::arrow::schema({field("f1", utf8())});
auto record_batch = RecordBatch::Make(schema, length, {array_data});
std::atomic_bool start_flag{false};
std::thread t([record_batch, &start_flag]() {
start_flag.store(true);
auto columns = record_batch->columns();
ASSERT_EQ(columns.size(), 1);
});
// Wait for thread startup
while (!start_flag.load()) {
};
auto columns = record_batch->columns();
ASSERT_EQ(columns.size(), 1);
t.join();
}

TEST_F(TestRecordBatch, ToFromEmptyStructArray) {
auto batch1 =
RecordBatch::Make(::arrow::schema({}), 10, std::vector<std::shared_ptr<Array>>{});
Expand Down

0 comments on commit 87216a6

Please sign in to comment.