You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2023/10/18 13:25:46 UTC

[incubator-opendal] 01/01: refactor(core/fuzz): Migrate to OPENDANL_TEST

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

xuanwo pushed a commit to branch fix-fuzz
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git

commit 7bb17bf04f9288a8a71b503c7f0d8bb75429d795
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Wed Oct 18 21:25:22 2023 +0800

    refactor(core/fuzz): Migrate to OPENDANL_TEST
    
    Signed-off-by: Xuanwo <gi...@xuanwo.io>
---
 core/fuzz/README.md      |  4 ++--
 core/fuzz/fuzz_reader.rs |  2 +-
 core/fuzz/fuzz_writer.rs |  2 +-
 core/fuzz/utils.rs       | 24 ++++++++----------------
 4 files changed, 12 insertions(+), 20 deletions(-)

diff --git a/core/fuzz/README.md b/core/fuzz/README.md
index a5b9add79..fc7d33b58 100644
--- a/core/fuzz/README.md
+++ b/core/fuzz/README.md
@@ -11,14 +11,14 @@ To run the fuzz tests, please copy the `.env.example`, which is at project root,
 Take `fs` for example, we need to change to enable fuzz test on `fs` on `/tmp`.
 
 ```dotenv
-OPENDAL_FS_TEST=false
+OPENDAL_TEST=fs
 OPENDAL_FS_ROOT=/path/to/dir
 ```
 
 into
 
 ```dotenv
-OPENDAL_FS_TEST=on
+OPENDAL_TEST=fs
 OPENDAL_FS_ROOT=/tmp
 ```
 
diff --git a/core/fuzz/fuzz_reader.rs b/core/fuzz/fuzz_reader.rs
index 7b13207bf..d6eb19c1c 100644
--- a/core/fuzz/fuzz_reader.rs
+++ b/core/fuzz/fuzz_reader.rs
@@ -257,7 +257,7 @@ fuzz_target!(|input: FuzzInput| {
 
     let runtime = tokio::runtime::Runtime::new().expect("init runtime must succeed");
 
-    for op in utils::init_services() {
+    if let Some(op) = utils::init_service() {
         runtime.block_on(async {
             fuzz_reader(op, input.clone())
                 .await
diff --git a/core/fuzz/fuzz_writer.rs b/core/fuzz/fuzz_writer.rs
index ff1eb0bdb..edd25ac26 100644
--- a/core/fuzz/fuzz_writer.rs
+++ b/core/fuzz/fuzz_writer.rs
@@ -128,7 +128,7 @@ fuzz_target!(|input: FuzzInput| {
 
     let runtime = tokio::runtime::Runtime::new().expect("init runtime must succeed");
 
-    for op in utils::init_services() {
+    if let Some(op) = utils::init_service() {
         runtime.block_on(async {
             fuzz_writer(op, input.clone())
                 .await
diff --git a/core/fuzz/utils.rs b/core/fuzz/utils.rs
index 8a6501843..37598fdb3 100644
--- a/core/fuzz/utils.rs
+++ b/core/fuzz/utils.rs
@@ -16,12 +16,18 @@
 // under the License.
 
 use std::env;
+use std::str::FromStr;
 
 use opendal::Operator;
 use opendal::Scheme;
 
-fn service(scheme: Scheme) -> Option<Operator> {
-    let test_key = format!("opendal_{}_test", scheme).to_uppercase();
+pub fn init_service() -> Option<Operator> {
+    let scheme = if let Ok(v) = env::var("OPENDAL_TEST") {
+        v
+    } else {
+        return None;
+    };
+    let scheme = Scheme::from_str(&scheme).unwrap();
 
     let args: Vec<String> = env::args().collect();
     if args[0].ends_with(&scheme.to_string()) {
@@ -29,10 +35,6 @@ fn service(scheme: Scheme) -> Option<Operator> {
         let _ = dotenvy::from_filename_override(format!(".{scheme}.env"));
     }
 
-    if env::var(test_key).unwrap_or_default() != "on" {
-        return None;
-    }
-
     let prefix = format!("opendal_{}_", scheme);
     let envs = env::vars()
         .filter_map(move |(k, v)| {
@@ -44,13 +46,3 @@ fn service(scheme: Scheme) -> Option<Operator> {
 
     Some(Operator::via_map(scheme, envs).unwrap_or_else(|_| panic!("init {} must succeed", scheme)))
 }
-
-pub fn init_services() -> Vec<Operator> {
-    let ops = vec![
-        service(Scheme::Memory),
-        service(Scheme::Fs),
-        service(Scheme::S3),
-    ];
-
-    ops.into_iter().flatten().collect()
-}