No public description PiperOrigin-RevId: 940045960
diff --git a/centipede/BUILD b/centipede/BUILD index 37d2a1d..efab7bf 100644 --- a/centipede/BUILD +++ b/centipede/BUILD
@@ -982,6 +982,7 @@ ], hdrs = ["engine_worker_abi.h"], deps = [ + ":engine_abi", ":execution_metadata", ":feature", ":runner_request", @@ -990,7 +991,6 @@ "@abseil-cpp//absl/base:nullability", "@abseil-cpp//absl/random", "@abseil-cpp//absl/random:bit_gen_ref", - "@com_google_fuzztest//centipede:engine_abi", "@com_google_fuzztest//common:defs", ], )
diff --git a/centipede/engine_worker.cc b/centipede/engine_worker.cc index 19886f8..01030d1 100644 --- a/centipede/engine_worker.cc +++ b/centipede/engine_worker.cc
@@ -695,9 +695,9 @@ return test_name; } -FuzzTestWorkerStatus WorkerMaybeRun(const FuzzTestAdapterManager& manager) { +FuzzTestWorkerStatus WorkerRun(const FuzzTestAdapterManager& manager) { const auto& flags = GetWorkerFlags(); - if (!flags.present) return kFuzzTestWorkerNotRequired; + WorkerCheck(flags.present, "worker flags must present"); if (HasWorkerSwitchFlag("dump_configuration")) { return kFuzzTestWorkerSuccess; @@ -786,11 +786,21 @@ } // namespace fuzztest::internal +namespace { + +using ::fuzztest::internal::GetWorkerFlags; using ::fuzztest::internal::WorkerCheck; -using ::fuzztest::internal::WorkerMaybeRun; +using ::fuzztest::internal::WorkerRun; + +} // namespace + +int FuzzTestWorkerIsRequired() { return GetWorkerFlags().present; } FuzzTestWorkerStatus FuzzTestWorkerMaybeRun( const FuzzTestAdapterManager* manager) { WorkerCheck(manager != nullptr, "manager must not be nullptr"); - return WorkerMaybeRun(*manager); + if (!FuzzTestWorkerIsRequired()) { + return kFuzzTestWorkerNotRequired; + } + return WorkerRun(*manager); }
diff --git a/centipede/engine_worker_abi.h b/centipede/engine_worker_abi.h index e435742..2a98089 100644 --- a/centipede/engine_worker_abi.h +++ b/centipede/engine_worker_abi.h
@@ -29,7 +29,7 @@ #endif typedef enum { - kFuzzTestWorkerSuccess = 0, // Test should finish with a success + kFuzzTestWorkerSuccess = 0, // Test should finish with a success. kFuzzTestWorkerFailure, // Test should finish with a failure. kFuzzTestWorkerNotRequired, // Test should continue with controller commands. } FuzzTestWorkerStatus; @@ -38,6 +38,10 @@ FuzzTestWorkerStatus FuzzTestWorkerMaybeRun( const FuzzTestAdapterManager* manager); +// Returns whether the current process is running as a FuzzTest worker - +// non-zero means yes and zero means no. It can be called outside of tests. +int FuzzTestWorkerIsRequired(); + #ifdef __cplusplus } // extern "C" #endif