diff --git a/test/fuzztest/bundleactiveobserver_fuzzer/BUILD.gn b/test/fuzztest/bundleactiveobserver_fuzzer/BUILD.gn index 663e6120065f3065edf4c6a544bcb9247555dd76..06693f223d1767d0a8d3513176c8c6e3d8604f7d 100644 --- a/test/fuzztest/bundleactiveobserver_fuzzer/BUILD.gn +++ b/test/fuzztest/bundleactiveobserver_fuzzer/BUILD.gn @@ -36,6 +36,8 @@ ohos_fuzztest("BundleActiveObserverFuzzTest") { fuzz_config_file = "${usage_statistics_path}/test/fuzztest/bundleactiveobserver_fuzzer" configs = [ ":module_private_config" ] + resource_config_file = + "${usage_statistics_path}/test/resource/deviceUsage/deviceUsageConfig.xml" cflags = [ "-g", "-O0", diff --git a/test/fuzztest/bundleactiveobserver_fuzzer/bundleactiveobserver_fuzzer.cpp b/test/fuzztest/bundleactiveobserver_fuzzer/bundleactiveobserver_fuzzer.cpp index 3525909af2fa1f8d232f9041e0282ad271b49306..5dd3440d4fb07076e9ac8cad18a881d6a61f832a 100644 --- a/test/fuzztest/bundleactiveobserver_fuzzer/bundleactiveobserver_fuzzer.cpp +++ b/test/fuzztest/bundleactiveobserver_fuzzer/bundleactiveobserver_fuzzer.cpp @@ -22,6 +22,7 @@ #include "iservice_registry.h" #include "bundle_active_service.h" #include "iapp_group_callback.h" +#include "bundle_active_config_reader.h" namespace OHOS { namespace DeviceUsageStats { @@ -55,6 +56,39 @@ namespace DeviceUsageStats { DelayedSingleton::GetInstance()->IsBundleUsePeriod(result, inputBundlName, userId); return true; } + + bool BundleActiveServiceStartAndStopFuzzTest(const char* data, size_t size) + { + DelayedSingleton::GetInstance()->OnStart(); + DelayedSingleton::GetInstance()->InitNecessaryState(); + DelayedSingleton::GetInstance()->OnStop(); + return true; + } + + bool BundleActiveConfigReaderFuzzTest(const char* data, size_t size) + { + DelayedSingleton::GetInstance()->GetApplicationUsePeriodicallyConfig(); + return true; + } + + bool BundleActiveServiceDumpFuzzTest(const char* data, size_t size) + { + int32_t fd = static_cast(GetU32Data(data)); + std::vector args; + args = {to_utf16(std::to_string(GetU32Data(data)))}; + DelayedSingleton::GetInstance()->Dump(fd, args); + DelayedSingleton::GetInstance()->AllowDump(); + + std::vector dumpOption = {std::to_string(GetU32Data(data))}; + std::vector dumpInfo = {std::to_string(GetU32Data(data))}; + DelayedSingleton::GetInstance()->ShellDump(dumpOption, dumpInfo); + DelayedSingleton::GetInstance()->DumpEvents(dumpOption, dumpInfo); + DelayedSingleton::GetInstance()->DumpPackageUsage(dumpOption, dumpInfo); + DelayedSingleton::GetInstance()->DumpModuleUsage(dumpOption, dumpInfo); + std::string result = std::to_string(GetU32Data(data)); + DelayedSingleton::GetInstance()->DumpUsage(result); + return true; + } } // namespace DeviceUsageStats } // namespace OHOS @@ -82,6 +116,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) } OHOS::DeviceUsageStats::DoSomethingInterestingWithMyAPI(ch, size); + OHOS::DeviceUsageStats::BundleActiveServiceStartAndStopFuzzTest(ch, size); + OHOS::DeviceUsageStats::BundleActiveConfigReaderFuzzTest(ch, size); + OHOS::DeviceUsageStats::BundleActiveServiceDumpFuzzTest(ch, size); free(ch); ch = nullptr; return 0; diff --git a/test/resource/deviceUsage/deviceUsageConfig.xml b/test/resource/deviceUsage/deviceUsageConfig.xml new file mode 100644 index 0000000000000000000000000000000000000000..2dacadb0ee22ee5a03baee42aaf3061cd45f245f --- /dev/null +++ b/test/resource/deviceUsage/deviceUsageConfig.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/test/resource/deviceUsage/parseconfig/device_usage_statistics_config.json b/test/resource/deviceUsage/parseconfig/device_usage_statistics_config.json new file mode 100644 index 0000000000000000000000000000000000000000..31145c3f472e6a23679a504f84c33042dd306549 --- /dev/null +++ b/test/resource/deviceUsage/parseconfig/device_usage_statistics_config.json @@ -0,0 +1,7 @@ +{ + "application_use_periodically": { + "MinUseTimes" : 5, + "MaxUseTimes" : 15, + "MinUseDays" : 6 + } +} \ No newline at end of file