mirror of
https://github.com/hanzo-ds/cpp.git
synced 2026-10-30 20:31:26 +00:00
Pure rename applied on top of upstream tag v2.6.2 (8d2415d6), not HEAD.
The fork was cut at 737145d = v2.6.2-57, which still declared version 2.6.2
in version.h; renaming there would have shipped 57 unreleased commits wearing
a 2.6.2 label. Reset to the tag first so this commit changes names only.
clickhouse/ -> datastore/ (public include root)
namespace clickhouse -> namespace datastore
CLICKHOUSE_CPP_VERSION -> DATASTORE_CPP_VERSION
clickhouse-cpp-lib/-ut -> datastore-cpp-lib/-ut (CMake, Bazel)
CH_MAP_BOOL_TO_UINT8 -> DS_MAP_BOOL_TO_UINT8
CLICKHOUSE_* -> DATASTORE_* (test env vars)
doc links -> docs.hanzo.ai/datastore
This client speaks the NATIVE binary protocol only - there is no HTTP path
and no X-ClickHouse-* header anywhere in it, so the header rename that the
HTTP clients required does not apply and nothing here was broken.
The one string that reaches the wire is CLIENT_NAME, sent by both SendHello
and SendQuery's ClientInfo from a single macro, and it lands in
system.query_log.client_name. Both sites still read the one macro, so they
stay consistent and the server's Hello/Query consistency check is satisfied.
Old rows keep the old name; that is a reporting discontinuity, not a
migration, since nothing keys on it.
CI is repointed at our own server: ghcr.io/hanzoai/datastore:26.2.3.2, the
image production runs. Its entrypoint honours DATASTORE_SKIP_USER_SETUP, not
the CLICKHOUSE_ spelling the compose file used, and its config lives in
/etc/hanzo-datastore-server. ci/docker-compose/config.xml is now layered in
as a config.d drop-in so the image keeps its own white-labelling. That file
and users.xml deliberately keep a <clickhouse> root: it must match the roots
of the drop-ins the image ships, and a mismatch fails silently - the server
logs "Merging bypassed" and starts with every drop-in discarded.
The remote-TLS suites used to default to the third-party host
play.clickhouse.com. They now read DATASTORE_SECURE*_HOST and skip when it is
unset rather than point at a host we do not run.
Dropped as upstream infrastructure with no meaning here: AI_POLICY.md
(upstream's policy about their codebase), .travis.yml (dead CI referencing a
third-party apt repo), cross-repo-bug-relay.yml (relays our issues into an
upstream triage repo). LICENSE keeps its copyright notice, as Apache-2.0
requires.
Verified: cmake configure + 115-target build clean; the full suite is green
against ghcr.io/hanzoai/datastore:26.2.3.2 (894 passed, 0 failed); the
pristine v2.6.2 build run against that same server passes the identical set,
and both logged the same 3914 queries under their respective client names.
126 lines
4.5 KiB
Python
126 lines
4.5 KiB
Python
load("@rules_cc//cc:cc_test.bzl", "cc_test")
|
|
|
|
# The googletest suite in this directory is split into two targets:
|
|
#
|
|
# //ut:unit_tests — hermetic; no external server. Runs in the sandbox
|
|
# under `bazel test`, part of every CI matrix job.
|
|
# //ut:e2e_tests — needs a live Datastore server on $DATASTORE_HOST
|
|
# (default localhost:9000). Tagged `manual`, so it is
|
|
# excluded from `bazel test //...` and must be run
|
|
# explicitly: `bazel run //ut:e2e_tests` (or
|
|
# `bazel test //ut:e2e_tests`). CI starts a server via
|
|
# docker-compose first, mirroring the CMake build's
|
|
# Linux workflow.
|
|
#
|
|
# ssl_ut.cpp is in neither target yet: it connects to a secure endpoint given
|
|
# by $DATASTORE_SECURE_HOST / $DATASTORE_SECURE2_HOST with OS-specific CA paths,
|
|
# which the local docker server doesn't provide. Those suites skip themselves
|
|
# when the variables are unset. It stays CMake-only for now.
|
|
|
|
# Compile flags shared by both test binaries. -I. lets tests include
|
|
# support headers via the angled `#include <ut/utils.h>` form; /bigobj
|
|
# mirrors CMake's MSVC handling (Column_ut/client_ut have many symbols).
|
|
_UT_COPTS = ["-I."] + select({
|
|
"@platforms//os:windows": ["/bigobj"],
|
|
"//conditions:default": [],
|
|
})
|
|
|
|
_UT_DEPS = [
|
|
"//:datastore",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@googletest//:gtest",
|
|
]
|
|
|
|
# socket_ut.cpp is included here: it spins up its own LocalTcpServer on
|
|
# localhost, which works inside the Bazel test sandbox.
|
|
cc_test(
|
|
name = "unit_tests",
|
|
size = "small",
|
|
srcs = [
|
|
# Test cases.
|
|
"CreateColumnByType_ut.cpp",
|
|
"block_ut.cpp",
|
|
"column_array_ut.cpp",
|
|
"columns_ut.cpp",
|
|
"itemview_ut.cpp",
|
|
"socket_ut.cpp",
|
|
"stream_ut.cpp",
|
|
"type_parser_ut.cpp",
|
|
"types_ut.cpp",
|
|
"utils_ut.cpp",
|
|
# Test entry point and shared support code.
|
|
"main.cpp",
|
|
"tcp_server.cpp",
|
|
"tcp_server.h",
|
|
"utils.cpp",
|
|
"utils.h",
|
|
"utils_comparison.h",
|
|
"utils_meta.h",
|
|
"value_generators.cpp",
|
|
"value_generators.h",
|
|
] + select({
|
|
# Link guard for the TLS code path; sslsocket.cpp (and the
|
|
# system libs it needs) only exist when TLS is enabled.
|
|
"//:tls_no": [],
|
|
"//conditions:default": ["ssl_link_ut.cpp"],
|
|
}),
|
|
copts = _UT_COPTS,
|
|
deps = _UT_DEPS,
|
|
)
|
|
|
|
# Server-dependent end-to-end tests. These connect to a Datastore
|
|
# instance ($DATASTORE_HOST / _PORT / _USER / _PASSWORD / _DB, defaulting
|
|
# to localhost:9000) and exercise the full client round-trip — the same
|
|
# set the CMake build links into datastore-cpp-ut and runs against the
|
|
# docker-compose server.
|
|
#
|
|
# Tagged `manual` + `external`: excluded from wildcard expansion (so a bare
|
|
# `bazel test //...` stays hermetic and green without a server) and never
|
|
# cached (results depend on live server state). Run it with:
|
|
#
|
|
# bazel run //ut:e2e_tests
|
|
# DATASTORE_HOST=my-host bazel test //ut:e2e_tests --test_output=all
|
|
cc_test(
|
|
name = "e2e_tests",
|
|
size = "large",
|
|
# The suite finishes in seconds on Linux/macOS, but on Windows it runs
|
|
# against the server through WSL2's localhost forwarding, where each
|
|
# reconnect / connection-failure test pays a multi-second timeout and
|
|
# the whole suite exceeds the 900s `large` budget. `timeout` is an
|
|
# upper bound, not a fixed wait, so raising it costs nothing on the
|
|
# fast platforms. (The CMake Windows job runs the same tests with no
|
|
# Bazel timeout at all.)
|
|
timeout = "eternal",
|
|
srcs = [
|
|
# Test cases.
|
|
"abnormal_column_names_test.cpp",
|
|
"array_of_low_cardinality_tests.cpp",
|
|
"Column_ut.cpp",
|
|
"client_ut.cpp",
|
|
"connection_failed_client_test.cpp",
|
|
"connection_failed_client_test.h",
|
|
"low_cardinality_nullable_tests.cpp",
|
|
"performance_tests.cpp",
|
|
"readonly_client_test.cpp",
|
|
"readonly_client_test.h",
|
|
"roundtrip_tests.cpp",
|
|
# Test entry point and shared support code.
|
|
"main.cpp",
|
|
"roundtrip_column.cpp",
|
|
"roundtrip_column.h",
|
|
"utils.cpp",
|
|
"utils.h",
|
|
"utils_comparison.h",
|
|
"utils_meta.h",
|
|
"utils_performance.h",
|
|
"value_generators.cpp",
|
|
"value_generators.h",
|
|
],
|
|
copts = _UT_COPTS,
|
|
tags = [
|
|
"external",
|
|
"manual",
|
|
],
|
|
deps = _UT_DEPS,
|
|
)
|