diff options
9 files changed, 29 insertions, 14 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateHandler.java index 0d858b66055..f1eb03d88a9 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateHandler.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateHandler.java @@ -235,6 +235,7 @@ public class StateHandler extends AbstractRequestHandler { GaugeMetric gauge = (GaugeMetric) tuple.val; JSONObjectWithLegibleException valueFields = new JSONObjectWithLegibleException(); valueFields.put("average", gauge.getAverage()) + .put("sum", gauge.getSum()) .put("count", gauge.getCount()) .put("last", gauge.getLast()) .put("max", gauge.getMax()) diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/state/StateHandlerTest.java b/container-core/src/test/java/com/yahoo/container/jdisc/state/StateHandlerTest.java index b3a19e77391..d53b189f932 100644 --- a/container-core/src/test/java/com/yahoo/container/jdisc/state/StateHandlerTest.java +++ b/container-core/src/test/java/com/yahoo/container/jdisc/state/StateHandlerTest.java @@ -162,7 +162,8 @@ public class StateHandlerTest extends StateHandlerTestBase { " \"last\": 5,\n" + " \"max\": 5,\n" + " \"min\": 2,\n" + - " \"rate\": 0.013333333333333334\n" + + " \"rate\": 0.013333333333333334,\n" + + " \"sum\": 14\n" + " }\n" + " }\n" + " ]\n" + diff --git a/cppunit-parallelize.py b/cppunit-parallelize.py index b18a171078e..03dbb3abf17 100755 --- a/cppunit-parallelize.py +++ b/cppunit-parallelize.py @@ -20,14 +20,14 @@ def parse_arguments(): return args def take(lst, n): - return [ lst.pop() for i in xrange(n) ] + return [ lst.pop() for i in range(n) ] def chunkify(lst, chunks): lst = copy.copy(lst) - chunk_size = len(lst) / chunks + chunk_size = int(len(lst) / chunks) chunk_surplus = len(lst) % chunks - result = [ take(lst, chunk_size) for i in xrange(chunks) ] + result = [ take(lst, chunk_size) for i in range(chunks) ] if chunk_surplus: result.append(lst) @@ -45,7 +45,8 @@ def error_if_file_not_found(function): @error_if_file_not_found def get_test_suites(testrunner): - return subprocess.check_output((testrunner, "--list")).strip().split("\n") + out = subprocess.check_output((testrunner, "--list")) + return out.decode('utf-8').strip().split("\n") class Process: def __init__(self, cmd, group): @@ -83,26 +84,26 @@ test_suites = get_test_suites(args.testrunner) test_suite_groups = chunkify(test_suites, args.chunks) processes = build_processes(test_suite_groups) -print "Running %d test suites in %d parallel chunks with ~%d tests each" % (len(test_suites), len(test_suite_groups), len(test_suite_groups[0])) +print("Running %d test suites in %d parallel chunks with ~%d tests each" % (len(test_suites), len(test_suite_groups), len(test_suite_groups[0]))) processes_left = len(processes) while True: try: for proc in processes: return_code = proc.handle.poll() - proc.output += proc.handle.stdout.read() + proc.output += proc.handle.stdout.read().decode('utf-8') if return_code == 0: proc.finished = True processes_left -= 1 if processes_left > 0: - print "%d test suite(s) left" % processes_left + print("%d test suite(s) left" % processes_left) else: - print "All test suites ran successfully" + print("All test suites ran successfully") sys.exit(0) elif return_code is not None: - print "Error: one of '%s' test suites failed:" % ", ".join(proc.group) - print >>sys.stderr, proc.output + print("Error: one of '%s' test suites failed:" % ", ".join(proc.group)) + sys.stderr.write(proc.output) sys.exit(return_code) time.sleep(0.01) diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java index 64854373e05..82e7a87e95b 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java @@ -140,6 +140,7 @@ public class VisitorParameters extends Parameters { public boolean getVisitRemoves() { return visitRemoves; } + @Deprecated // TODO: Remove on Vespa 8 public boolean getVisitHeadersOnly() { return false; } /** @return The field set to use. */ diff --git a/metrics/src/tests/valuemetrictest.cpp b/metrics/src/tests/valuemetrictest.cpp index da730b7c8a9..5aa00e5ba0a 100644 --- a/metrics/src/tests/valuemetrictest.cpp +++ b/metrics/src/tests/valuemetrictest.cpp @@ -232,6 +232,7 @@ void ValueMetricTest::testJson() { " \"values\":\n" " {\n" " \"average\":0.0,\n" + " \"sum\":0.0,\n" " \"count\":0,\n" " \"min\":0.0,\n" " \"max\":0.0,\n" @@ -251,6 +252,7 @@ void ValueMetricTest::testJson() { " \"values\":\n" " {\n" " \"average\":100.0,\n" + " \"sum\":100.0,\n" " \"count\":1,\n" " \"min\":100.0,\n" " \"max\":100.0,\n" @@ -269,6 +271,7 @@ void ValueMetricTest::testJson() { " \"values\":\n" " {\n" " \"average\":300.0,\n" + " \"sum\":600.0,\n" " \"count\":2,\n" " \"min\":100.0,\n" " \"max\":500.0,\n" diff --git a/metrics/src/vespa/metrics/jsonwriter.cpp b/metrics/src/vespa/metrics/jsonwriter.cpp index d890d725c8a..9b8232dd42f 100644 --- a/metrics/src/vespa/metrics/jsonwriter.cpp +++ b/metrics/src/vespa/metrics/jsonwriter.cpp @@ -132,6 +132,7 @@ JsonWriter::visitValueMetric(const AbstractValueMetric& m, bool) _stream << (values->getDoubleValue("total") / values->getDoubleValue("count")); } + _stream << "sum" << values->getDoubleValue("total"); _stream << "count"; values->output("count", _stream); if (_period > 0) { diff --git a/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp b/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp index 03ed9dc2cf7..f9f0d5e49dd 100644 --- a/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp +++ b/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp @@ -84,6 +84,9 @@ fprintf(stderr, "bad json a:\n>>>%s\n<<<\n", a.c_str()); fprintf(stderr, "bad json b\n"); return false; } + if (!(slimeA == slimeB)) { +fprintf(stderr, "compares unequal:\n[A]\n%s\n[B]\n%s\n", a.c_str(), b.c_str()); + } return slimeA == slimeB; } @@ -99,15 +102,15 @@ void check_json(const vespalib::string &actual) " values: { count: 4, rate: 1.14286 }" " }, {" " name: 'bar'," - " values: { count: 4, rate: 1.14286, average: 42, min: 41, max: 43, last: 42 }" + " values: { count: 4, rate: 1.14286, average: 42, sum: 168, min: 41, max: 43, last: 42 }" " }, {" " name: 'bar'," " dimensions: { chain: 'vespa', documenttype: 'blogpost', thread: '1' }," - " values: { count: 1, rate: 0.285714, average: 14, min: 14, max: 14, last: 14 }" + " values: { count: 1, rate: 0.285714, average: 14, sum: 14, min: 14, max: 14, last: 14 }" " }, {" " name: 'bar'," " dimensions: { chain: 'vespa', documenttype: 'blogpost', thread: '2' }," - " values: { count: 1, rate: 0.285714, average: 11, min: 11, max: 11, last: 11 }" + " values: { count: 1, rate: 0.285714, average: 11, sum: 11, min: 11, max: 11, last: 11 }" " } ]" "}"; EXPECT_TRUE(compare_json(expect, actual)); diff --git a/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.cpp b/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.cpp index 280211bd780..11c4a9d34b2 100644 --- a/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.cpp +++ b/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.cpp @@ -52,6 +52,7 @@ JsonFormatter::handle(const GaugeSnapshot &snapshot, vespalib::slime::Cursor &ta handle(snapshot.point(), target); Cursor& inner = target.setObject("values"); inner.setDouble("average", snapshot.averageValue()); + inner.setDouble("sum", snapshot.sumValue()); inner.setDouble("min", snapshot.minValue()); inner.setDouble("max", snapshot.maxValue()); inner.setDouble("last", snapshot.lastValue()); diff --git a/staging_vespalib/src/vespa/vespalib/metrics/snapshots.h b/staging_vespalib/src/vespa/vespalib/metrics/snapshots.h index 0e9915cfb6d..ee5fc942e65 100644 --- a/staging_vespalib/src/vespa/vespalib/metrics/snapshots.h +++ b/staging_vespalib/src/vespa/vespalib/metrics/snapshots.h @@ -48,6 +48,7 @@ private: const PointSnapshot &_point; const size_t _observedCount; const double _averageValue; + const double _sumValue; const double _minValue; const double _maxValue; const double _lastValue; @@ -57,6 +58,7 @@ public: _point(p), _observedCount(c.observedCount), _averageValue(c.sumValue / (c.observedCount > 0 ? c.observedCount : 1)), + _sumValue(c.sumValue), _minValue(c.minValue), _maxValue(c.maxValue), _lastValue(c.lastValue) @@ -66,6 +68,7 @@ public: const PointSnapshot &point() const { return _point; } size_t observedCount() const { return _observedCount; } double averageValue() const { return _averageValue; } + double sumValue() const { return _sumValue; } double minValue() const { return _minValue; } double maxValue() const { return _maxValue; } double lastValue() const { return _lastValue; } |