| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "src/sys/fuzzing/framework/engine/runner.h" |
| |
| #include "src/sys/fuzzing/common/options.h" |
| #include "src/sys/fuzzing/framework/engine/runner-test.h" |
| |
| namespace fuzzing { |
| namespace { |
| |
| TEST_F(RunnerImplTest, AddDefaults) { |
| Options options; |
| runner()->AddDefaults(&options); |
| EXPECT_EQ(options.runs(), kDefaultRuns); |
| EXPECT_EQ(options.max_total_time(), kDefaultMaxTotalTime); |
| EXPECT_EQ(options.seed(), kDefaultSeed); |
| EXPECT_EQ(options.max_input_size(), kDefaultMaxInputSize); |
| EXPECT_EQ(options.mutation_depth(), kDefaultMutationDepth); |
| EXPECT_EQ(options.dictionary_level(), kDefaultDictionaryLevel); |
| EXPECT_EQ(options.detect_exits(), kDefaultDetectExits); |
| EXPECT_EQ(options.detect_leaks(), kDefaultDetectLeaks); |
| EXPECT_EQ(options.run_limit(), kDefaultRunLimit); |
| EXPECT_EQ(options.malloc_exitcode(), kDefaultMallocExitcode); |
| EXPECT_EQ(options.death_exitcode(), kDefaultDeathExitcode); |
| EXPECT_EQ(options.leak_exitcode(), kDefaultLeakExitcode); |
| EXPECT_EQ(options.oom_exitcode(), kDefaultOomExitcode); |
| EXPECT_EQ(options.pulse_interval(), kDefaultPulseInterval); |
| } |
| |
| TEST_F(RunnerImplTest, LoadCorpus) { |
| // In a real fuzzer, the parameters would be supplied by the 'program.args' from the adapter's |
| // component manifest. |
| // |
| // See also: |
| // //src/sys/fuzzing/framework/testing/data/BUILD.gn |
| SetAdapterParameters(std::vector<std::string>({"data/corpus", "--ignored"})); |
| Configure(RunnerTest::DefaultOptions()); |
| // Results are sorted. |
| EXPECT_EQ(runner()->ReadFromCorpus(CorpusType::SEED, 1), Input("bar")); |
| EXPECT_EQ(runner()->ReadFromCorpus(CorpusType::SEED, 2), Input("foo")); |
| } |
| |
| #define RUNNER_TYPE RunnerImpl |
| #define RUNNER_TEST RunnerImplTest |
| #include "src/sys/fuzzing/common/runner-unittest.inc" |
| #undef RUNNER_TYPE |
| #undef RUNNER_TEST |
| |
| TEST_F(RunnerImplTest, MergeSeedError) { MergeSeedError(/* expected */ ZX_ERR_INVALID_ARGS); } |
| |
| TEST_F(RunnerImplTest, Merge) { Merge(/* keep_errors= */ true); } |
| |
| } // namespace |
| } // namespace fuzzing |