aboutsummaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-10-04 13:17:58 +0000
committerArne Juul <arnej@yahoo-inc.com>2018-10-07 17:29:36 +0000
commit1ebe812b587246af7c825b055be055d56e6b5d77 (patch)
treede81ee28e3c080d546bde9179fca63b19e6f9c57 /metrics
parent16c8199bfee0e9e27acef98700fd516451787ceb (diff)
use repo for tags also
Diffstat (limited to 'metrics')
-rw-r--r--metrics/src/tests/metricmanagertest.cpp4
-rw-r--r--metrics/src/vespa/metrics/jsonwriter.cpp4
-rw-r--r--metrics/src/vespa/metrics/metric.cpp14
-rw-r--r--metrics/src/vespa/metrics/metric.h8
-rw-r--r--metrics/src/vespa/metrics/repo.cpp4
-rw-r--r--metrics/src/vespa/metrics/repo.h4
-rw-r--r--metrics/src/vespa/metrics/xmlwriter.cpp4
7 files changed, 23 insertions, 19 deletions
diff --git a/metrics/src/tests/metricmanagertest.cpp b/metrics/src/tests/metricmanagertest.cpp
index f5d3a77d671..8424d3be3fe 100644
--- a/metrics/src/tests/metricmanagertest.cpp
+++ b/metrics/src/tests/metricmanagertest.cpp
@@ -943,8 +943,8 @@ public:
CPPUNIT_ASSERT_EQUAL_MSG(_jsonText, dimensions.size(),
nthMetricDimensionCount(metricIndex));
for (auto& dim : dimensions) {
- CPPUNIT_ASSERT_EQUAL_MSG(_jsonText, std::string(dim.value),
- nthMetricDimension(metricIndex, dim.key));
+ CPPUNIT_ASSERT_EQUAL_MSG(_jsonText, std::string(dim.value()),
+ nthMetricDimension(metricIndex, dim.key()));
}
}
};
diff --git a/metrics/src/vespa/metrics/jsonwriter.cpp b/metrics/src/vespa/metrics/jsonwriter.cpp
index 6ea585f0635..d890d725c8a 100644
--- a/metrics/src/vespa/metrics/jsonwriter.cpp
+++ b/metrics/src/vespa/metrics/jsonwriter.cpp
@@ -70,8 +70,8 @@ void
JsonWriter::writeDimensions(const DimensionSet& dimensions)
{
for (const auto& dimension : dimensions) {
- if (!dimension.key.empty() && !dimension.value.empty()) {
- _stream << dimension.key << dimension.value;
+ if (!dimension.key().empty() && !dimension.value().empty()) {
+ _stream << dimension.key() << dimension.value();
}
}
}
diff --git a/metrics/src/vespa/metrics/metric.cpp b/metrics/src/vespa/metrics/metric.cpp
index 355957d11da..784492de7d2 100644
--- a/metrics/src/vespa/metrics/metric.cpp
+++ b/metrics/src/vespa/metrics/metric.cpp
@@ -52,8 +52,8 @@ namespace {
vespalib::Regexp Metric::_namePattern(namePattern);
Tag::Tag(vespalib::stringref k, vespalib::stringref v)
- : key(k),
- value(v)
+ : _key(Repo::tagKeyId(k)),
+ _value(Repo::tagValueId(v))
{ }
Tag::Tag(const Tag &) = default;
@@ -111,7 +111,7 @@ Metric::~Metric() { }
bool
Metric::tagsSpecifyAtLeastOneDimension(const Tags& tags) const
{
- auto hasNonEmptyTagValue = [](const Tag& t) { return !t.value.empty(); };
+ auto hasNonEmptyTagValue = [](const Tag& t) { return !t.value().empty(); };
return std::any_of(tags.begin(), tags.end(), hasNonEmptyTagValue);
}
@@ -131,7 +131,7 @@ void
Metric::sortTagsInDeterministicOrder()
{
std::sort(_tags.begin(), _tags.end(), [](const Tag& a, const Tag& b) {
- return a.key < b.key;
+ return a.key() < b.key();
});
}
@@ -143,13 +143,13 @@ Metric::createMangledNameWithDimensions() const
const size_t sz = _tags.size();
for (size_t i = 0; i < sz; ++i) {
const Tag& dimension(_tags[i]);
- if (dimension.value.empty()) {
+ if (dimension.value().empty()) {
continue;
}
if (i != 0) {
s << ',';
}
- s << dimension.key << ':' << dimension.value;
+ s << dimension.key() << ':' << dimension.value();
}
s << '}';
return s.str();
@@ -213,7 +213,7 @@ bool
Metric::hasTag(const String& tag) const
{
return std::find_if(_tags.begin(), _tags.end(), [&](const Tag& t) {
- return t.key == tag;
+ return t.key() == tag;
}) != _tags.end();
}
diff --git a/metrics/src/vespa/metrics/metric.h b/metrics/src/vespa/metrics/metric.h
index c1adc15c28d..3ea6e7a4854 100644
--- a/metrics/src/vespa/metrics/metric.h
+++ b/metrics/src/vespa/metrics/metric.h
@@ -84,8 +84,8 @@ struct MetricVisitor {
*/
struct Tag
{
- vespalib::string key;
- vespalib::string value;
+ const vespalib::string& key() const { return Repo::tagKey(_key); }
+ const vespalib::string& value() const { return Repo::tagValue(_value); }
Tag(vespalib::stringref k, vespalib::stringref v);
Tag(const Tag &);
@@ -93,6 +93,10 @@ struct Tag
Tag(Tag &&) = default;
Tag & operator = (Tag &&) = default;
~Tag();
+
+private:
+ TagKeyId _key;
+ TagValueId _value;
};
class Metric : public vespalib::Printable
diff --git a/metrics/src/vespa/metrics/repo.cpp b/metrics/src/vespa/metrics/repo.cpp
index 0ea964b19b7..a43eec8babe 100644
--- a/metrics/src/vespa/metrics/repo.cpp
+++ b/metrics/src/vespa/metrics/repo.cpp
@@ -29,14 +29,14 @@ Repo::descriptionId(const vespalib::string &name)
}
TagKeyId
-Repo::tagKey(const vespalib::string &name)
+Repo::tagKeyId(const vespalib::string &name)
{
size_t id = tagKeys.resolve(name);
return TagKeyId(id);
}
TagValueId
-Repo::tagValue(const vespalib::string &value)
+Repo::tagValueId(const vespalib::string &value)
{
size_t id = tagValues.resolve(value);
return TagValueId(id);
diff --git a/metrics/src/vespa/metrics/repo.h b/metrics/src/vespa/metrics/repo.h
index ddfeaf3f1b6..3e59b4550d9 100644
--- a/metrics/src/vespa/metrics/repo.h
+++ b/metrics/src/vespa/metrics/repo.h
@@ -19,8 +19,8 @@ using TagValueId = vespalib::metrics::Handle<TagValueIdTag>;
struct Repo {
static MetricNameId metricId(const vespalib::string &name);
static DescriptionId descriptionId(const vespalib::string &name);
- static TagKeyId tagKey(const vespalib::string &name);
- static TagValueId tagValue(const vespalib::string &value);
+ static TagKeyId tagKeyId(const vespalib::string &name);
+ static TagValueId tagValueId(const vespalib::string &value);
static const vespalib::string& metricName(MetricNameId id);
static const vespalib::string& description(DescriptionId id);
diff --git a/metrics/src/vespa/metrics/xmlwriter.cpp b/metrics/src/vespa/metrics/xmlwriter.cpp
index 197ffdd1e3d..90b25621cf8 100644
--- a/metrics/src/vespa/metrics/xmlwriter.cpp
+++ b/metrics/src/vespa/metrics/xmlwriter.cpp
@@ -98,9 +98,9 @@ XmlWriter::printCommonXmlParts(const Metric& metric) const
if (_verbosity >= 3 && tags.size() > 0) {
std::ostringstream ost;
// XXX print tag values as well
- ost << tags[0].key;
+ ost << tags[0].key();
for (uint32_t i=1; i<tags.size(); ++i) {
- ost << "," << tags[i].key;
+ ost << "," << tags[i].key();
}
_xos << XmlAttribute("tags", ost.str());
}