double base = 1.0;
if (unit == "us") {
- base /= (1000.0 * 1000.0);
+ base /= 1000.0 * 1000.0;
unit = "seconds";
} else if (unit == "ms") {
base /= 1000.0;
if (tokens.size() > 4 && tokens[4] != "U" && tokens[4] != "")
max = Convert::ToDouble(tokens[4]);
- if (base != 1.0) {
- value = value * base;
+ value = value * base;
+
+ if (!warn.IsEmpty())
warn = warn * base;
+
+ if (!crit.IsEmpty())
crit = crit * base;
+
+ if (!min.IsEmpty())
min = min * base;
+
+ if (!max.IsEmpty())
max = max * base;
- }
return make_shared<PerfdataValue>(value, counter, unit, warn, crit, min, max);
}
String str = PluginUtility::FormatPerfdata(pd);
BOOST_CHECK(str == "test=123456B");
+
+ pd = PluginUtility::ParsePerfdata("test=1000ms;200;500");
+ BOOST_CHECK(pd);
+
+ pv = pd->Get("test");
+ BOOST_CHECK(pv);
+
+ BOOST_CHECK(pv->GetValue() == 1);
+ BOOST_CHECK(pv->GetUnit() == "seconds");
+ BOOST_CHECK(pv->GetWarn() == 0.2);
+ BOOST_CHECK(pv->GetCrit() == 0.5);
+
+ pd = PluginUtility::ParsePerfdata("test=1000ms");
+ BOOST_CHECK(pd);
+
+ pv = pd->Get("test");
+ BOOST_CHECK(pv);
+
+ BOOST_CHECK(pv->GetValue() == 1);
+ BOOST_CHECK(pv->GetUnit() == "seconds");
+ BOOST_CHECK(pv->GetCrit() == Empty);
+ BOOST_CHECK(pv->GetWarn() == Empty);
+ BOOST_CHECK(pv->GetMin() == Empty);
+ BOOST_CHECK(pv->GetMax() == Empty);
+
+ str = PluginUtility::FormatPerfdata(pd);
+ BOOST_CHECK(str == "test=1s");
}
BOOST_AUTO_TEST_CASE(warncritminmax)