| 17 | REGISTER_FUNCTION_NONCONST(Internal, DummyCheck, &DummyCheckTask::ScriptFunc, "checkable:cr:producer:resolvedMacros:useResolvedMacros"); |
| 18 | |
| 19 | void DummyCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr, |
| 20 | const WaitGroup::Ptr& producer, const Dictionary::Ptr& resolvedMacros, bool useResolvedMacros) |
| 21 | { |
| 22 | REQUIRE_NOT_NULL(checkable); |
| 23 | REQUIRE_NOT_NULL(cr); |
| 24 | |
| 25 | CheckCommand::Ptr command = CheckCommand::ExecuteOverride ? CheckCommand::ExecuteOverride : checkable->GetCheckCommand(); |
| 26 | |
| 27 | Host::Ptr host; |
| 28 | Service::Ptr service; |
| 29 | tie(host, service) = GetHostService(checkable); |
| 30 | |
| 31 | MacroProcessor::ResolverList resolvers; |
| 32 | |
| 33 | if (MacroResolver::OverrideMacros) |
| 34 | resolvers.emplace_back("override", MacroResolver::OverrideMacros); |
| 35 | |
| 36 | if (service) |
| 37 | resolvers.emplace_back("service", service); |
| 38 | resolvers.emplace_back("host", host); |
| 39 | resolvers.emplace_back("command", command); |
| 40 | |
| 41 | int dummyState = MacroProcessor::ResolveMacros("$dummy_state$", resolvers, checkable->GetLastCheckResult(), |
| 42 | nullptr, MacroProcessor::EscapeCallback(), resolvedMacros, useResolvedMacros); |
| 43 | |
| 44 | String dummyText = MacroProcessor::ResolveMacros("$dummy_text$", resolvers, checkable->GetLastCheckResult(), |
| 45 | nullptr, MacroProcessor::EscapeCallback(), resolvedMacros, useResolvedMacros); |
| 46 | |
| 47 | if (resolvedMacros && !useResolvedMacros) |
| 48 | return; |
| 49 | |
| 50 | /* Parse output and performance data. */ |
| 51 | std::pair<String, String> co = PluginUtility::ParseCheckOutput(dummyText); |
| 52 | |
| 53 | double now = Utility::GetTime(); |
| 54 | String commandName = command->GetName(); |
| 55 | |
| 56 | if (Checkable::ExecuteCommandProcessFinishedHandler) { |
| 57 | ProcessResult pr; |
| 58 | pr.PID = -1; |
| 59 | pr.Output = dummyText; |
| 60 | pr.ExecutionStart = now; |
| 61 | pr.ExecutionEnd = now; |
| 62 | pr.ExitStatus = dummyState; |
| 63 | |
| 64 | Checkable::ExecuteCommandProcessFinishedHandler(commandName, pr); |
| 65 | } else { |
| 66 | cr->SetOutput(co.first); |
| 67 | cr->SetPerformanceData(PluginUtility::SplitPerfdata(co.second)); |
| 68 | cr->SetState(PluginUtility::ExitStatusToState(dummyState)); |
| 69 | cr->SetExitStatus(dummyState); |
| 70 | cr->SetExecutionStart(now); |
| 71 | cr->SetExecutionEnd(now); |
| 72 | cr->SetCommand(commandName); |
| 73 | |
| 74 | checkable->ProcessCheckResult(cr, producer); |
| 75 | } |
| 76 | } |
nothing calls this directly
no test coverage detected