You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by ko...@apache.org on 2025/12/16 10:03:18 UTC

(opendal) branch split-opendal-raw-tests-module created (now 6086a6084)

This is an automated email from the ASF dual-hosted git repository.

koushiro pushed a change to branch split-opendal-raw-tests-module
in repository https://gitbox.apache.org/repos/asf/opendal.git


      at 6086a6084 refactor: split opendal_core::raw::tests module into a separate crate

This branch includes the following new commits:

     new 6086a6084 refactor: split opendal_core::raw::tests module into a separate crate

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(opendal) 01/01: refactor: split opendal_core::raw::tests module into a separate crate

Posted by ko...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

koushiro pushed a commit to branch split-opendal-raw-tests-module
in repository https://gitbox.apache.org/repos/asf/opendal.git

commit 6086a6084934358b8f1abe9e0e810e3d4cc0796e
Author: koushiro <ko...@gmail.com>
AuthorDate: Tue Dec 16 18:03:07 2025 +0800

    refactor: split opendal_core::raw::tests module into a separate crate
---
 core/Cargo.lock                                    | 15 +++++++++++++-
 core/Cargo.toml                                    | 10 +++++----
 core/benches/ops/read.rs                           |  4 ++--
 core/benches/ops/utils.rs                          |  2 +-
 core/benches/ops/write.rs                          |  4 ++--
 core/benches/vs_s3/src/main.rs                     |  2 +-
 core/core/Cargo.toml                               | 20 ------------------
 core/core/src/raw/mod.rs                           |  2 --
 .../src/main.rs                                    |  2 +-
 core/examples/basic/src/main.rs                    |  2 +-
 core/examples/concurrent-upload/src/main.rs        |  2 +-
 core/examples/multipart-upload/src/main.rs         |  2 +-
 core/fuzz/fuzz_reader.rs                           |  8 ++++----
 core/fuzz/fuzz_writer.rs                           |  8 ++++----
 core/src/lib.rs                                    |  3 +++
 core/testkit/Cargo.toml                            | 24 ++++++++++++++++++++++
 .../src/raw/tests/mod.rs => testkit/src/lib.rs}    |  2 +-
 core/{core/src/raw/tests => testkit/src}/read.rs   |  3 +--
 core/{core/src/raw/tests => testkit/src}/utils.rs  |  4 +++-
 core/{core/src/raw/tests => testkit/src}/write.rs  |  0
 core/tests/behavior/main.rs                        |  4 ++--
 core/tests/behavior/utils.rs                       |  2 +-
 integrations/object_store/tests/behavior/main.rs   |  2 +-
 integrations/object_store/tests/behavior/utils.rs  |  2 +-
 24 files changed, 75 insertions(+), 54 deletions(-)

diff --git a/core/Cargo.lock b/core/Cargo.lock
index 6350dbe6e..2b33210c3 100644
--- a/core/Cargo.lock
+++ b/core/Cargo.lock
@@ -5577,6 +5577,7 @@ dependencies = [
  "opendal-service-sqlite",
  "opendal-service-tikv",
  "opendal-service-vercel-blob",
+ "opendal-testkit",
  "opentelemetry",
  "opentelemetry-otlp",
  "opentelemetry_sdk",
@@ -5630,7 +5631,6 @@ dependencies = [
  "criterion",
  "ctor",
  "divan",
- "dotenvy",
  "etcd-client",
  "fastpool",
  "flume",
@@ -6256,6 +6256,19 @@ dependencies = [
  "tokio",
 ]
 
+[[package]]
+name = "opendal-testkit"
+version = "0.55.0"
+dependencies = [
+ "bytes",
+ "dotenvy",
+ "opendal-core",
+ "rand 0.8.5",
+ "sha2",
+ "tokio",
+ "uuid",
+]
+
 [[package]]
 name = "openssh"
 version = "0.11.6"
diff --git a/core/Cargo.toml b/core/Cargo.toml
index 870af8ad1..259a21fa1 100644
--- a/core/Cargo.toml
+++ b/core/Cargo.toml
@@ -19,13 +19,14 @@
 default-members = [".", "core"]
 members = [
   ".",
+  "benches/vs_*",
   "core",
+  "edge/*",
   "examples/*",
   "fuzz",
-  "edge/*",
-  "benches/vs_*",
-  "services/*",
   "layers/*",
+  "services/*",
+  "testkit",
 ]
 
 [workspace.package]
@@ -163,7 +164,7 @@ services-vercel-blob = ["dep:opendal-service-vercel-blob"]
 services-webdav = ["opendal-core/services-webdav"]
 services-webhdfs = ["opendal-core/services-webhdfs"]
 services-yandex-disk = ["opendal-core/services-yandex-disk"]
-tests = ["opendal-core/tests"]
+tests = ["opendal-testkit"]
 
 [lib]
 bench = false
@@ -185,6 +186,7 @@ required-features = ["tests"]
 
 [dependencies]
 opendal-core = { path = "core", version = "0.55.0", default-features = false }
+opendal-testkit = { path = "testkit", version = "0.55.0", optional = true }
 opendal-layer-async-backtrace = { path = "layers/async-backtrace", version = "0.55.0", optional = true, default-features = false }
 opendal-layer-await-tree = { path = "layers/await-tree", version = "0.55.0", optional = true, default-features = false }
 opendal-layer-capability-check = { path = "layers/capability-check", version = "0.55.0", optional = true, default-features = false }
diff --git a/core/benches/ops/read.rs b/core/benches/ops/read.rs
index ba9517fcd..f4cbfac7c 100644
--- a/core/benches/ops/read.rs
+++ b/core/benches/ops/read.rs
@@ -17,8 +17,8 @@
 
 use divan::Bencher;
 use divan::counter::BytesCount;
-use opendal::raw::tests::TEST_RUNTIME;
-use opendal::raw::tests::init_test_service;
+use opendal::tests::TEST_RUNTIME;
+use opendal::tests::init_test_service;
 use rand::prelude::*;
 use size::Size;
 
diff --git a/core/benches/ops/utils.rs b/core/benches/ops/utils.rs
index 39947835a..3b3adc1b3 100644
--- a/core/benches/ops/utils.rs
+++ b/core/benches/ops/utils.rs
@@ -16,7 +16,7 @@
 // under the License.
 
 use bytes::Bytes;
-use opendal::raw::tests::TEST_RUNTIME;
+use opendal::tests::TEST_RUNTIME;
 use opendal::*;
 use rand::prelude::*;
 
diff --git a/core/benches/ops/write.rs b/core/benches/ops/write.rs
index d1809cd74..a4a50f465 100644
--- a/core/benches/ops/write.rs
+++ b/core/benches/ops/write.rs
@@ -17,8 +17,8 @@
 
 use divan::Bencher;
 use divan::counter::BytesCount;
-use opendal::raw::tests::TEST_RUNTIME;
-use opendal::raw::tests::init_test_service;
+use opendal::tests::TEST_RUNTIME;
+use opendal::tests::init_test_service;
 use rand::prelude::*;
 use size::Size;
 
diff --git a/core/benches/vs_s3/src/main.rs b/core/benches/vs_s3/src/main.rs
index fe1e733f8..2f04808d9 100644
--- a/core/benches/vs_s3/src/main.rs
+++ b/core/benches/vs_s3/src/main.rs
@@ -22,7 +22,7 @@ use aws_config::Region;
 use aws_credential_types::Credentials;
 use criterion::Criterion;
 use opendal::Operator;
-use opendal::raw::tests::TEST_RUNTIME;
+use opendal::tests::TEST_RUNTIME;
 use opendal::services;
 use rand::prelude::*;
 use tokio::io::AsyncReadExt;
diff --git a/core/core/Cargo.toml b/core/core/Cargo.toml
index b6be8bb66..ce97a6d8b 100644
--- a/core/core/Cargo.toml
+++ b/core/core/Cargo.toml
@@ -45,21 +45,6 @@ reqwest-rustls-tls = ["reqwest/rustls-tls"]
 # Enable opendal's blocking support.
 blocking = ["internal-tokio-rt"]
 
-# Build test utils or not.
-#
-# These features are used to control whether to build opendal's test utils.
-# And doesn't have any other effects.
-#
-# You should never enable this feature unless you are developing opendal.
-tests = [
-  "dep:rand",
-  "dep:sha2",
-  "dep:dotenvy",
-  "services-http",
-  "services-memory",
-  "internal-tokio-rt",
-]
-
 # Enable path cache.
 # This is an internal feature, and should not be used by users.
 internal-path-cache = ["dep:moka"]
@@ -152,10 +137,6 @@ tokio = { workspace = true, features = ["macros", "io-util"] }
 url = "2.5"
 uuid = { workspace = true, features = ["serde", "v4"] }
 
-# Test only dependencies
-dotenvy = { version = "0.15", optional = true }
-rand = { workspace = true, optional = true }
-
 # Optional dependencies
 
 # Services
@@ -258,7 +239,6 @@ web-time = { version = "1.1.0" }
 [dev-dependencies]
 criterion = { version = "0.7", features = ["async", "async_tokio"] }
 divan = { version = "0.1" }
-dotenvy = "0.15"
 libtest-mimic = "0.8"
 pretty_assertions = "1"
 rand = { workspace = true }
diff --git a/core/core/src/raw/mod.rs b/core/core/src/raw/mod.rs
index f85f4bf86..11828804e 100644
--- a/core/core/src/raw/mod.rs
+++ b/core/core/src/raw/mod.rs
@@ -83,5 +83,3 @@ pub use atomic_util::*;
 
 // Expose as a pub mod to avoid confusing.
 pub mod oio;
-#[cfg(feature = "tests")]
-pub mod tests;
diff --git a/core/edge/s3_aws_assume_role_with_web_identity/src/main.rs b/core/edge/s3_aws_assume_role_with_web_identity/src/main.rs
index 1b3774c29..0a0982583 100644
--- a/core/edge/s3_aws_assume_role_with_web_identity/src/main.rs
+++ b/core/edge/s3_aws_assume_role_with_web_identity/src/main.rs
@@ -16,7 +16,7 @@
 // under the License.
 
 use opendal::Result;
-use opendal::raw::tests::init_test_service;
+use opendal::tests::init_test_service;
 
 #[tokio::main]
 async fn main() -> Result<()> {
diff --git a/core/examples/basic/src/main.rs b/core/examples/basic/src/main.rs
index 32cf1e302..9ef69e097 100644
--- a/core/examples/basic/src/main.rs
+++ b/core/examples/basic/src/main.rs
@@ -43,7 +43,7 @@ async fn example(op: Operator) -> Result<()> {
 
 #[tokio::main]
 async fn main() -> Result<()> {
-    use opendal::raw::tests::init_test_service;
+    use opendal::tests::init_test_service;
     let op = init_test_service()?.expect("OPENDAL_TEST must be set");
 
     println!("service {:?} has been initialized", op.info());
diff --git a/core/examples/concurrent-upload/src/main.rs b/core/examples/concurrent-upload/src/main.rs
index 376fed05f..60f60b3ed 100644
--- a/core/examples/concurrent-upload/src/main.rs
+++ b/core/examples/concurrent-upload/src/main.rs
@@ -60,7 +60,7 @@ async fn example(op: Operator) -> Result<()> {
 
 #[tokio::main]
 async fn main() -> Result<()> {
-    use opendal::raw::tests::init_test_service;
+    use opendal::tests::init_test_service;
     let op = init_test_service()?.expect("OPENDAL_TEST must be set");
 
     println!("service {:?} has been initialized", op.info());
diff --git a/core/examples/multipart-upload/src/main.rs b/core/examples/multipart-upload/src/main.rs
index 0ec1d89a2..85dd819aa 100644
--- a/core/examples/multipart-upload/src/main.rs
+++ b/core/examples/multipart-upload/src/main.rs
@@ -48,7 +48,7 @@ async fn example(op: Operator) -> Result<()> {
 
 #[tokio::main]
 async fn main() -> Result<()> {
-    use opendal::raw::tests::init_test_service;
+    use opendal::tests::init_test_service;
     let op = init_test_service()?.expect("OPENDAL_TEST must be set");
 
     println!("service {:?} has been initialized", op.info());
diff --git a/core/fuzz/fuzz_reader.rs b/core/fuzz/fuzz_reader.rs
index d7714f947..8cbc1a300 100644
--- a/core/fuzz/fuzz_reader.rs
+++ b/core/fuzz/fuzz_reader.rs
@@ -25,10 +25,10 @@ use libfuzzer_sys::arbitrary::Unstructured;
 use libfuzzer_sys::fuzz_target;
 use opendal::Operator;
 use opendal::Result;
-use opendal::raw::tests::ReadAction;
-use opendal::raw::tests::ReadChecker;
-use opendal::raw::tests::TEST_RUNTIME;
-use opendal::raw::tests::init_test_service;
+use opendal::tests::ReadChecker;
+use opendal::tests::TEST_RUNTIME;
+use opendal::tests::init_test_service;
+use opendal::tests::ReadAction;
 
 const MAX_DATA_SIZE: usize = 16 * 1024 * 1024;
 
diff --git a/core/fuzz/fuzz_writer.rs b/core/fuzz/fuzz_writer.rs
index aa3ed5815..266d1ec6b 100644
--- a/core/fuzz/fuzz_writer.rs
+++ b/core/fuzz/fuzz_writer.rs
@@ -22,10 +22,10 @@ use libfuzzer_sys::arbitrary::Unstructured;
 use libfuzzer_sys::fuzz_target;
 use opendal::Operator;
 use opendal::Result;
-use opendal::raw::tests::TEST_RUNTIME;
-use opendal::raw::tests::WriteAction;
-use opendal::raw::tests::WriteChecker;
-use opendal::raw::tests::init_test_service;
+use opendal::tests::TEST_RUNTIME;
+use opendal::tests::WriteAction;
+use opendal::tests::WriteChecker;
+use opendal::tests::init_test_service;
 
 const MAX_DATA_SIZE: usize = 16 * 1024 * 1024;
 
diff --git a/core/src/lib.rs b/core/src/lib.rs
index 2b9bf1a8c..7dd0006f5 100644
--- a/core/src/lib.rs
+++ b/core/src/lib.rs
@@ -24,6 +24,9 @@
 
 pub use opendal_core::*;
 
+#[cfg(feature = "tests")]
+pub use opendal_testkit as tests;
+
 /// Re-export of service implementations.
 pub mod services {
     pub use opendal_core::services::*;
diff --git a/core/testkit/Cargo.toml b/core/testkit/Cargo.toml
new file mode 100644
index 000000000..5e520adc6
--- /dev/null
+++ b/core/testkit/Cargo.toml
@@ -0,0 +1,24 @@
+[package]
+name = "opendal-testkit"
+description = "Test harness and utilities for Apache OpenDAL"
+publish = false
+
+authors = { workspace = true }
+edition = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+repository = { workspace = true }
+rust-version = { workspace = true }
+version = { workspace = true }
+
+[package.metadata.docs.rs]
+all-features = true
+
+[dependencies]
+bytes = { workspace = true }
+dotenvy = "0.15"
+opendal-core = { path = "../core", version = "0.55.0", default-features = false }
+rand = { workspace = true }
+sha2 = { workspace = true }
+tokio = { workspace = true, features = ["rt-multi-thread"] }
+uuid = { workspace = true }
diff --git a/core/core/src/raw/tests/mod.rs b/core/testkit/src/lib.rs
similarity index 95%
rename from core/core/src/raw/tests/mod.rs
rename to core/testkit/src/lib.rs
index 9f59559ce..bb2295ec1 100644
--- a/core/core/src/raw/tests/mod.rs
+++ b/core/testkit/src/lib.rs
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-//! Utilities for opendal testing.
+//! Test harness and utilities for Apache OpenDAL.
 
 mod read;
 pub use read::ReadAction;
diff --git a/core/core/src/raw/tests/read.rs b/core/testkit/src/read.rs
similarity index 99%
rename from core/core/src/raw/tests/read.rs
rename to core/testkit/src/read.rs
index fbaf5e36a..44ea13609 100644
--- a/core/core/src/raw/tests/read.rs
+++ b/core/testkit/src/read.rs
@@ -16,13 +16,12 @@
 // under the License.
 
 use bytes::Bytes;
+use opendal_core::*;
 use rand::RngCore;
 use rand::thread_rng;
 use sha2::Digest;
 use sha2::Sha256;
 
-use crate::*;
-
 /// ReadAction represents a read action.
 #[derive(Debug, Clone, Copy, Eq, PartialEq)]
 pub enum ReadAction {
diff --git a/core/core/src/raw/tests/utils.rs b/core/testkit/src/utils.rs
similarity index 97%
rename from core/core/src/raw/tests/utils.rs
rename to core/testkit/src/utils.rs
index 81f75ac14..736a8597f 100644
--- a/core/core/src/raw/tests/utils.rs
+++ b/core/testkit/src/utils.rs
@@ -19,7 +19,9 @@ use std::collections::HashMap;
 use std::env;
 use std::sync::LazyLock;
 
-use crate::*;
+use opendal_core::Operator;
+use opendal_core::Result;
+use opendal_core::layers;
 
 /// TEST_RUNTIME is the runtime used for running tests.
 pub static TEST_RUNTIME: LazyLock<tokio::runtime::Runtime> = LazyLock::new(|| {
diff --git a/core/core/src/raw/tests/write.rs b/core/testkit/src/write.rs
similarity index 100%
rename from core/core/src/raw/tests/write.rs
rename to core/testkit/src/write.rs
diff --git a/core/tests/behavior/main.rs b/core/tests/behavior/main.rs
index a9ed00e0f..fd31fa2dc 100644
--- a/core/tests/behavior/main.rs
+++ b/core/tests/behavior/main.rs
@@ -34,8 +34,8 @@ mod async_write;
 // External dependencies
 use libtest_mimic::Arguments;
 use libtest_mimic::Trial;
-use opendal::raw::tests::TEST_RUNTIME;
-use opendal::raw::tests::init_test_service;
+use opendal::tests::TEST_RUNTIME;
+use opendal::tests::init_test_service;
 use opendal::*;
 
 pub static TEST_FIXTURE: Fixture = Fixture::new();
diff --git a/core/tests/behavior/utils.rs b/core/tests/behavior/utils.rs
index 2e2d4d41e..c4a5440f0 100644
--- a/core/tests/behavior/utils.rs
+++ b/core/tests/behavior/utils.rs
@@ -21,8 +21,8 @@ use std::sync::Mutex;
 use futures::Future;
 use libtest_mimic::Failed;
 use libtest_mimic::Trial;
-use opendal::raw::tests::TEST_RUNTIME;
 use opendal::raw::*;
+use opendal::tests::TEST_RUNTIME;
 use opendal::*;
 use rand::distributions::uniform::SampleRange;
 use rand::prelude::*;
diff --git a/integrations/object_store/tests/behavior/main.rs b/integrations/object_store/tests/behavior/main.rs
index 1429eb5f5..371dad6c8 100644
--- a/integrations/object_store/tests/behavior/main.rs
+++ b/integrations/object_store/tests/behavior/main.rs
@@ -23,7 +23,7 @@ mod utils;
 use libtest_mimic::Arguments;
 
 fn main() -> anyhow::Result<()> {
-    let Ok(Some(op)) = opendal::raw::tests::init_test_service() else {
+    let Ok(Some(op)) = opendal::tests::init_test_service() else {
         return Ok(());
     };
     let store = object_store_opendal::OpendalStore::new(op);
diff --git a/integrations/object_store/tests/behavior/utils.rs b/integrations/object_store/tests/behavior/utils.rs
index 96b58e4e8..f295fedb0 100644
--- a/integrations/object_store/tests/behavior/utils.rs
+++ b/integrations/object_store/tests/behavior/utils.rs
@@ -18,7 +18,7 @@
 use libtest_mimic::{Failed, Trial};
 use object_store_opendal::OpendalStore;
 use opendal::raw::MaybeSend;
-use opendal::raw::tests::TEST_RUNTIME;
+use opendal::tests::TEST_RUNTIME;
 use std::future::Future;
 
 pub fn build_trail<F, Fut>(name: &str, store: &OpendalStore, f: F) -> Trial