Line data Source code
1 : #ifndef BIGQUERY_EMULATOR_BACKEND_STORAGE_DUCKDB_DUCKDB_STORAGE_TEST_FIXTURE_H_
2 : #define BIGQUERY_EMULATOR_BACKEND_STORAGE_DUCKDB_DUCKDB_STORAGE_TEST_FIXTURE_H_
3 :
4 : #include <cstdlib>
5 : #include <filesystem>
6 : #include <random>
7 : #include <string>
8 :
9 : #include "absl/strings/str_cat.h"
10 : #include "backend/schema/schema.h"
11 : #include "backend/storage/storage.h"
12 : #include "gtest/gtest.h"
13 :
14 : namespace bigquery_emulator {
15 : namespace backend {
16 : namespace storage {
17 : namespace duckdb {
18 :
19 : class DuckDBStorageTest : public ::testing::Test {
20 : protected:
21 35 : void SetUp() override {
22 35 : const char* tmpdir_env = std::getenv("TMPDIR");
23 35 : const std::string tmpdir = tmpdir_env != nullptr ? tmpdir_env : "/tmp";
24 35 : std::random_device rd;
25 35 : std::seed_seq seed{rd(), rd()};
26 35 : std::mt19937_64 rng(seed);
27 35 : data_dir_ = std::filesystem::path(tmpdir) /
28 35 : absl::StrCat("bqemu-duckdb-storage-test-", rng());
29 35 : std::error_code ec;
30 35 : std::filesystem::remove_all(data_dir_, ec);
31 35 : }
32 :
33 35 : void TearDown() override {
34 35 : std::error_code ec;
35 35 : std::filesystem::remove_all(data_dir_, ec);
36 35 : }
37 :
38 : std::filesystem::path data_dir_{};
39 : };
40 :
41 : schema::TableSchema PeopleSchema();
42 :
43 : Row MakePerson(int64_t id, absl::string_view name);
44 :
45 : } // namespace duckdb
46 : } // namespace storage
47 : } // namespace backend
48 : } // namespace bigquery_emulator
49 :
50 : #endif
|