This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/iceberg-rust.git
The following commit(s) were added to refs/heads/gh-pages by this push:
new 2c2dd039a deploy: 946a28fa3714ec4425fb31e295020b2c4ae2d06b
2c2dd039a is described below
commit 2c2dd039a349abd2b5eba2a5232dca370ada10bb
Author: liurenjie1024 <[email protected]>
AuthorDate: Wed Jan 28 00:23:10 2026 +0000
deploy: 946a28fa3714ec4425fb31e295020b2c4ae2d06b
---
api/iceberg_integration_tests/all.html | 2 +-
.../fn.get_test_fixture.html | 3 +
.../fn.set_test_fixture.html | 4 +-
api/iceberg_integration_tests/index.html | 6 +-
api/iceberg_integration_tests/sidebar-items.js | 2 +-
...tFixture.html => struct.GlobalTestFixture.html} | 9 +-
.../struct.TestFixture.html | 6 +-
api/iceberg_test_utils/all.html | 2 +-
.../common/constant.DEFAULT_GCS_PORT.html | 11 ++
.../common/constant.DEFAULT_GLUE_PORT.html | 11 ++
.../common/constant.DEFAULT_HMS_PORT.html | 11 ++
.../common/constant.DEFAULT_MINIO_PORT.html | 11 ++
.../common/constant.DEFAULT_REST_CATALOG_PORT.html | 11 ++
.../common/constant.ENV_GCS_ENDPOINT.html | 11 ++
.../common/constant.ENV_GLUE_ENDPOINT.html | 11 ++
.../common/constant.ENV_HMS_ENDPOINT.html | 11 ++
.../common/constant.ENV_MINIO_ENDPOINT.html | 11 ++
.../common/constant.ENV_REST_CATALOG_ENDPOINT.html | 11 ++
.../common/fn.cleanup_namespace.html | 11 ++
.../common/fn.get_gcs_endpoint.html | 11 ++
.../common/fn.get_glue_endpoint.html | 11 ++
.../common/fn.get_hms_endpoint.html | 11 ++
.../common/fn.get_minio_endpoint.html | 11 ++
.../common/fn.get_rest_catalog_endpoint.html | 11 ++
.../constant.DEFAULT_GCS_PORT.html | 1 +
.../constant.DEFAULT_GLUE_PORT.html | 1 +
.../constant.DEFAULT_HMS_PORT.html | 1 +
.../constant.DEFAULT_MINIO_PORT.html | 1 +
.../constant.DEFAULT_REST_CATALOG_PORT.html | 1 +
.../constant.ENV_GCS_ENDPOINT.html | 1 +
.../constant.ENV_GLUE_ENDPOINT.html | 1 +
.../constant.ENV_HMS_ENDPOINT.html | 1 +
.../constant.ENV_MINIO_ENDPOINT.html | 1 +
.../constant.ENV_REST_CATALOG_ENDPOINT.html | 1 +
.../docker/struct.DockerCompose.html | 34 +++++-
api/iceberg_test_utils/fn.cleanup_namespace.html | 3 +
api/iceberg_test_utils/fn.get_gcs_endpoint.html | 3 +
api/iceberg_test_utils/fn.get_glue_endpoint.html | 3 +
api/iceberg_test_utils/fn.get_hms_endpoint.html | 3 +
api/iceberg_test_utils/fn.get_minio_endpoint.html | 3 +
.../fn.get_rest_catalog_endpoint.html | 3 +
api/iceberg_test_utils/fn.normalize_test_name.html | 2 +-
api/iceberg_test_utils/fn.set_up.html | 2 +-
api/iceberg_test_utils/index.html | 11 +-
.../macro.normalize_test_name_with_parts!.html | 11 ++
.../macro.normalize_test_name_with_parts.html | 12 ++
api/iceberg_test_utils/sidebar-items.js | 2 +-
api/search-index.js | 4 +-
.../iceberg_integration_tests-desc-0-.js | 2 +-
.../iceberg_test_utils-desc-0-.js | 2 +-
api/src/iceberg_integration_tests/lib.rs.html | 132 ++++++++++++++-------
api/src/iceberg_test_utils/lib.rs.html | 99 ++++++++++++++--
api/trait.impl/core/marker/trait.Freeze.js | 4 +-
api/trait.impl/core/marker/trait.Send.js | 4 +-
api/trait.impl/core/marker/trait.Sync.js | 4 +-
api/trait.impl/core/marker/trait.Unpin.js | 4 +-
api/trait.impl/core/marker/trait.UnsafeUnpin.js | 4 +-
.../core/panic/unwind_safe/trait.RefUnwindSafe.js | 4 +-
.../core/panic/unwind_safe/trait.UnwindSafe.js | 4 +-
59 files changed, 486 insertions(+), 93 deletions(-)
diff --git a/api/iceberg_integration_tests/all.html
b/api/iceberg_integration_tests/all.html
index b091dcd86..836b271df 100644
--- a/api/iceberg_integration_tests/all.html
+++ b/api/iceberg_integration_tests/all.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="List of
all items in this crate"><title>List of all items in this
crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Mediu
[...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="List of
all items in this crate"><title>List of all items in this
crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Mediu
[...]
\ No newline at end of file
diff --git a/api/iceberg_integration_tests/fn.get_test_fixture.html
b/api/iceberg_integration_tests/fn.get_test_fixture.html
new file mode 100644
index 000000000..973103080
--- /dev/null
+++ b/api/iceberg_integration_tests/fn.get_test_fixture.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Returns a
reference to the global test fixture. This fixture assumes Docker containers
are started externally."><title>get_test_fixture in iceberg_integration_tests -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regu
[...]
+This fixture assumes Docker containers are started externally.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_integration_tests/fn.set_test_fixture.html
b/api/iceberg_integration_tests/fn.set_test_fixture.html
index dbbf99df1..cc1337469 100644
--- a/api/iceberg_integration_tests/fn.set_test_fixture.html
+++ b/api/iceberg_integration_tests/fn.set_test_fixture.html
@@ -1 +1,3 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `set_test_fixture` fn in crate
`iceberg_integration_tests`."><title>set_test_fixture in
iceberg_integration_tests -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.wof
[...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Legacy
function to create a test fixture with Docker container management. Deprecated:
prefer using `get_test_fixture()` with externally managed
containers."><title>set_test_fixture in iceberg_integration_tests -
Rust</title><script>if(window.location.protocol!=="file:")document.head.ins
[...]
+Deprecated: prefer using <code>get_test_fixture()</code> with externally
managed containers.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_integration_tests/index.html
b/api/iceberg_integration_tests/index.html
index 7e3ca3970..1ec0b534a 100644
--- a/api/iceberg_integration_tests/index.html
+++ b/api/iceberg_integration_tests/index.html
@@ -1 +1,5 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `iceberg_integration_tests`
crate."><title>iceberg_integration_tests -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Re
[...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `iceberg_integration_tests`
crate."><title>iceberg_integration_tests -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Re
[...]
+This assumes Docker containers are started externally (e.g., via <code>make
docker-up</code>).</dd><dt><a class="struct" href="struct.TestFixture.html"
title="struct
iceberg_integration_tests::TestFixture">Test<wbr>Fixture</a></dt><dd>Test
fixture that manages Docker containers.
+This is kept for backward compatibility but deprecated in favor of
GlobalTestFixture.</dd></dl><h2 id="functions"
class="section-header">Functions<a href="#functions"
class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn"
href="fn.get_test_fixture.html" title="fn
iceberg_integration_tests::get_test_fixture">get_<wbr>test_<wbr>fixture</a></dt><dd>Returns
a reference to the global test fixture.
+This fixture assumes Docker containers are started externally.</dd><dt><a
class="fn" href="fn.set_test_fixture.html" title="fn
iceberg_integration_tests::set_test_fixture">set_<wbr>test_<wbr>fixture</a></dt><dd>Legacy
function to create a test fixture with Docker container management.
+Deprecated: prefer using <code>get_test_fixture()</code> with externally
managed containers.</dd></dl></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_integration_tests/sidebar-items.js
b/api/iceberg_integration_tests/sidebar-items.js
index fa2b3de38..c83ae21da 100644
--- a/api/iceberg_integration_tests/sidebar-items.js
+++ b/api/iceberg_integration_tests/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"fn":["set_test_fixture"],"struct":["TestFixture"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS =
{"fn":["get_test_fixture","set_test_fixture"],"struct":["GlobalTestFixture","TestFixture"]};
\ No newline at end of file
diff --git a/api/iceberg_integration_tests/struct.TestFixture.html
b/api/iceberg_integration_tests/struct.GlobalTestFixture.html
similarity index 72%
copy from api/iceberg_integration_tests/struct.TestFixture.html
copy to api/iceberg_integration_tests/struct.GlobalTestFixture.html
index d6bc13f00..9e1d9fc3c 100644
--- a/api/iceberg_integration_tests/struct.TestFixture.html
+++ b/api/iceberg_integration_tests/struct.GlobalTestFixture.html
@@ -1,7 +1,10 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `TestFixture` struct in crate
`iceberg_integration_tests`."><title>TestFixture in iceberg_integration_tests -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,Fir
[...]
- pub _docker_compose: <a class="struct"
href="../iceberg_test_utils/docker/struct.DockerCompose.html" title="struct
iceberg_test_utils::docker::DockerCompose">DockerCompose</a>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Global
test fixture that uses environment-based configuration. This assumes Docker
containers are started externally (e.g., via `make
docker-up`)."><title>GlobalTestFixture in iceberg_integration_tests -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjace
[...]
pub catalog_config: <a class="struct"
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html"
title="struct std::collections::hash::map::HashMap">HashMap</a><<a
class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>, <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>>,
-}</code></pre><h2 id="fields" class="fields section-header">Fields<a
href="#fields" class="anchor">§</a></h2><span id="structfield._docker_compose"
class="structfield section-header"><a href="#structfield._docker_compose"
class="anchor field">§</a><code>_docker_compose: <a class="struct"
href="../iceberg_test_utils/docker/struct.DockerCompose.html" title="struct
iceberg_test_utils::docker::DockerCompose">DockerCompose</a></code></span><span
id="structfield.catalog_config" class="structfi [...]
+}</code></pre><details class="toggle top-doc" open><summary
class="hideme"><span>Expand description</span></summary><div
class="docblock"><p>Global test fixture that uses environment-based
configuration.
+This assumes Docker containers are started externally (e.g., via <code>make
docker-up</code>).</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a
href="#fields" class="anchor">§</a></h2><span id="structfield.catalog_config"
class="structfield section-header"><a href="#structfield.catalog_config"
class="anchor field">§</a><code>catalog_config: <a class="struct"
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html"
title="struct std::collections::hash::map::HashMap">HashMap</a><<a
class="struct" href="https://doc.rust-lang.org/n [...]
+Uses default localhost endpoints if environment variables are not set.</p>
+</div></details></div></details></div><h2 id="synthetic-implementations"
class="section-header">Auto Trait Implementations<a
href="#synthetic-implementations" class="anchor">§</a></h2><div
id="synthetic-implementations-list"><section
id="impl-Freeze-for-GlobalTestFixture" class="impl"><a
href="#impl-Freeze-for-GlobalTestFixture" class="anchor">§</a><h3
class="code-header">impl <a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html"
title="trait core::marke [...]
T: 'static + ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.type_id" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">Source</a><a
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href
[...]
T: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait
core::any::Any">Any</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.as_any" class="method trait-impl"><a
href="#method.as_any" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">as_any</a>(&self) -> &(dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait
core::any::Any">Any</a> + 'static)</h4 [...]
T: ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.borrow" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">Source</a><a
href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a
href="https:/ [...]
diff --git a/api/iceberg_integration_tests/struct.TestFixture.html
b/api/iceberg_integration_tests/struct.TestFixture.html
index d6bc13f00..861b9a056 100644
--- a/api/iceberg_integration_tests/struct.TestFixture.html
+++ b/api/iceberg_integration_tests/struct.TestFixture.html
@@ -1,7 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `TestFixture` struct in crate
`iceberg_integration_tests`."><title>TestFixture in iceberg_integration_tests -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,Fir
[...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Test
fixture that manages Docker containers. This is kept for backward compatibility
but deprecated in favor of GlobalTestFixture."><title>TestFixture in
iceberg_integration_tests -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","So
[...]
pub _docker_compose: <a class="struct"
href="../iceberg_test_utils/docker/struct.DockerCompose.html" title="struct
iceberg_test_utils::docker::DockerCompose">DockerCompose</a>,
pub catalog_config: <a class="struct"
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html"
title="struct std::collections::hash::map::HashMap">HashMap</a><<a
class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>, <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>>,
-}</code></pre><h2 id="fields" class="fields section-header">Fields<a
href="#fields" class="anchor">§</a></h2><span id="structfield._docker_compose"
class="structfield section-header"><a href="#structfield._docker_compose"
class="anchor field">§</a><code>_docker_compose: <a class="struct"
href="../iceberg_test_utils/docker/struct.DockerCompose.html" title="struct
iceberg_test_utils::docker::DockerCompose">DockerCompose</a></code></span><span
id="structfield.catalog_config" class="structfi [...]
+}</code></pre><details class="toggle top-doc" open><summary
class="hideme"><span>Expand description</span></summary><div
class="docblock"><p>Test fixture that manages Docker containers.
+This is kept for backward compatibility but deprecated in favor of
GlobalTestFixture.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a
href="#fields" class="anchor">§</a></h2><span id="structfield._docker_compose"
class="structfield section-header"><a href="#structfield._docker_compose"
class="anchor field">§</a><code>_docker_compose: <a class="struct"
href="../iceberg_test_utils/docker/struct.DockerCompose.html" title="struct
iceberg_test_utils::docker::DockerCompose">DockerCompose</a></code></span><span
id="structfield.catalog_config" class="struct [...]
T: 'static + ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.type_id" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">Source</a><a
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href
[...]
T: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait
core::any::Any">Any</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.as_any" class="method trait-impl"><a
href="#method.as_any" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">as_any</a>(&self) -> &(dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait
core::any::Any">Any</a> + 'static)</h4 [...]
T: ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.borrow" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">Source</a><a
href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a
href="https:/ [...]
diff --git a/api/iceberg_test_utils/all.html b/api/iceberg_test_utils/all.html
index 3084e9cac..7e6204ffb 100644
--- a/api/iceberg_test_utils/all.html
+++ b/api/iceberg_test_utils/all.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="List of
all items in this crate"><title>List of all items in this
crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Mediu
[...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="List of
all items in this crate"><title>List of all items in this
crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Mediu
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/constant.DEFAULT_GCS_PORT.html
b/api/iceberg_test_utils/common/constant.DEFAULT_GCS_PORT.html
new file mode 100644
index 000000000..62b1cbe61
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.DEFAULT_GCS_PORT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.DEFAULT_GCS_PORT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.DEFAULT_GCS_PORT.html">../../iceberg_test_utils/constant.DEFAULT_GCS_PORT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.DEFAULT_GCS_PORT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/constant.DEFAULT_GLUE_PORT.html
b/api/iceberg_test_utils/common/constant.DEFAULT_GLUE_PORT.html
new file mode 100644
index 000000000..21453a0cf
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.DEFAULT_GLUE_PORT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.DEFAULT_GLUE_PORT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.DEFAULT_GLUE_PORT.html">../../iceberg_test_utils/constant.DEFAULT_GLUE_PORT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.DEFAULT_GLUE_PORT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/constant.DEFAULT_HMS_PORT.html
b/api/iceberg_test_utils/common/constant.DEFAULT_HMS_PORT.html
new file mode 100644
index 000000000..c50e4b169
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.DEFAULT_HMS_PORT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.DEFAULT_HMS_PORT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.DEFAULT_HMS_PORT.html">../../iceberg_test_utils/constant.DEFAULT_HMS_PORT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.DEFAULT_HMS_PORT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/constant.DEFAULT_MINIO_PORT.html
b/api/iceberg_test_utils/common/constant.DEFAULT_MINIO_PORT.html
new file mode 100644
index 000000000..38b2cb8da
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.DEFAULT_MINIO_PORT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.DEFAULT_MINIO_PORT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.DEFAULT_MINIO_PORT.html">../../iceberg_test_utils/constant.DEFAULT_MINIO_PORT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.DEFAULT_MINIO_PORT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git
a/api/iceberg_test_utils/common/constant.DEFAULT_REST_CATALOG_PORT.html
b/api/iceberg_test_utils/common/constant.DEFAULT_REST_CATALOG_PORT.html
new file mode 100644
index 000000000..ea90680be
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.DEFAULT_REST_CATALOG_PORT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.DEFAULT_REST_CATALOG_PORT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.DEFAULT_REST_CATALOG_PORT.html">../../iceberg_test_utils/constant.DEFAULT_REST_CATALOG_PORT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.DEFAULT_REST_CATALOG_PORT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/constant.ENV_GCS_ENDPOINT.html
b/api/iceberg_test_utils/common/constant.ENV_GCS_ENDPOINT.html
new file mode 100644
index 000000000..2a6a168a7
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.ENV_GCS_ENDPOINT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.ENV_GCS_ENDPOINT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.ENV_GCS_ENDPOINT.html">../../iceberg_test_utils/constant.ENV_GCS_ENDPOINT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.ENV_GCS_ENDPOINT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/constant.ENV_GLUE_ENDPOINT.html
b/api/iceberg_test_utils/common/constant.ENV_GLUE_ENDPOINT.html
new file mode 100644
index 000000000..2aa57f8a7
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.ENV_GLUE_ENDPOINT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.ENV_GLUE_ENDPOINT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.ENV_GLUE_ENDPOINT.html">../../iceberg_test_utils/constant.ENV_GLUE_ENDPOINT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.ENV_GLUE_ENDPOINT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/constant.ENV_HMS_ENDPOINT.html
b/api/iceberg_test_utils/common/constant.ENV_HMS_ENDPOINT.html
new file mode 100644
index 000000000..b6aaecb23
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.ENV_HMS_ENDPOINT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.ENV_HMS_ENDPOINT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.ENV_HMS_ENDPOINT.html">../../iceberg_test_utils/constant.ENV_HMS_ENDPOINT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.ENV_HMS_ENDPOINT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/constant.ENV_MINIO_ENDPOINT.html
b/api/iceberg_test_utils/common/constant.ENV_MINIO_ENDPOINT.html
new file mode 100644
index 000000000..73a3810c7
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.ENV_MINIO_ENDPOINT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.ENV_MINIO_ENDPOINT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.ENV_MINIO_ENDPOINT.html">../../iceberg_test_utils/constant.ENV_MINIO_ENDPOINT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.ENV_MINIO_ENDPOINT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git
a/api/iceberg_test_utils/common/constant.ENV_REST_CATALOG_ENDPOINT.html
b/api/iceberg_test_utils/common/constant.ENV_REST_CATALOG_ENDPOINT.html
new file mode 100644
index 000000000..70e9118f4
--- /dev/null
+++ b/api/iceberg_test_utils/common/constant.ENV_REST_CATALOG_ENDPOINT.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/constant.ENV_REST_CATALOG_ENDPOINT.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/constant.ENV_REST_CATALOG_ENDPOINT.html">../../iceberg_test_utils/constant.ENV_REST_CATALOG_ENDPOINT.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/constant.ENV_REST_CATALOG_ENDPOINT.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/fn.cleanup_namespace.html
b/api/iceberg_test_utils/common/fn.cleanup_namespace.html
new file mode 100644
index 000000000..0f862ef9d
--- /dev/null
+++ b/api/iceberg_test_utils/common/fn.cleanup_namespace.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/fn.cleanup_namespace.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/fn.cleanup_namespace.html">../../iceberg_test_utils/fn.cleanup_namespace.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/fn.cleanup_namespace.html" +
location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/fn.get_gcs_endpoint.html
b/api/iceberg_test_utils/common/fn.get_gcs_endpoint.html
new file mode 100644
index 000000000..debfced95
--- /dev/null
+++ b/api/iceberg_test_utils/common/fn.get_gcs_endpoint.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/fn.get_gcs_endpoint.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/fn.get_gcs_endpoint.html">../../iceberg_test_utils/fn.get_gcs_endpoint.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/fn.get_gcs_endpoint.html" +
location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/fn.get_glue_endpoint.html
b/api/iceberg_test_utils/common/fn.get_glue_endpoint.html
new file mode 100644
index 000000000..b36805be2
--- /dev/null
+++ b/api/iceberg_test_utils/common/fn.get_glue_endpoint.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/fn.get_glue_endpoint.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/fn.get_glue_endpoint.html">../../iceberg_test_utils/fn.get_glue_endpoint.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/fn.get_glue_endpoint.html" +
location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/fn.get_hms_endpoint.html
b/api/iceberg_test_utils/common/fn.get_hms_endpoint.html
new file mode 100644
index 000000000..05497d4d9
--- /dev/null
+++ b/api/iceberg_test_utils/common/fn.get_hms_endpoint.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/fn.get_hms_endpoint.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/fn.get_hms_endpoint.html">../../iceberg_test_utils/fn.get_hms_endpoint.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/fn.get_hms_endpoint.html" +
location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/fn.get_minio_endpoint.html
b/api/iceberg_test_utils/common/fn.get_minio_endpoint.html
new file mode 100644
index 000000000..5c9c0bd6b
--- /dev/null
+++ b/api/iceberg_test_utils/common/fn.get_minio_endpoint.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/fn.get_minio_endpoint.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/fn.get_minio_endpoint.html">../../iceberg_test_utils/fn.get_minio_endpoint.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/fn.get_minio_endpoint.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/common/fn.get_rest_catalog_endpoint.html
b/api/iceberg_test_utils/common/fn.get_rest_catalog_endpoint.html
new file mode 100644
index 000000000..888b49102
--- /dev/null
+++ b/api/iceberg_test_utils/common/fn.get_rest_catalog_endpoint.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=../../iceberg_test_utils/fn.get_rest_catalog_endpoint.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="../../iceberg_test_utils/fn.get_rest_catalog_endpoint.html">../../iceberg_test_utils/fn.get_rest_catalog_endpoint.html</a>...</p>
+
<script>location.replace("../../iceberg_test_utils/fn.get_rest_catalog_endpoint.html"
+ location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.DEFAULT_GCS_PORT.html
b/api/iceberg_test_utils/constant.DEFAULT_GCS_PORT.html
new file mode 100644
index 000000000..715576258
--- /dev/null
+++ b/api/iceberg_test_utils/constant.DEFAULT_GCS_PORT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `DEFAULT_GCS_PORT` constant in crate
`iceberg_test_utils`."><title>DEFAULT_GCS_PORT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraS
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.DEFAULT_GLUE_PORT.html
b/api/iceberg_test_utils/constant.DEFAULT_GLUE_PORT.html
new file mode 100644
index 000000000..10b8e1293
--- /dev/null
+++ b/api/iceberg_test_utils/constant.DEFAULT_GLUE_PORT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `DEFAULT_GLUE_PORT` constant in crate
`iceberg_test_utils`."><title>DEFAULT_GLUE_PORT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,Fir
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.DEFAULT_HMS_PORT.html
b/api/iceberg_test_utils/constant.DEFAULT_HMS_PORT.html
new file mode 100644
index 000000000..9498f7d18
--- /dev/null
+++ b/api/iceberg_test_utils/constant.DEFAULT_HMS_PORT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `DEFAULT_HMS_PORT` constant in crate
`iceberg_test_utils`."><title>DEFAULT_HMS_PORT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraS
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.DEFAULT_MINIO_PORT.html
b/api/iceberg_test_utils/constant.DEFAULT_MINIO_PORT.html
new file mode 100644
index 000000000..e13b509c7
--- /dev/null
+++ b/api/iceberg_test_utils/constant.DEFAULT_MINIO_PORT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `DEFAULT_MINIO_PORT` constant in crate
`iceberg_test_utils`."><title>DEFAULT_MINIO_PORT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,F
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.DEFAULT_REST_CATALOG_PORT.html
b/api/iceberg_test_utils/constant.DEFAULT_REST_CATALOG_PORT.html
new file mode 100644
index 000000000..93fbb3d3f
--- /dev/null
+++ b/api/iceberg_test_utils/constant.DEFAULT_REST_CATALOG_PORT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `DEFAULT_REST_CATALOG_PORT` constant in crate
`iceberg_test_utils`."><title>DEFAULT_REST_CATALOG_PORT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.ENV_GCS_ENDPOINT.html
b/api/iceberg_test_utils/constant.ENV_GCS_ENDPOINT.html
new file mode 100644
index 000000000..3a3bb0305
--- /dev/null
+++ b/api/iceberg_test_utils/constant.ENV_GCS_ENDPOINT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `ENV_GCS_ENDPOINT` constant in crate
`iceberg_test_utils`."><title>ENV_GCS_ENDPOINT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraS
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.ENV_GLUE_ENDPOINT.html
b/api/iceberg_test_utils/constant.ENV_GLUE_ENDPOINT.html
new file mode 100644
index 000000000..4a0d55dcc
--- /dev/null
+++ b/api/iceberg_test_utils/constant.ENV_GLUE_ENDPOINT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `ENV_GLUE_ENDPOINT` constant in crate
`iceberg_test_utils`."><title>ENV_GLUE_ENDPOINT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,Fir
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.ENV_HMS_ENDPOINT.html
b/api/iceberg_test_utils/constant.ENV_HMS_ENDPOINT.html
new file mode 100644
index 000000000..f2a1a3376
--- /dev/null
+++ b/api/iceberg_test_utils/constant.ENV_HMS_ENDPOINT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `ENV_HMS_ENDPOINT` constant in crate
`iceberg_test_utils`."><title>ENV_HMS_ENDPOINT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraS
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.ENV_MINIO_ENDPOINT.html
b/api/iceberg_test_utils/constant.ENV_MINIO_ENDPOINT.html
new file mode 100644
index 000000000..4dc753f77
--- /dev/null
+++ b/api/iceberg_test_utils/constant.ENV_MINIO_ENDPOINT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `ENV_MINIO_ENDPOINT` constant in crate
`iceberg_test_utils`."><title>ENV_MINIO_ENDPOINT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,F
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/constant.ENV_REST_CATALOG_ENDPOINT.html
b/api/iceberg_test_utils/constant.ENV_REST_CATALOG_ENDPOINT.html
new file mode 100644
index 000000000..b931e5dc8
--- /dev/null
+++ b/api/iceberg_test_utils/constant.ENV_REST_CATALOG_ENDPOINT.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `ENV_REST_CATALOG_ENDPOINT` constant in crate
`iceberg_test_utils`."><title>ENV_REST_CATALOG_ENDPOINT in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/docker/struct.DockerCompose.html
b/api/iceberg_test_utils/docker/struct.DockerCompose.html
index 2ba06537e..0acea0f58 100644
--- a/api/iceberg_test_utils/docker/struct.DockerCompose.html
+++ b/api/iceberg_test_utils/docker/struct.DockerCompose.html
@@ -1,21 +1,43 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="A utility
to manage the lifecycle of `docker compose`."><title>DockerCompose in
iceberg_test_utils::docker -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,Fira
[...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="A utility
to manage the lifecycle of `docker compose`."><title>DockerCompose in
iceberg_test_utils::docker -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,Fira
[...]
<p>It will start <code>docker compose</code> when calling the <code>run</code>
method and will be stopped via <a
href="https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html"
title="trait core::ops::drop::Drop"><code>Drop</code></a>.</p>
</div></details><h2 id="implementations"
class="section-header">Implementations<a href="#implementations"
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle
implementors-toggle" open><summary><section id="impl-DockerCompose"
class="impl"><a class="src rightside"
href="../../src/iceberg_test_utils/docker.rs.html#34-159">Source</a><a
href="#impl-DockerCompose" class="anchor">§</a><h3 class="code-header">impl <a
class="struct" href="struct.DockerCompose.html" tit [...]
project_name: impl <a class="trait"
href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html"
title="trait alloc::string::ToString">ToString</a>,
docker_compose_dir: impl <a class="trait"
href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html"
title="trait alloc::string::ToString">ToString</a>,
) -> Self</h4></section><section id="method.project_name" class="method"><a
class="src rightside"
href="../../src/iceberg_test_utils/docker.rs.html#42-44">Source</a><h4
class="code-header">pub fn <a href="#method.project_name"
class="fn">project_name</a>(&self) -> &<a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section><section
id="method.up" class="method"><a class="src rightside"
href="../../src/iceberg_test_utils/docker [...]
- T: 'static + ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.type_id" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">Source</a><a
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href
[...]
+ T: 'static + ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.type_id" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">Source</a><a
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href
[...]
+ T: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait
core::any::Any">Any</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.as_any" class="method trait-impl"><a
href="#method.as_any" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">as_any</a>(&self) -> &(dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait
core::any::Any">Any</a> + 'static)</h4 [...]
T: ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.borrow" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">Source</a><a
href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a
href="https:/ [...]
- T: ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.borrow_mut" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218">Source</a><a
href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a
href= [...]
+ T: ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.borrow_mut" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218">Source</a><a
href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a
href= [...]
+ T: AsAny + ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.is" class="method trait-impl"><a href="#method.is"
class="anchor">§</a><h4 class="code-header">fn <a
class="fn">is</a><T>(&self) -> <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitiv [...]
+ T: AsAny,</div></h4></section></summary><div class='docblock'>Returns
<code>true</code> if the boxed type is the same as <code>T</code>. <a>Read
more</a></div></details><details class="toggle method-toggle"
open><summary><section id="method.downcast_ref" class="method trait-impl"><a
href="#method.downcast_ref" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">downcast_ref</a><T>(&self) -> <a class="enum"
href="https://doc.rust-lang.org/nightly/core/option/enum [...]
+ T: AsAny,</div></h4></section></summary><div class='docblock'>Forward to
the method defined on the type <code>Any</code>.</div></details><details
class="toggle method-toggle" open><summary><section id="method.downcast_mut"
class="method trait-impl"><a href="#method.downcast_mut"
class="anchor">§</a><h4 class="code-header">fn <a
class="fn">downcast_mut</a><T>(&mut self) -> <a class="enum"
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"
title="enum co [...]
+ T: AsAny,</div></h4></section></summary><div class='docblock'>Forward to
the method defined on the type
<code>Any</code>.</div></details></div></details><details class="toggle
implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T"
class="impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#774">Source</a><a
href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3
class="code-header">impl<T> <a class="trait" href="https:// [...]
</div></details></div></details><details class="toggle
implementors-toggle"><summary><section id="impl-Instrument-for-T"
class="impl"><a href="#impl-Instrument-for-T" class="anchor">§</a><h3
class="code-header">impl<T> Instrument for T</h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.instrument" class="method trait-impl"><a href="#method.instrument"
class="anchor">§</a><h4 class="code-header">fn <a class="fn">in [...]
<code>Instrumented</code> wrapper. <a>Read more</a></div></details><details
class="toggle method-toggle" open><summary><section id="method.in_current_span"
class="method trait-impl"><a href="#method.in_current_span"
class="anchor">§</a><h4 class="code-header">fn <a
class="fn">in_current_span</a>(self) ->
Instrumented<Self></h4></section></summary><div
class='docblock'>Instruments this type with the <a
href="super::Span::current()">current</a> <a href="crate::Span"><code>Span</co
[...]
<code>Instrumented</code> wrapper. <a>Read
more</a></div></details></div></details><details class="toggle
implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T"
class="impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#757-759">Source</a><a
href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3
class="code-header">impl<T, U> <a class="trait"
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"
title="trai [...]
U: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html"
title="trait
core::convert::From">From</a><T>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.into" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767">Source</a><a
href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href=
[...]
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html"
title="trait core::convert::From">From</a><T> for U</code> chooses to
do.</p>
-</div></details></div></details><details class="toggle
implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T"
class="impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#813-815">Source</a><a
href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3
class="code-header">impl<T, U> <a class="trait"
href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html"
title="trait core::convert::TryFrom">TryFrom</a><U [...]
+</div></details></div></details><details class="toggle
implementors-toggle"><summary><section id="impl-IntoEither-for-T"
class="impl"><a class="src rightside"
href="https://docs.rs/either/1/src/either/into_either.rs.html#64">Source</a><a
href="#impl-IntoEither-for-T" class="anchor">§</a><h3
class="code-header">impl<T> <a class="trait"
href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html"
title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></sec
[...]
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a
href="https://docs.rs/either/1/either/enum.Either.html#variant.Right"
title="variant either::Either::Right"><code>Right</code></a> variant of <a
href="https://docs.rs/either/1/either/enum.Either.html" title="enum
either::Either"><code>Either<Self, Self></code></a>
+otherwise. <a
href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read
more</a></div></details><details class="toggle method-toggle"
open><summary><section id="method.into_either_with" class="method
trait-impl"><a class="src rightside"
href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">Source</a><a
href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn
<a href="https://docs.rs/either/1/either/into_either/tr [...]
+ F: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html"
title="trait core::ops::function::FnOnce">FnOnce</a>(&Self) -> <a
class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div
class='docblock'>Converts <code>self</code> into a <a
href="https://docs.rs/either/1/either/enum.Either.html#variant.Left"
title="variant either::Either::Left"><code>Left</code></a> variant [...]
+if <code>into_left(&self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a
href="https://docs.rs/either/1/either/enum.Either.html#variant.Right"
title="variant either::Either::Right"><code>Right</code></a> variant of <a
href="https://docs.rs/either/1/either/enum.Either.html" title="enum
either::Either"><code>Either<Self, Self></code></a>
+otherwise. <a
href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read
more</a></div></details></div></details><details class="toggle
implementors-toggle"><summary><section id="impl-Pointable-for-T"
class="impl"><a href="#impl-Pointable-for-T" class="anchor">§</a><h3
class="code-header">impl<T> Pointable for T</h3></section></summary><div
class="impl-items"><details class="toggle" open><summary><section
id="associatedconstant.ALIGN" clas [...]
+ T: ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.and" class="method trait-impl"><a href="#method.and"
class="anchor">§</a><h4 class="code-header">fn <a class="fn">and</a><P, B,
E>(self, other: P) -> And<T, P><div class="where">where
+ T: Policy<B, E>,
+ P: Policy<B, E>,</div></h4></section></summary><div
class='docblock'>Create a new <code>Policy</code> that returns
[<code>Action::Follow</code>] only if <code>self</code> and <code>other</code>
return
+<code>Action::Follow</code>. <a>Read more</a></div></details><details
class="toggle method-toggle" open><summary><section id="method.or"
class="method trait-impl"><a href="#method.or" class="anchor">§</a><h4
class="code-header">fn <a class="fn">or</a><P, B, E>(self, other: P)
-> Or<T, P><div class="where">where
+ T: Policy<B, E>,
+ P: Policy<B, E>,</div></h4></section></summary><div
class='docblock'>Create a new <code>Policy</code> that returns
[<code>Action::Follow</code>] if either <code>self</code> or <code>other</code>
returns
+<code>Action::Follow</code>. <a>Read
more</a></div></details></div></details><details class="toggle
implementors-toggle"><summary><section id="impl-Same-for-T" class="impl"><a
class="src rightside"
href="https://docs.rs/typenum/1.19.0/src/typenum/type_operators.rs.html#34">Source</a><a
href="#impl-Same-for-T" class="anchor">§</a><h3
class="code-header">impl<T> <a class="trait"
href="https://docs.rs/typenum/1.19.0/typenum/type_operators/trait.Same.html"
title="trait typenum::type_op [...]
U: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"
title="trait
core::convert::Into">Into</a><T>,</div></h3></section></summary><div
class="impl-items"><details class="toggle" open><summary><section
id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src
rightside"
href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#817">Source</a><a
href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-hea [...]
- U: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html"
title="trait
core::convert::TryFrom">TryFrom</a><T>,</div></h3></section></summary><div
class="impl-items"><details class="toggle" open><summary><section
id="associatedtype.Error" class="associatedtype trait-impl"><a class="src
rightside"
href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#802">Source</a><a
href="#associatedtype.Error" class="anchor">§</a><h4 class="cod [...]
+ U: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html"
title="trait
core::convert::TryFrom">TryFrom</a><T>,</div></h3></section></summary><div
class="impl-items"><details class="toggle" open><summary><section
id="associatedtype.Error" class="associatedtype trait-impl"><a class="src
rightside"
href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#802">Source</a><a
href="#associatedtype.Error" class="anchor">§</a><h4 class="cod [...]
+ V: MultiLane<T>,</div></h3></section></summary><div
class="impl-items"><section id="method.vzip" class="method trait-impl"><a
href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">vzip</a>(self) -> V</h4></section></div></details><details
class="toggle implementors-toggle"><summary><section
id="impl-WithSubscriber-for-T" class="impl"><a
href="#impl-WithSubscriber-for-T" class="anchor">§</a><h3
class="code-header">impl<T> WithSubscriber for T< [...]
S: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"
title="trait
core::convert::Into">Into</a><Dispatch>,</div></h4></section></summary><div
class='docblock'>Attaches the provided <a
href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details><details
class="toggle method-toggle" open><summary><section
id="method.with_current_subscriber" class="method trait-impl"><a
href="#method.with_current_subscriber" class="anchor">§</a><h4
class="code-header">fn <a class="fn">with_current_subscriber</a>(self) ->
WithDispatch<Self></h4></section></summary><div class='docblock'>Attaches
the current <a href="dispatcher#setting-the-default-subscriber">default</a> <
[...]
-[<code>WithDispatch</code>] wrapper. <a>Read
more</a></div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
+[<code>WithDispatch</code>] wrapper. <a>Read
more</a></div></details></div></details><section id="impl-Allocation-for-T"
class="impl"><a href="#impl-Allocation-for-T" class="anchor">§</a><h3
class="code-header">impl<T> Allocation for T<div class="where">where
+ T: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html"
title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> + <a
class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html"
title="trait core::marker::Send">Send</a> + <a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html"
title="trait core::marker::Sync">Sync</a>,</div></h3></section><section
id="impl-MaybeSen [...]
+ T: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html"
title="trait
core::marker::Send">Send</a>,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/fn.cleanup_namespace.html
b/api/iceberg_test_utils/fn.cleanup_namespace.html
new file mode 100644
index 000000000..f89e81875
--- /dev/null
+++ b/api/iceberg_test_utils/fn.cleanup_namespace.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Helper to
clean up a namespace and its tables before a test runs. This handles the case
where previous test runs left data in the persistent
database."><title>cleanup_namespace in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentH
[...]
+This handles the case where previous test runs left data in the persistent
database.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/fn.get_gcs_endpoint.html
b/api/iceberg_test_utils/fn.get_gcs_endpoint.html
new file mode 100644
index 000000000..3c5bbabe7
--- /dev/null
+++ b/api/iceberg_test_utils/fn.get_gcs_endpoint.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Returns
the GCS (fake-gcs-server) endpoint. Checks ICEBERG_TEST_GCS_ENDPOINT env var,
otherwise returns localhost default."><title>get_gcs_endpoint in
iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4
[...]
+Checks ICEBERG_TEST_GCS_ENDPOINT env var, otherwise returns localhost
default.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/fn.get_glue_endpoint.html
b/api/iceberg_test_utils/fn.get_glue_endpoint.html
new file mode 100644
index 000000000..fb6c6fbcb
--- /dev/null
+++ b/api/iceberg_test_utils/fn.get_glue_endpoint.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Returns
the Glue (Moto mock) endpoint. Checks ICEBERG_TEST_GLUE_ENDPOINT env var,
otherwise returns localhost default."><title>get_glue_endpoint in
iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Re
[...]
+Checks ICEBERG_TEST_GLUE_ENDPOINT env var, otherwise returns localhost
default.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/fn.get_hms_endpoint.html
b/api/iceberg_test_utils/fn.get_hms_endpoint.html
new file mode 100644
index 000000000..4a2174b0d
--- /dev/null
+++ b/api/iceberg_test_utils/fn.get_hms_endpoint.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Returns
the HMS (Hive Metastore) endpoint. Checks ICEBERG_TEST_HMS_ENDPOINT env var,
otherwise returns localhost default."><title>get_hms_endpoint in
iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-
[...]
+Checks ICEBERG_TEST_HMS_ENDPOINT env var, otherwise returns localhost
default.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/fn.get_minio_endpoint.html
b/api/iceberg_test_utils/fn.get_minio_endpoint.html
new file mode 100644
index 000000000..5b99b09ab
--- /dev/null
+++ b/api/iceberg_test_utils/fn.get_minio_endpoint.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Returns
the MinIO S3-compatible endpoint. Checks ICEBERG_TEST_MINIO_ENDPOINT env var,
otherwise returns localhost default."><title>get_minio_endpoint in
iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSeri
[...]
+Checks ICEBERG_TEST_MINIO_ENDPOINT env var, otherwise returns localhost
default.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/fn.get_rest_catalog_endpoint.html
b/api/iceberg_test_utils/fn.get_rest_catalog_endpoint.html
new file mode 100644
index 000000000..048f2eaa7
--- /dev/null
+++ b/api/iceberg_test_utils/fn.get_rest_catalog_endpoint.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Returns
the REST catalog endpoint. Checks ICEBERG_TEST_REST_ENDPOINT env var, otherwise
returns localhost default."><title>get_rest_catalog_endpoint in
iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif
[...]
+Checks ICEBERG_TEST_REST_ENDPOINT env var, otherwise returns localhost
default.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/fn.normalize_test_name.html
b/api/iceberg_test_utils/fn.normalize_test_name.html
index 6113a6f08..b4ee6ffcd 100644
--- a/api/iceberg_test_utils/fn.normalize_test_name.html
+++ b/api/iceberg_test_utils/fn.normalize_test_name.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `normalize_test_name` fn in crate
`iceberg_test_utils`."><title>normalize_test_name in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraS
[...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `normalize_test_name` fn in crate
`iceberg_test_utils`."><title>normalize_test_name in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraS
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/fn.set_up.html
b/api/iceberg_test_utils/fn.set_up.html
index 3ba3044e2..814ea18ce 100644
--- a/api/iceberg_test_utils/fn.set_up.html
+++ b/api/iceberg_test_utils/fn.set_up.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `set_up` fn in crate
`iceberg_test_utils`."><title>set_up in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,
[...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="API
documentation for the Rust `set_up` fn in crate
`iceberg_test_utils`."><title>set_up in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,
[...]
\ No newline at end of file
diff --git a/api/iceberg_test_utils/index.html
b/api/iceberg_test_utils/index.html
index ae589176a..220d7626d 100644
--- a/api/iceberg_test_utils/index.html
+++ b/api/iceberg_test_utils/index.html
@@ -1,3 +1,10 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="This crate
contains common utilities for testing."><title>iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,Fi
[...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="This crate
contains common utilities for testing."><title>iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,Fi
[...]
<p>It’s not intended for use outside of <code>iceberg-rust</code>.</p>
-</div></details><h2 id="modules" class="section-header">Modules<a
href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a
class="mod" href="docker/index.html" title="mod
iceberg_test_utils::docker">docker</a></dt></dl><h2 id="functions"
class="section-header">Functions<a href="#functions"
class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn"
href="fn.normalize_test_name.html" title="fn
iceberg_test_utils::normalize_test_name">normalize_<wbr>test_<wbr>name</a></
[...]
\ No newline at end of file
+</div></details><h2 id="modules" class="section-header">Modules<a
href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a
class="mod" href="docker/index.html" title="mod
iceberg_test_utils::docker">docker</a></dt></dl><h2 id="macros"
class="section-header">Macros<a href="#macros" class="anchor">§</a></h2><dl
class="item-table"><dt><a class="macro"
href="macro.normalize_test_name_with_parts.html" title="macro
iceberg_test_utils::normalize_test_name_with_parts">normalize_<wb [...]
+Takes one or more string parts and joins them with the module
path.</dd></dl><h2 id="constants" class="section-header">Constants<a
href="#constants" class="anchor">§</a></h2><dl class="item-table"><dt><a
class="constant" href="constant.DEFAULT_GCS_PORT.html" title="constant
iceberg_test_utils::DEFAULT_GCS_PORT">DEFAULT_<wbr>GCS_<wbr>PORT</a></dt><dt><a
class="constant" href="constant.DEFAULT_GLUE_PORT.html" title="constant
iceberg_test_utils::DEFAULT_GLUE_PORT">DEFAULT_<wbr>GLUE_<wbr>POR [...]
+This handles the case where previous test runs left data in the persistent
database.</dd><dt><a class="fn" href="fn.get_gcs_endpoint.html" title="fn
iceberg_test_utils::get_gcs_endpoint">get_<wbr>gcs_<wbr>endpoint</a></dt><dd>Returns
the GCS (fake-gcs-server) endpoint.
+Checks ICEBERG_TEST_GCS_ENDPOINT env var, otherwise returns localhost
default.</dd><dt><a class="fn" href="fn.get_glue_endpoint.html" title="fn
iceberg_test_utils::get_glue_endpoint">get_<wbr>glue_<wbr>endpoint</a></dt><dd>Returns
the Glue (Moto mock) endpoint.
+Checks ICEBERG_TEST_GLUE_ENDPOINT env var, otherwise returns localhost
default.</dd><dt><a class="fn" href="fn.get_hms_endpoint.html" title="fn
iceberg_test_utils::get_hms_endpoint">get_<wbr>hms_<wbr>endpoint</a></dt><dd>Returns
the HMS (Hive Metastore) endpoint.
+Checks ICEBERG_TEST_HMS_ENDPOINT env var, otherwise returns localhost
default.</dd><dt><a class="fn" href="fn.get_minio_endpoint.html" title="fn
iceberg_test_utils::get_minio_endpoint">get_<wbr>minio_<wbr>endpoint</a></dt><dd>Returns
the MinIO S3-compatible endpoint.
+Checks ICEBERG_TEST_MINIO_ENDPOINT env var, otherwise returns localhost
default.</dd><dt><a class="fn" href="fn.get_rest_catalog_endpoint.html"
title="fn
iceberg_test_utils::get_rest_catalog_endpoint">get_<wbr>rest_<wbr>catalog_<wbr>endpoint</a></dt><dd>Returns
the REST catalog endpoint.
+Checks ICEBERG_TEST_REST_ENDPOINT env var, otherwise returns localhost
default.</dd><dt><a class="fn" href="fn.normalize_test_name.html" title="fn
iceberg_test_utils::normalize_test_name">normalize_<wbr>test_<wbr>name</a></dt><dt><a
class="fn" href="fn.set_up.html" title="fn
iceberg_test_utils::set_up">set_up</a></dt></dl></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/macro.normalize_test_name_with_parts!.html
b/api/iceberg_test_utils/macro.normalize_test_name_with_parts!.html
new file mode 100644
index 000000000..3da4a91fa
--- /dev/null
+++ b/api/iceberg_test_utils/macro.normalize_test_name_with_parts!.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh"
content="0;URL=macro.normalize_test_name_with_parts.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a
href="macro.normalize_test_name_with_parts.html">macro.normalize_test_name_with_parts.html</a>...</p>
+ <script>location.replace("macro.normalize_test_name_with_parts.html" +
location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/macro.normalize_test_name_with_parts.html
b/api/iceberg_test_utils/macro.normalize_test_name_with_parts.html
new file mode 100644
index 000000000..f95e81f4c
--- /dev/null
+++ b/api/iceberg_test_utils/macro.normalize_test_name_with_parts.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Macro to
generate a normalized test name with module path prefix. Takes one or more
string parts and joins them with the module
path."><title>normalize_test_name_with_parts in iceberg_test_utils -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML(
[...]
+ ($($part:expr),+) => { ... };
+}</code></pre><details class="toggle top-doc" open><summary
class="hideme"><span>Expand description</span></summary><div
class="docblock"><p>Macro to generate a normalized test name with module path
prefix.
+Takes one or more string parts and joins them with the module path.</p>
+<p>Example:</p>
+
+<div class="example-wrap ignore"><a href="#" class="tooltip" title="This
example is not tested">ⓘ</a><pre class="rust rust-example-rendered"><code><span
class="comment">// Returns something like "rest_catalog_test__test_create_table"
+</span><span class="kw">let </span>name = <span
class="macro">normalize_test_name_with_parts!</span>(<span
class="string">"test_create_table"</span>);
+
+<span class="comment">// Returns something like "rest_catalog_test__apple__ios"
+</span><span class="kw">let </span>name = <span
class="macro">normalize_test_name_with_parts!</span>(<span
class="string">"apple"</span>, <span
class="string">"ios"</span>);</code></pre></div>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg_test_utils/sidebar-items.js
b/api/iceberg_test_utils/sidebar-items.js
index bba4820e0..7e802fcb8 100644
--- a/api/iceberg_test_utils/sidebar-items.js
+++ b/api/iceberg_test_utils/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS =
{"fn":["normalize_test_name","set_up"],"mod":["docker"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS =
{"constant":["DEFAULT_GCS_PORT","DEFAULT_GLUE_PORT","DEFAULT_HMS_PORT","DEFAULT_MINIO_PORT","DEFAULT_REST_CATALOG_PORT","ENV_GCS_ENDPOINT","ENV_GLUE_ENDPOINT","ENV_HMS_ENDPOINT","ENV_MINIO_ENDPOINT","ENV_REST_CATALOG_ENDPOINT"],"fn":["cleanup_namespace","get_gcs_endpoint","get_glue_endpoint","get_hms_endpoint","get_minio_endpoint","get_rest_catalog_endpoint","normalize_test_name","set_up"],"macro":["normalize_test_name_with_parts"],"mod":["docker"]};
\ No newline at end of file
diff --git a/api/search-index.js b/api/search-index.js
index 3bde61b67..4a4e5d473 100644
--- a/api/search-index.js
+++ b/api/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new
Map(JSON.parse('[["iceberg",{"t":"PPPPPPPPPRKKPPPPPPFGPPPFFFPFPPPPPPPPPPPPPPIPPPPPPPPPPPPFFFPGGPPPPFGNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNQNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNCNMNMNMMNOOCNCNNOOONOMNNNNNNNNNNNNNNNNNNNNNNONOOCMNMNONCOONNNNNONCOCMNNNCNNNNNNNNNNNNNNCCNNNN
[...]
+var searchIndex = new
Map(JSON.parse('[["iceberg",{"t":"PPPPPPPPPRKKPPPPPPFGPPPFFFPFPPPPPPPPPPPPPPIPPPPPPPPPPPPFFFPGGPPPPFGNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNQNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNCNMNMNMMNOOCNCNNOOONOMNNNNNNNNNNNNNNNNNNNNNNONOOCMNMNONCOONNNNNONCOCMNNNCNNNNNNNNNNNNNNCCNNNN
[...]
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[174425,1613,3561,3754,1767,14876,3455,4231,8611,1325,2013,3747,1093]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[174425,1613,3561,3754,1767,14876,3455,4231,8611,1556,2013,3747,2331]}
\ No newline at end of file
diff --git
a/api/search.desc/iceberg_integration_tests/iceberg_integration_tests-desc-0-.js
b/api/search.desc/iceberg_integration_tests/iceberg_integration_tests-desc-0-.js
index 3f37a3faf..97ca11ffd 100644
---
a/api/search.desc/iceberg_integration_tests/iceberg_integration_tests-desc-0-.js
+++
b/api/search.desc/iceberg_integration_tests/iceberg_integration_tests-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("iceberg_integration_tests", 0, "Returns the
argument unchanged.\nCalls <code>U::from(self)</code>.")
\ No newline at end of file
+searchState.loadedDescShard("iceberg_integration_tests", 0, "Global test
fixture that uses environment-based …\nTest fixture that manages Docker
containers. This is kept …\nReturns the argument unchanged.\nReturns the
argument unchanged.\nCreates a new GlobalTestFixture from environment
variables.\nReturns a reference to the global test fixture. This …\nCalls
<code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nLegacy function
to create a test fixture with Docker …")
\ No newline at end of file
diff --git a/api/search.desc/iceberg_test_utils/iceberg_test_utils-desc-0-.js
b/api/search.desc/iceberg_test_utils/iceberg_test_utils-desc-0-.js
index d8457aea5..120f7a782 100644
--- a/api/search.desc/iceberg_test_utils/iceberg_test_utils-desc-0-.js
+++ b/api/search.desc/iceberg_test_utils/iceberg_test_utils-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("iceberg_test_utils", 0, "This crate contains
common utilities for testing.\nA utility to manage the lifecycle of
<code>docker compose</code>.\nReturns the argument unchanged.\nCalls
<code>U::from(self)</code>.")
\ No newline at end of file
+searchState.loadedDescShard("iceberg_test_utils", 0, "This crate contains
common utilities for testing.\nHelper to clean up a namespace and its tables
before a …\nReturns the GCS (fake-gcs-server) endpoint. Checks …\nReturns the
Glue (Moto mock) endpoint. Checks …\nReturns the HMS (Hive Metastore) endpoint.
Checks …\nReturns the MinIO S3-compatible endpoint. Checks …\nReturns the REST
catalog endpoint. Checks …\nMacro to generate a normalized test name with
module path …\nMacro to genera [...]
\ No newline at end of file
diff --git a/api/src/iceberg_integration_tests/lib.rs.html
b/api/src/iceberg_integration_tests/lib.rs.html
index c758e9e06..41658f17b 100644
--- a/api/src/iceberg_integration_tests/lib.rs.html
+++ b/api/src/iceberg_integration_tests/lib.rs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Source of
the Rust file `crates/integration_tests/src/lib.rs`."><title>lib.rs -
source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2
[...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Source of
the Rust file `crates/integration_tests/src/lib.rs`."><title>lib.rs -
source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2
[...]
<a href=#2 id=2 data-nosnippet>2</a>// or more contributor license agreements.
See the NOTICE file
<a href=#3 id=3 data-nosnippet>3</a>// distributed with this work for
additional information
<a href=#4 id=4 data-nosnippet>4</a>// regarding copyright ownership. The ASF
licenses this file
@@ -16,49 +16,91 @@
<a href=#16 id=16 data-nosnippet>16</a>// under the License.
<a href=#17 id=17 data-nosnippet>17</a>
<a href=#18 id=18 data-nosnippet>18</a></span><span class="kw">use
</span>std::collections::HashMap;
-<a href=#19 id=19 data-nosnippet>19</a>
-<a href=#20 id=20 data-nosnippet>20</a><span class="kw">use
</span>iceberg::io::{S3_ACCESS_KEY_ID, S3_ENDPOINT, S3_REGION,
S3_SECRET_ACCESS_KEY};
-<a href=#21 id=21 data-nosnippet>21</a><span class="kw">use
</span>iceberg_catalog_rest::REST_CATALOG_PROP_URI;
-<a href=#22 id=22 data-nosnippet>22</a><span class="kw">use
</span>iceberg_test_utils::docker::DockerCompose;
-<a href=#23 id=23 data-nosnippet>23</a><span class="kw">use
</span>iceberg_test_utils::{normalize_test_name, set_up};
-<a href=#24 id=24 data-nosnippet>24</a>
-<a href=#25 id=25 data-nosnippet>25</a><span class="kw">const
</span>REST_CATALOG_PORT: u16 = <span class="number">8181</span>;
-<a href=#26 id=26 data-nosnippet>26</a>
-<a href=#27 id=27 data-nosnippet>27</a><span class="kw">pub struct
</span>TestFixture {
-<a href=#28 id=28 data-nosnippet>28</a> <span class="kw">pub
</span>_docker_compose: DockerCompose,
-<a href=#29 id=29 data-nosnippet>29</a> <span class="kw">pub
</span>catalog_config: HashMap<String, String>,
-<a href=#30 id=30 data-nosnippet>30</a>}
-<a href=#31 id=31 data-nosnippet>31</a>
-<a href=#32 id=32 data-nosnippet>32</a><span class="kw">pub fn
</span>set_test_fixture(func: <span class="kw-2">&</span>str) ->
TestFixture {
-<a href=#33 id=33 data-nosnippet>33</a> set_up();
-<a href=#34 id=34 data-nosnippet>34</a> <span class="kw">let
</span>docker_compose = DockerCompose::new(
-<a href=#35 id=35 data-nosnippet>35</a> normalize_test_name(<span
class="macro">format!</span>(<span class="string">"{}_{func}"</span>, <span
class="macro">module_path!</span>())),
-<a href=#36 id=36 data-nosnippet>36</a> <span
class="macro">format!</span>(<span class="string">"{}/testdata"</span>, <span
class="macro">env!</span>(<span class="string">"CARGO_MANIFEST_DIR"</span>)),
-<a href=#37 id=37 data-nosnippet>37</a> );
-<a href=#38 id=38 data-nosnippet>38</a>
-<a href=#39 id=39 data-nosnippet>39</a> <span class="comment">// Stop any
containers from previous runs and start new ones
-<a href=#40 id=40 data-nosnippet>40</a> </span>docker_compose.down();
-<a href=#41 id=41 data-nosnippet>41</a> docker_compose.up();
+<a href=#19 id=19 data-nosnippet>19</a><span class="kw">use
</span>std::sync::OnceLock;
+<a href=#20 id=20 data-nosnippet>20</a>
+<a href=#21 id=21 data-nosnippet>21</a><span class="kw">use
</span>iceberg::io::{S3_ACCESS_KEY_ID, S3_ENDPOINT, S3_REGION,
S3_SECRET_ACCESS_KEY};
+<a href=#22 id=22 data-nosnippet>22</a><span class="kw">use
</span>iceberg_catalog_rest::REST_CATALOG_PROP_URI;
+<a href=#23 id=23 data-nosnippet>23</a><span class="kw">use
</span>iceberg_test_utils::docker::DockerCompose;
+<a href=#24 id=24 data-nosnippet>24</a><span class="kw">use
</span>iceberg_test_utils::{
+<a href=#25 id=25 data-nosnippet>25</a> get_minio_endpoint,
get_rest_catalog_endpoint, normalize_test_name, set_up,
+<a href=#26 id=26 data-nosnippet>26</a>};
+<a href=#27 id=27 data-nosnippet>27</a>
+<a href=#28 id=28 data-nosnippet>28</a><span class="kw">const
</span>REST_CATALOG_PORT: u16 = <span class="number">8181</span>;
+<a href=#29 id=29 data-nosnippet>29</a>
+<a href=#30 id=30 data-nosnippet>30</a><span class="doccomment">/// Test
fixture that manages Docker containers.
+<a href=#31 id=31 data-nosnippet>31</a>/// This is kept for backward
compatibility but deprecated in favor of GlobalTestFixture.
+<a href=#32 id=32 data-nosnippet>32</a></span><span class="kw">pub struct
</span>TestFixture {
+<a href=#33 id=33 data-nosnippet>33</a> <span class="kw">pub
</span>_docker_compose: DockerCompose,
+<a href=#34 id=34 data-nosnippet>34</a> <span class="kw">pub
</span>catalog_config: HashMap<String, String>,
+<a href=#35 id=35 data-nosnippet>35</a>}
+<a href=#36 id=36 data-nosnippet>36</a>
+<a href=#37 id=37 data-nosnippet>37</a><span class="doccomment">/// Global
test fixture that uses environment-based configuration.
+<a href=#38 id=38 data-nosnippet>38</a>/// This assumes Docker containers are
started externally (e.g., via `make docker-up`).
+<a href=#39 id=39 data-nosnippet>39</a></span><span class="kw">pub struct
</span>GlobalTestFixture {
+<a href=#40 id=40 data-nosnippet>40</a> <span class="kw">pub
</span>catalog_config: HashMap<String, String>,
+<a href=#41 id=41 data-nosnippet>41</a>}
<a href=#42 id=42 data-nosnippet>42</a>
-<a href=#43 id=43 data-nosnippet>43</a> <span class="kw">let
</span>rest_catalog_ip = docker_compose.get_container_ip(<span
class="string">"rest"</span>);
-<a href=#44 id=44 data-nosnippet>44</a> <span class="kw">let
</span>minio_ip = docker_compose.get_container_ip(<span
class="string">"minio"</span>);
-<a href=#45 id=45 data-nosnippet>45</a>
-<a href=#46 id=46 data-nosnippet>46</a> <span class="kw">let
</span>catalog_config = HashMap::from([
-<a href=#47 id=47 data-nosnippet>47</a> (
-<a href=#48 id=48 data-nosnippet>48</a>
REST_CATALOG_PROP_URI.to_string(),
-<a href=#49 id=49 data-nosnippet>49</a> <span
class="macro">format!</span>(<span
class="string">"http://{rest_catalog_ip}:{REST_CATALOG_PORT}"</span>),
-<a href=#50 id=50 data-nosnippet>50</a> ),
-<a href=#51 id=51 data-nosnippet>51</a> (
-<a href=#52 id=52 data-nosnippet>52</a> S3_ENDPOINT.to_string(),
-<a href=#53 id=53 data-nosnippet>53</a> <span
class="macro">format!</span>(<span class="string">"http://{}:{}"</span>,
minio_ip, <span class="number">9000</span>),
-<a href=#54 id=54 data-nosnippet>54</a> ),
-<a href=#55 id=55 data-nosnippet>55</a> (S3_ACCESS_KEY_ID.to_string(),
<span class="string">"admin"</span>.to_string()),
-<a href=#56 id=56 data-nosnippet>56</a>
(S3_SECRET_ACCESS_KEY.to_string(), <span
class="string">"password"</span>.to_string()),
-<a href=#57 id=57 data-nosnippet>57</a> (S3_REGION.to_string(), <span
class="string">"us-east-1"</span>.to_string()),
-<a href=#58 id=58 data-nosnippet>58</a> ]);
-<a href=#59 id=59 data-nosnippet>59</a>
-<a href=#60 id=60 data-nosnippet>60</a> TestFixture {
-<a href=#61 id=61 data-nosnippet>61</a> _docker_compose: docker_compose,
-<a href=#62 id=62 data-nosnippet>62</a> catalog_config,
+<a href=#43 id=43 data-nosnippet>43</a><span class="kw">static
</span>GLOBAL_FIXTURE: OnceLock<GlobalTestFixture> = OnceLock::new();
+<a href=#44 id=44 data-nosnippet>44</a>
+<a href=#45 id=45 data-nosnippet>45</a><span class="kw">impl
</span>GlobalTestFixture {
+<a href=#46 id=46 data-nosnippet>46</a> <span class="doccomment">///
Creates a new GlobalTestFixture from environment variables.
+<a href=#47 id=47 data-nosnippet>47</a> /// Uses default localhost
endpoints if environment variables are not set.
+<a href=#48 id=48 data-nosnippet>48</a> </span><span class="kw">pub fn
</span>from_env() -> <span class="self">Self </span>{
+<a href=#49 id=49 data-nosnippet>49</a> set_up();
+<a href=#50 id=50 data-nosnippet>50</a>
+<a href=#51 id=51 data-nosnippet>51</a> <span class="kw">let
</span>rest_endpoint = get_rest_catalog_endpoint();
+<a href=#52 id=52 data-nosnippet>52</a> <span class="kw">let
</span>minio_endpoint = get_minio_endpoint();
+<a href=#53 id=53 data-nosnippet>53</a>
+<a href=#54 id=54 data-nosnippet>54</a> <span class="kw">let
</span>catalog_config = HashMap::from([
+<a href=#55 id=55 data-nosnippet>55</a>
(REST_CATALOG_PROP_URI.to_string(), rest_endpoint),
+<a href=#56 id=56 data-nosnippet>56</a> (S3_ENDPOINT.to_string(),
minio_endpoint),
+<a href=#57 id=57 data-nosnippet>57</a>
(S3_ACCESS_KEY_ID.to_string(), <span class="string">"admin"</span>.to_string()),
+<a href=#58 id=58 data-nosnippet>58</a>
(S3_SECRET_ACCESS_KEY.to_string(), <span
class="string">"password"</span>.to_string()),
+<a href=#59 id=59 data-nosnippet>59</a> (S3_REGION.to_string(),
<span class="string">"us-east-1"</span>.to_string()),
+<a href=#60 id=60 data-nosnippet>60</a> ]);
+<a href=#61 id=61 data-nosnippet>61</a>
+<a href=#62 id=62 data-nosnippet>62</a> GlobalTestFixture {
catalog_config }
<a href=#63 id=63 data-nosnippet>63</a> }
-<a href=#64 id=64
data-nosnippet>64</a>}</code></pre></div></section></main></body></html>
\ No newline at end of file
+<a href=#64 id=64 data-nosnippet>64</a>}
+<a href=#65 id=65 data-nosnippet>65</a>
+<a href=#66 id=66 data-nosnippet>66</a><span class="doccomment">/// Returns a
reference to the global test fixture.
+<a href=#67 id=67 data-nosnippet>67</a>/// This fixture assumes Docker
containers are started externally.
+<a href=#68 id=68 data-nosnippet>68</a></span><span class="kw">pub fn
</span>get_test_fixture() -> <span class="kw-2">&</span><span
class="lifetime">'static </span>GlobalTestFixture {
+<a href=#69 id=69 data-nosnippet>69</a>
GLOBAL_FIXTURE.get_or_init(GlobalTestFixture::from_env)
+<a href=#70 id=70 data-nosnippet>70</a>}
+<a href=#71 id=71 data-nosnippet>71</a>
+<a href=#72 id=72 data-nosnippet>72</a><span class="doccomment">/// Legacy
function to create a test fixture with Docker container management.
+<a href=#73 id=73 data-nosnippet>73</a>/// Deprecated: prefer using
`get_test_fixture()` with externally managed containers.
+<a href=#74 id=74 data-nosnippet>74</a></span><span class="kw">pub fn
</span>set_test_fixture(func: <span class="kw-2">&</span>str) ->
TestFixture {
+<a href=#75 id=75 data-nosnippet>75</a> set_up();
+<a href=#76 id=76 data-nosnippet>76</a> <span class="kw">let
</span>docker_compose = DockerCompose::new(
+<a href=#77 id=77 data-nosnippet>77</a> normalize_test_name(<span
class="macro">format!</span>(<span class="string">"{}_{func}"</span>, <span
class="macro">module_path!</span>())),
+<a href=#78 id=78 data-nosnippet>78</a> <span
class="macro">format!</span>(<span class="string">"{}/testdata"</span>, <span
class="macro">env!</span>(<span class="string">"CARGO_MANIFEST_DIR"</span>)),
+<a href=#79 id=79 data-nosnippet>79</a> );
+<a href=#80 id=80 data-nosnippet>80</a>
+<a href=#81 id=81 data-nosnippet>81</a> <span class="comment">// Stop any
containers from previous runs and start new ones
+<a href=#82 id=82 data-nosnippet>82</a> </span>docker_compose.down();
+<a href=#83 id=83 data-nosnippet>83</a> docker_compose.up();
+<a href=#84 id=84 data-nosnippet>84</a>
+<a href=#85 id=85 data-nosnippet>85</a> <span class="kw">let
</span>rest_catalog_ip = docker_compose.get_container_ip(<span
class="string">"rest"</span>);
+<a href=#86 id=86 data-nosnippet>86</a> <span class="kw">let
</span>minio_ip = docker_compose.get_container_ip(<span
class="string">"minio"</span>);
+<a href=#87 id=87 data-nosnippet>87</a>
+<a href=#88 id=88 data-nosnippet>88</a> <span class="kw">let
</span>catalog_config = HashMap::from([
+<a href=#89 id=89 data-nosnippet>89</a> (
+<a href=#90 id=90 data-nosnippet>90</a>
REST_CATALOG_PROP_URI.to_string(),
+<a href=#91 id=91 data-nosnippet>91</a> <span
class="macro">format!</span>(<span
class="string">"http://{rest_catalog_ip}:{REST_CATALOG_PORT}"</span>),
+<a href=#92 id=92 data-nosnippet>92</a> ),
+<a href=#93 id=93 data-nosnippet>93</a> (
+<a href=#94 id=94 data-nosnippet>94</a> S3_ENDPOINT.to_string(),
+<a href=#95 id=95 data-nosnippet>95</a> <span
class="macro">format!</span>(<span class="string">"http://{}:{}"</span>,
minio_ip, <span class="number">9000</span>),
+<a href=#96 id=96 data-nosnippet>96</a> ),
+<a href=#97 id=97 data-nosnippet>97</a> (S3_ACCESS_KEY_ID.to_string(),
<span class="string">"admin"</span>.to_string()),
+<a href=#98 id=98 data-nosnippet>98</a>
(S3_SECRET_ACCESS_KEY.to_string(), <span
class="string">"password"</span>.to_string()),
+<a href=#99 id=99 data-nosnippet>99</a> (S3_REGION.to_string(), <span
class="string">"us-east-1"</span>.to_string()),
+<a href=#100 id=100 data-nosnippet>100</a> ]);
+<a href=#101 id=101 data-nosnippet>101</a>
+<a href=#102 id=102 data-nosnippet>102</a> TestFixture {
+<a href=#103 id=103 data-nosnippet>103</a> _docker_compose:
docker_compose,
+<a href=#104 id=104 data-nosnippet>104</a> catalog_config,
+<a href=#105 id=105 data-nosnippet>105</a> }
+<a href=#106 id=106
data-nosnippet>106</a>}</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/api/src/iceberg_test_utils/lib.rs.html
b/api/src/iceberg_test_utils/lib.rs.html
index 977d3225c..1d7b4a637 100644
--- a/api/src/iceberg_test_utils/lib.rs.html
+++ b/api/src/iceberg_test_utils/lib.rs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Source of
the Rust file `crates/test_utils/src/lib.rs`."><title>lib.rs -
source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSa
[...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Source of
the Rust file `crates/test_utils/src/lib.rs`."><title>lib.rs -
source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSa
[...]
<a href=#2 id=2 data-nosnippet>2</a>// or more contributor license agreements.
See the NOTICE file
<a href=#3 id=3 data-nosnippet>3</a>// distributed with this work for
additional information
<a href=#4 id=4 data-nosnippet>4</a>// regarding copyright ownership. The ASF
licenses this file
@@ -31,11 +31,92 @@
<a href=#31 id=31 data-nosnippet>31</a></span><span class="kw">mod
</span>common {
<a href=#32 id=32 data-nosnippet>32</a> <span class="kw">use
</span>std::sync::Once;
<a href=#33 id=33 data-nosnippet>33</a>
-<a href=#34 id=34 data-nosnippet>34</a> <span class="kw">static
</span>INIT: Once = Once::new();
-<a href=#35 id=35 data-nosnippet>35</a> <span class="kw">pub fn
</span>set_up() {
-<a href=#36 id=36 data-nosnippet>36</a>
INIT.call_once(tracing_subscriber::fmt::init);
-<a href=#37 id=37 data-nosnippet>37</a> }
-<a href=#38 id=38 data-nosnippet>38</a> <span class="kw">pub fn
</span>normalize_test_name(s: <span class="kw">impl </span>ToString) ->
String {
-<a href=#39 id=39 data-nosnippet>39</a> s.to_string().replace(<span
class="string">"::"</span>, <span class="string">"__"</span>).replace(<span
class="string">'.'</span>, <span class="string">"_"</span>)
-<a href=#40 id=40 data-nosnippet>40</a> }
-<a href=#41 id=41
data-nosnippet>41</a>}</code></pre></div></section></main></body></html>
\ No newline at end of file
+<a href=#34 id=34 data-nosnippet>34</a> <span class="kw">use
</span>iceberg::{Catalog, NamespaceIdent};
+<a href=#35 id=35 data-nosnippet>35</a>
+<a href=#36 id=36 data-nosnippet>36</a> <span class="kw">static
</span>INIT: Once = Once::new();
+<a href=#37 id=37 data-nosnippet>37</a> <span class="kw">pub fn
</span>set_up() {
+<a href=#38 id=38 data-nosnippet>38</a>
INIT.call_once(tracing_subscriber::fmt::init);
+<a href=#39 id=39 data-nosnippet>39</a> }
+<a href=#40 id=40 data-nosnippet>40</a> <span class="kw">pub fn
</span>normalize_test_name(s: <span class="kw">impl </span>ToString) ->
String {
+<a href=#41 id=41 data-nosnippet>41</a> s.to_string().replace(<span
class="string">"::"</span>, <span class="string">"__"</span>).replace(<span
class="string">'.'</span>, <span class="string">"_"</span>)
+<a href=#42 id=42 data-nosnippet>42</a> }
+<a href=#43 id=43 data-nosnippet>43</a>
+<a href=#44 id=44 data-nosnippet>44</a> <span class="comment">//
Environment variable names for service endpoints
+<a href=#45 id=45 data-nosnippet>45</a> </span><span class="kw">pub const
</span>ENV_MINIO_ENDPOINT: <span class="kw-2">&</span>str = <span
class="string">"ICEBERG_TEST_MINIO_ENDPOINT"</span>;
+<a href=#46 id=46 data-nosnippet>46</a> <span class="kw">pub const
</span>ENV_REST_CATALOG_ENDPOINT: <span class="kw-2">&</span>str = <span
class="string">"ICEBERG_TEST_REST_ENDPOINT"</span>;
+<a href=#47 id=47 data-nosnippet>47</a> <span class="kw">pub const
</span>ENV_HMS_ENDPOINT: <span class="kw-2">&</span>str = <span
class="string">"ICEBERG_TEST_HMS_ENDPOINT"</span>;
+<a href=#48 id=48 data-nosnippet>48</a> <span class="kw">pub const
</span>ENV_GLUE_ENDPOINT: <span class="kw-2">&</span>str = <span
class="string">"ICEBERG_TEST_GLUE_ENDPOINT"</span>;
+<a href=#49 id=49 data-nosnippet>49</a> <span class="kw">pub const
</span>ENV_GCS_ENDPOINT: <span class="kw-2">&</span>str = <span
class="string">"ICEBERG_TEST_GCS_ENDPOINT"</span>;
+<a href=#50 id=50 data-nosnippet>50</a>
+<a href=#51 id=51 data-nosnippet>51</a> <span class="comment">// Default
ports matching dev/docker-compose.yaml
+<a href=#52 id=52 data-nosnippet>52</a> </span><span class="kw">pub const
</span>DEFAULT_MINIO_PORT: u16 = <span class="number">9000</span>;
+<a href=#53 id=53 data-nosnippet>53</a> <span class="kw">pub const
</span>DEFAULT_REST_CATALOG_PORT: u16 = <span class="number">8181</span>;
+<a href=#54 id=54 data-nosnippet>54</a> <span class="kw">pub const
</span>DEFAULT_HMS_PORT: u16 = <span class="number">9083</span>;
+<a href=#55 id=55 data-nosnippet>55</a> <span class="kw">pub const
</span>DEFAULT_GLUE_PORT: u16 = <span class="number">5000</span>;
+<a href=#56 id=56 data-nosnippet>56</a> <span class="kw">pub const
</span>DEFAULT_GCS_PORT: u16 = <span class="number">4443</span>;
+<a href=#57 id=57 data-nosnippet>57</a>
+<a href=#58 id=58 data-nosnippet>58</a> <span class="doccomment">///
Returns the MinIO S3-compatible endpoint.
+<a href=#59 id=59 data-nosnippet>59</a> /// Checks
ICEBERG_TEST_MINIO_ENDPOINT env var, otherwise returns localhost default.
+<a href=#60 id=60 data-nosnippet>60</a> </span><span class="kw">pub fn
</span>get_minio_endpoint() -> String {
+<a href=#61 id=61 data-nosnippet>61</a>
std::env::var(ENV_MINIO_ENDPOINT)
+<a href=#62 id=62 data-nosnippet>62</a> .unwrap_or_else(|<span
class="kw">_</span>| <span class="macro">format!</span>(<span
class="string">"http://localhost:{DEFAULT_MINIO_PORT}"</span>))
+<a href=#63 id=63 data-nosnippet>63</a> }
+<a href=#64 id=64 data-nosnippet>64</a>
+<a href=#65 id=65 data-nosnippet>65</a> <span class="doccomment">///
Returns the REST catalog endpoint.
+<a href=#66 id=66 data-nosnippet>66</a> /// Checks
ICEBERG_TEST_REST_ENDPOINT env var, otherwise returns localhost default.
+<a href=#67 id=67 data-nosnippet>67</a> </span><span class="kw">pub fn
</span>get_rest_catalog_endpoint() -> String {
+<a href=#68 id=68 data-nosnippet>68</a>
std::env::var(ENV_REST_CATALOG_ENDPOINT)
+<a href=#69 id=69 data-nosnippet>69</a> .unwrap_or_else(|<span
class="kw">_</span>| <span class="macro">format!</span>(<span
class="string">"http://localhost:{DEFAULT_REST_CATALOG_PORT}"</span>))
+<a href=#70 id=70 data-nosnippet>70</a> }
+<a href=#71 id=71 data-nosnippet>71</a>
+<a href=#72 id=72 data-nosnippet>72</a> <span class="doccomment">///
Returns the HMS (Hive Metastore) endpoint.
+<a href=#73 id=73 data-nosnippet>73</a> /// Checks
ICEBERG_TEST_HMS_ENDPOINT env var, otherwise returns localhost default.
+<a href=#74 id=74 data-nosnippet>74</a> </span><span class="kw">pub fn
</span>get_hms_endpoint() -> String {
+<a href=#75 id=75 data-nosnippet>75</a>
std::env::var(ENV_HMS_ENDPOINT).unwrap_or_else(|<span class="kw">_</span>|
<span class="macro">format!</span>(<span
class="string">"localhost:{DEFAULT_HMS_PORT}"</span>))
+<a href=#76 id=76 data-nosnippet>76</a> }
+<a href=#77 id=77 data-nosnippet>77</a>
+<a href=#78 id=78 data-nosnippet>78</a> <span class="doccomment">///
Returns the Glue (Moto mock) endpoint.
+<a href=#79 id=79 data-nosnippet>79</a> /// Checks
ICEBERG_TEST_GLUE_ENDPOINT env var, otherwise returns localhost default.
+<a href=#80 id=80 data-nosnippet>80</a> </span><span class="kw">pub fn
</span>get_glue_endpoint() -> String {
+<a href=#81 id=81 data-nosnippet>81</a> std::env::var(ENV_GLUE_ENDPOINT)
+<a href=#82 id=82 data-nosnippet>82</a> .unwrap_or_else(|<span
class="kw">_</span>| <span class="macro">format!</span>(<span
class="string">"http://localhost:{DEFAULT_GLUE_PORT}"</span>))
+<a href=#83 id=83 data-nosnippet>83</a> }
+<a href=#84 id=84 data-nosnippet>84</a>
+<a href=#85 id=85 data-nosnippet>85</a> <span class="doccomment">///
Returns the GCS (fake-gcs-server) endpoint.
+<a href=#86 id=86 data-nosnippet>86</a> /// Checks
ICEBERG_TEST_GCS_ENDPOINT env var, otherwise returns localhost default.
+<a href=#87 id=87 data-nosnippet>87</a> </span><span class="kw">pub fn
</span>get_gcs_endpoint() -> String {
+<a href=#88 id=88 data-nosnippet>88</a> std::env::var(ENV_GCS_ENDPOINT)
+<a href=#89 id=89 data-nosnippet>89</a> .unwrap_or_else(|<span
class="kw">_</span>| <span class="macro">format!</span>(<span
class="string">"http://localhost:{DEFAULT_GCS_PORT}"</span>))
+<a href=#90 id=90 data-nosnippet>90</a> }
+<a href=#91 id=91 data-nosnippet>91</a>
+<a href=#92 id=92 data-nosnippet>92</a> <span class="doccomment">/// Helper
to clean up a namespace and its tables before a test runs.
+<a href=#93 id=93 data-nosnippet>93</a> /// This handles the case where
previous test runs left data in the persistent database.
+<a href=#94 id=94 data-nosnippet>94</a> </span><span class="kw">pub async
fn </span>cleanup_namespace<C: Catalog>(catalog: <span
class="kw-2">&</span>C, ns: <span class="kw-2">&</span>NamespaceIdent) {
+<a href=#95 id=95 data-nosnippet>95</a> <span class="comment">// Try to
drop all tables in the namespace first
+<a href=#96 id=96 data-nosnippet>96</a> </span><span class="kw">if let
</span><span class="prelude-val">Ok</span>(tables) =
catalog.list_tables(ns).<span class="kw">await </span>{
+<a href=#97 id=97 data-nosnippet>97</a> <span class="kw">for
</span>table <span class="kw">in </span>tables {
+<a href=#98 id=98 data-nosnippet>98</a> <span class="kw">let _
</span>= catalog.drop_table(<span class="kw-2">&</span>table).<span
class="kw">await</span>;
+<a href=#99 id=99 data-nosnippet>99</a> }
+<a href=#100 id=100 data-nosnippet>100</a> }
+<a href=#101 id=101 data-nosnippet>101</a> <span class="comment">//
Then try to drop the namespace itself
+<a href=#102 id=102 data-nosnippet>102</a> </span><span class="kw">let
_ </span>= catalog.drop_namespace(ns).<span class="kw">await</span>;
+<a href=#103 id=103 data-nosnippet>103</a> }
+<a href=#104 id=104 data-nosnippet>104</a>
+<a href=#105 id=105 data-nosnippet>105</a> <span class="doccomment">///
Macro to generate a normalized test name with module path prefix.
+<a href=#106 id=106 data-nosnippet>106</a> /// Takes one or more string
parts and joins them with the module path.
+<a href=#107 id=107 data-nosnippet>107</a> ///
+<a href=#108 id=108 data-nosnippet>108</a> /// Example:
+<a href=#109 id=109 data-nosnippet>109</a> /// ```ignore
+<a href=#110 id=110 data-nosnippet>110</a> /// // Returns something like
"rest_catalog_test__test_create_table"
+<a href=#111 id=111 data-nosnippet>111</a> /// let name =
normalize_test_name_with_parts!("test_create_table");
+<a href=#112 id=112 data-nosnippet>112</a> ///
+<a href=#113 id=113 data-nosnippet>113</a> /// // Returns something like
"rest_catalog_test__apple__ios"
+<a href=#114 id=114 data-nosnippet>114</a> /// let name =
normalize_test_name_with_parts!("apple", "ios");
+<a href=#115 id=115 data-nosnippet>115</a> /// ```
+<a href=#116 id=116 data-nosnippet>116</a> </span><span
class="attr">#[macro_export]
+<a href=#117 id=117 data-nosnippet>117</a> </span><span
class="macro">macro_rules!</span> normalize_test_name_with_parts {
+<a href=#118 id=118 data-nosnippet>118</a> ($(<span
class="macro-nonterminal">$part</span>:expr),+) => {
+<a href=#119 id=119 data-nosnippet>119</a> <span
class="macro-nonterminal">$crate::normalize_test_name</span>([<span
class="macro">module_path!</span>(), $(<span
class="macro-nonterminal">$part</span>),+].join(<span
class="string">"_"</span>))
+<a href=#120 id=120 data-nosnippet>120</a> };
+<a href=#121 id=121 data-nosnippet>121</a> }
+<a href=#122 id=122
data-nosnippet>122</a>}</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/api/trait.impl/core/marker/trait.Freeze.js
b/api/trait.impl/core/marker/trait.Freeze.js
index 1b1a96c51..e9b71e5b0 100644
--- a/api/trait.impl/core/marker/trait.Freeze.js
+++ b/api/trait.impl/core/marker/trait.Freeze.js
@@ -1,9 +1,9 @@
(function() {
- var implementors = Object.fromEntries([["iceberg",[["impl !<a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\"
title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\"
href=\"iceberg/enum.TableUpdate.html\" title=\"enum
iceberg::TableUpdate\">TableUpdate</a>",1,["iceberg::catalog::TableUpdate"]],["impl
!<a class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\"
title=\"trait core::marker::Freeze\">F [...]
+ var implementors = Object.fromEntries([["iceberg",[["impl !<a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\"
title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\"
href=\"iceberg/enum.TableUpdate.html\" title=\"enum
iceberg::TableUpdate\">TableUpdate</a>",1,["iceberg::catalog::TableUpdate"]],["impl
!<a class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\"
title=\"trait core::marker::Freeze\">F [...]
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()
-//{"start":57,"fragment_lengths":[58534,401,741,1088,397,6364,801,1064,2542,381,390,1418,384]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[58534,401,741,1088,397,6364,801,1064,2542,754,390,1418,384]}
\ No newline at end of file
diff --git a/api/trait.impl/core/marker/trait.Send.js
b/api/trait.impl/core/marker/trait.Send.js
index 24787429f..9f0a48986 100644
--- a/api/trait.impl/core/marker/trait.Send.js
+++ b/api/trait.impl/core/marker/trait.Send.js
@@ -1,9 +1,9 @@
(function() {
- var implementors = Object.fromEntries([["iceberg",[["impl <a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\"
title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\"
href=\"iceberg/arrow/enum.FieldMatchMode.html\" title=\"enum
iceberg::arrow::FieldMatchMode\">FieldMatchMode</a>",1,["iceberg::arrow::value::FieldMatchMode"]],["impl
<a class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\"
title=\"trait core [...]
+ var implementors = Object.fromEntries([["iceberg",[["impl <a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\"
title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\"
href=\"iceberg/arrow/enum.FieldMatchMode.html\" title=\"enum
iceberg::arrow::FieldMatchMode\">FieldMatchMode</a>",1,["iceberg::arrow::value::FieldMatchMode"]],["impl
<a class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\"
title=\"trait core [...]
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()
-//{"start":57,"fragment_lengths":[52628,395,729,1070,391,6258,789,1046,2506,375,384,1394,378]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[52628,395,729,1070,391,6258,789,1046,2506,742,384,1394,378]}
\ No newline at end of file
diff --git a/api/trait.impl/core/marker/trait.Sync.js
b/api/trait.impl/core/marker/trait.Sync.js
index d745a241a..c1b310536 100644
--- a/api/trait.impl/core/marker/trait.Sync.js
+++ b/api/trait.impl/core/marker/trait.Sync.js
@@ -1,9 +1,9 @@
(function() {
- var implementors = Object.fromEntries([["iceberg",[["impl !<a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\"
title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\"
href=\"iceberg/puffin/struct.PuffinWriter.html\" title=\"struct
iceberg::puffin::PuffinWriter\">PuffinWriter</a>",1,["iceberg::puffin::writer::PuffinWriter"]],["impl
!<a class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\"
title=\"trait [...]
+ var implementors = Object.fromEntries([["iceberg",[["impl !<a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\"
title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\"
href=\"iceberg/puffin/struct.PuffinWriter.html\" title=\"struct
iceberg::puffin::PuffinWriter\">PuffinWriter</a>",1,["iceberg::puffin::writer::PuffinWriter"]],["impl
!<a class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\"
title=\"trait [...]
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()
-//{"start":57,"fragment_lengths":[55699,395,729,1070,391,6258,789,1046,2506,375,384,1395,378]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[55699,395,729,1070,391,6258,789,1046,2506,742,384,1395,378]}
\ No newline at end of file
diff --git a/api/trait.impl/core/marker/trait.Unpin.js
b/api/trait.impl/core/marker/trait.Unpin.js
index 1d0a9b5f2..33e4329a4 100644
--- a/api/trait.impl/core/marker/trait.Unpin.js
+++ b/api/trait.impl/core/marker/trait.Unpin.js
@@ -1,9 +1,9 @@
(function() {
- var implementors = Object.fromEntries([["iceberg",[["impl <a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\"
title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\"
href=\"iceberg/arrow/enum.FieldMatchMode.html\" title=\"enum
iceberg::arrow::FieldMatchMode\">FieldMatchMode</a>",1,["iceberg::arrow::value::FieldMatchMode"]],["impl
<a class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\"
title=\"trait [...]
+ var implementors = Object.fromEntries([["iceberg",[["impl <a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\"
title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\"
href=\"iceberg/arrow/enum.FieldMatchMode.html\" title=\"enum
iceberg::arrow::FieldMatchMode\">FieldMatchMode</a>",1,["iceberg::arrow::value::FieldMatchMode"]],["impl
<a class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\"
title=\"trait [...]
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()
-//{"start":57,"fragment_lengths":[59161,398,735,1079,394,6309,795,1055,2524,378,387,1406,381]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[59161,398,735,1079,394,6309,795,1055,2524,748,387,1406,381]}
\ No newline at end of file
diff --git a/api/trait.impl/core/marker/trait.UnsafeUnpin.js
b/api/trait.impl/core/marker/trait.UnsafeUnpin.js
index 384b1b113..3496a86b7 100644
--- a/api/trait.impl/core/marker/trait.UnsafeUnpin.js
+++ b/api/trait.impl/core/marker/trait.UnsafeUnpin.js
@@ -1,9 +1,9 @@
(function() {
- var implementors = Object.fromEntries([["iceberg",[["impl UnsafeUnpin for
<a class=\"enum\" href=\"iceberg/arrow/enum.FieldMatchMode.html\" title=\"enum
iceberg::arrow::FieldMatchMode\">FieldMatchMode</a>",1,["iceberg::arrow::value::FieldMatchMode"]],["impl
UnsafeUnpin for <a class=\"enum\" href=\"iceberg/enum.ErrorKind.html\"
title=\"enum
iceberg::ErrorKind\">ErrorKind</a>",1,["iceberg::error::ErrorKind"]],["impl
UnsafeUnpin for <a class=\"enum\" href=\"iceberg/enum.TableRequirement [...]
+ var implementors = Object.fromEntries([["iceberg",[["impl UnsafeUnpin for
<a class=\"enum\" href=\"iceberg/arrow/enum.FieldMatchMode.html\" title=\"enum
iceberg::arrow::FieldMatchMode\">FieldMatchMode</a>",1,["iceberg::arrow::value::FieldMatchMode"]],["impl
UnsafeUnpin for <a class=\"enum\" href=\"iceberg/enum.ErrorKind.html\"
title=\"enum
iceberg::ErrorKind\">ErrorKind</a>",1,["iceberg::error::ErrorKind"]],["impl
UnsafeUnpin for <a class=\"enum\" href=\"iceberg/enum.TableRequirement [...]
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()
-//{"start":57,"fragment_lengths":[36247,273,485,704,269,4184,545,680,1774,253,262,906,256]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[36247,273,485,704,269,4184,545,680,1774,498,262,906,256]}
\ No newline at end of file
diff --git a/api/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
b/api/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
index a124eaedf..f2951f49e 100644
--- a/api/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/api/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,9 +1,9 @@
(function() {
- var implementors = Object.fromEntries([["iceberg",[["impl !<a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\"
title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for
<a class=\"struct\"
href=\"iceberg/arrow/partition_value_calculator/struct.PartitionValueCalculator.html\"
title=\"struct
iceberg::arrow::partition_value_calculator::PartitionValueCalculator\">PartitionValueCalculator</a>",1,["iceberg::arrow
[...]
+ var implementors = Object.fromEntries([["iceberg",[["impl !<a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\"
title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for
<a class=\"struct\"
href=\"iceberg/arrow/partition_value_calculator/struct.PartitionValueCalculator.html\"
title=\"struct
iceberg::arrow::partition_value_calculator::PartitionValueCalculator\">PartitionValueCalculator</a>",1,["iceberg::arrow
[...]
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()
-//{"start":57,"fragment_lengths":[62766,446,830,1221,441,7110,891,1197,2811,425,435,1595,428]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[62766,446,830,1221,441,7110,891,1197,2811,842,435,1595,428]}
\ No newline at end of file
diff --git a/api/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
b/api/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
index 5fd9471cc..6cf276be3 100644
--- a/api/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/api/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,9 +1,9 @@
(function() {
- var implementors = Object.fromEntries([["iceberg",[["impl !<a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\"
title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a
class=\"struct\"
href=\"iceberg/arrow/partition_value_calculator/struct.PartitionValueCalculator.html\"
title=\"struct
iceberg::arrow::partition_value_calculator::PartitionValueCalculator\">PartitionValueCalculator</a>",1,["iceberg::arrow::partiti
[...]
+ var implementors = Object.fromEntries([["iceberg",[["impl !<a
class=\"trait\"
href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\"
title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a
class=\"struct\"
href=\"iceberg/arrow/partition_value_calculator/struct.PartitionValueCalculator.html\"
title=\"struct
iceberg::arrow::partition_value_calculator::PartitionValueCalculator\">PartitionValueCalculator</a>",1,["iceberg::arrow::partiti
[...]
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()
-//{"start":57,"fragment_lengths":[61317,437,812,1194,432,6957,873,1170,2757,416,426,1559,419]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[61317,437,812,1194,432,6957,873,1170,2757,824,426,1559,419]}
\ No newline at end of file