summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-10-17 12:40:03 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-10-17 12:40:37 +0200
commitdcfc70808ab9680a8caed6ff0fb98f978fbbef97 (patch)
treea09c75b0686dcd4a590386f195f24bb5a0893aba /tests
parent422c12d85d3eca55eca6f23c140910150a5fd166 (diff)
downloadsink-dcfc70808ab9680a8caed6ff0fb98f978fbbef97.tar.gz
sink-dcfc70808ab9680a8caed6ff0fb98f978fbbef97.zip
Split up dummyresourcewritebenchmark into datasets that we want to
display.
Diffstat (limited to 'tests')
-rw-r--r--tests/dummyresourcewritebenchmark.cpp68
-rw-r--r--tests/hawd/dataset.cpp15
-rw-r--r--tests/hawd/dataset.h4
-rw-r--r--tests/hawd/modules/json.cpp1
4 files changed, 63 insertions, 25 deletions
diff --git a/tests/dummyresourcewritebenchmark.cpp b/tests/dummyresourcewritebenchmark.cpp
index 28ca408..87bb57a 100644
--- a/tests/dummyresourcewritebenchmark.cpp
+++ b/tests/dummyresourcewritebenchmark.cpp
@@ -1,6 +1,7 @@
1#include <QtTest> 1#include <QtTest>
2 2
3#include <QString> 3#include <QString>
4#include <QDateTime>
4 5
5#include <iostream> 6#include <iostream>
6 7
@@ -72,8 +73,9 @@ class DummyResourceWriteBenchmark : public QObject
72 73
73 QList<double> mRssGrowthPerEntity; 74 QList<double> mRssGrowthPerEntity;
74 QList<double> mTimePerEntity; 75 QList<double> mTimePerEntity;
76 QDateTime mTimeStamp{QDateTime::currentDateTimeUtc()};
75 77
76 void writeInProcess(int num) 78 void writeInProcess(int num, const QDateTime &timestamp)
77 { 79 {
78 DummyResource::removeFromDisk("sink.dummy.instance1"); 80 DummyResource::removeFromDisk("sink.dummy.instance1");
79 81
@@ -122,25 +124,42 @@ class DummyResourceWriteBenchmark : public QObject
122 mTimePerEntity << static_cast<double>(allProcessedTime) / static_cast<double>(num); 124 mTimePerEntity << static_cast<double>(allProcessedTime) / static_cast<double>(num);
123 mRssGrowthPerEntity << rssGrowthPerEntity; 125 mRssGrowthPerEntity << rssGrowthPerEntity;
124 126
125 QVERIFY(percentageRssError < 10); 127 {
126 // TODO This is much more than it should it seems, although adding the attachment results in pretty exactly a 1k increase, 128 HAWD::Dataset dataset("dummy_write_perf", m_hawdState);
127 // so it doesn't look like that memory is being duplicated. 129 HAWD::Dataset::Row row = dataset.row();
128 QVERIFY(rssGrowthPerEntity < 2500); 130 row.setValue("rows", num);
131 row.setValue("append", (qreal)num/appendTime);
132 row.setValue("total", (qreal)num/allProcessedTime);
133 row.setTimestamp(timestamp);
134 dataset.insertRow(row);
135 HAWD::Formatter::print(dataset);
136 }
129 137
130 HAWD::Dataset dataset("dummy_write_in_process", m_hawdState); 138 {
131 HAWD::Dataset::Row row = dataset.row(); 139 HAWD::Dataset dataset("dummy_write_memory", m_hawdState);
132 row.setValue("rows", num); 140 HAWD::Dataset::Row row = dataset.row();
133 row.setValue("append", (qreal)num/appendTime); 141 row.setValue("rows", num);
134 row.setValue("total", (qreal)num/allProcessedTime); 142 row.setValue("rss", QVariant::fromValue(finalRss / 1024));
135 row.setValue("onDisk", onDisk / 1024); 143 row.setValue("peakRss", QVariant::fromValue(peakRss / 1024));
136 row.setValue("bufferSize", bufferSizeTotal / 1024); 144 row.setValue("percentagePeakRssError", percentageRssError);
137 row.setValue("writeAmplification", writeAmplification); 145 row.setValue("rssGrowthPerEntity", QVariant::fromValue(rssGrowthPerEntity));
138 row.setValue("rss", QVariant::fromValue(finalRss / 1024)); 146 row.setValue("rssWithoutDb", rssWithoutDb / 1024);
139 row.setValue("peakRss", QVariant::fromValue(peakRss / 1024)); 147 row.setTimestamp(timestamp);
140 row.setValue("rssGrowthPerEntity", QVariant::fromValue(rssGrowthPerEntity)); 148 dataset.insertRow(row);
141 row.setValue("rssWithoutDb", rssWithoutDb / 1024); 149 HAWD::Formatter::print(dataset);
142 dataset.insertRow(row); 150 }
143 HAWD::Formatter::print(dataset); 151
152 {
153 HAWD::Dataset dataset("dummy_write_disk", m_hawdState);
154 HAWD::Dataset::Row row = dataset.row();
155 row.setValue("rows", num);
156 row.setValue("onDisk", onDisk / 1024);
157 row.setValue("bufferSize", bufferSizeTotal / 1024);
158 row.setValue("writeAmplification", writeAmplification);
159 row.setTimestamp(timestamp);
160 dataset.insertRow(row);
161 HAWD::Formatter::print(dataset);
162 }
144 163
145 // Print memory layout, RSS is what is in memory 164 // Print memory layout, RSS is what is in memory
146 // std::system("exec pmap -x \"$PPID\""); 165 // std::system("exec pmap -x \"$PPID\"");
@@ -161,22 +180,23 @@ private slots:
161 180
162 void runBenchmarks() 181 void runBenchmarks()
163 { 182 {
164 writeInProcess(1000); 183 writeInProcess(1000, mTimeStamp);
165 writeInProcess(2000); 184 writeInProcess(2000, mTimeStamp);
166 writeInProcess(5000); 185 writeInProcess(5000, mTimeStamp);
167 writeInProcess(20000); 186 writeInProcess(20000, mTimeStamp);
168 } 187 }
169 188
170 void ensureUsedMemoryRemainsStable() 189 void ensureUsedMemoryRemainsStable()
171 { 190 {
172 auto rssStandardDeviation = sqrt(variance(mRssGrowthPerEntity)); 191 auto rssStandardDeviation = sqrt(variance(mRssGrowthPerEntity));
173 auto timeStandardDeviation = sqrt(variance(mTimePerEntity)); 192 auto timeStandardDeviation = sqrt(variance(mTimePerEntity));
174 HAWD::Dataset dataset("dummy_write_in_process_summary", m_hawdState); 193 HAWD::Dataset dataset("dummy_write_summary", m_hawdState);
175 HAWD::Dataset::Row row = dataset.row(); 194 HAWD::Dataset::Row row = dataset.row();
176 row.setValue("rssStandardDeviation", rssStandardDeviation); 195 row.setValue("rssStandardDeviation", rssStandardDeviation);
177 row.setValue("rssMaxDifference", maxDifference(mRssGrowthPerEntity)); 196 row.setValue("rssMaxDifference", maxDifference(mRssGrowthPerEntity));
178 row.setValue("timeStandardDeviation", timeStandardDeviation); 197 row.setValue("timeStandardDeviation", timeStandardDeviation);
179 row.setValue("timeMaxDifference", maxDifference(mTimePerEntity)); 198 row.setValue("timeMaxDifference", maxDifference(mTimePerEntity));
199 row.setTimestamp(mTimeStamp);
180 dataset.insertRow(row); 200 dataset.insertRow(row);
181 HAWD::Formatter::print(dataset); 201 HAWD::Formatter::print(dataset);
182 } 202 }
diff --git a/tests/hawd/dataset.cpp b/tests/hawd/dataset.cpp
index 62fa0d7..3325850 100644
--- a/tests/hawd/dataset.cpp
+++ b/tests/hawd/dataset.cpp
@@ -31,6 +31,7 @@ namespace HAWD
31 31
32static const QString s_annotationKey("__annotation__"); 32static const QString s_annotationKey("__annotation__");
33static const QString s_hashKey("__commithash__"); 33static const QString s_hashKey("__commithash__");
34static const QString s_timestampKey("__timestamp");
34static const int s_fieldWidth(20); 35static const int s_fieldWidth(20);
35 36
36Dataset::Row::Row(const Row &other) 37Dataset::Row::Row(const Row &other)
@@ -118,6 +119,8 @@ void Dataset::Row::fromBinary(QByteArray data)
118 m_annotation = value.toString(); 119 m_annotation = value.toString();
119 } else if (key == s_hashKey) { 120 } else if (key == s_hashKey) {
120 m_commitHash = value.toString(); 121 m_commitHash = value.toString();
122 } else if (key == s_timestampKey) {
123 m_timeStamp = value.toDateTime();
121 } else { 124 } else {
122 setValue(key, value); 125 setValue(key, value);
123 } 126 }
@@ -141,6 +144,10 @@ QByteArray Dataset::Row::toBinary() const
141 stream << s_hashKey << QVariant(m_commitHash); 144 stream << s_hashKey << QVariant(m_commitHash);
142 } 145 }
143 146
147 if (!m_timeStamp.isValid()) {
148 stream << s_timestampKey << QVariant(m_timeStamp);
149 }
150
144 if (!m_annotation.isEmpty()) { 151 if (!m_annotation.isEmpty()) {
145 stream << s_annotationKey << QVariant(m_annotation); 152 stream << s_annotationKey << QVariant(m_annotation);
146 } 153 }
@@ -189,11 +196,19 @@ QString Dataset::Row::commitHash() const
189 196
190QDateTime Dataset::Row::timestamp() const 197QDateTime Dataset::Row::timestamp() const
191{ 198{
199 if (m_timeStamp.isValid()) {
200 return m_timeStamp;
201 }
192 QDateTime dt; 202 QDateTime dt;
193 dt.setMSecsSinceEpoch(m_key); 203 dt.setMSecsSinceEpoch(m_key);
194 return dt; 204 return dt;
195} 205}
196 206
207void Dataset::Row::setTimestamp(const QDateTime &dt)
208{
209 m_timeStamp = dt;
210}
211
197QString Dataset::Row::toString(const QStringList &cols, int standardCols, const QString &seperator) const 212QString Dataset::Row::toString(const QStringList &cols, int standardCols, const QString &seperator) const
198{ 213{
199 if (m_data.isEmpty()) { 214 if (m_data.isEmpty()) {
diff --git a/tests/hawd/dataset.h b/tests/hawd/dataset.h
index 9660709..f24cacf 100644
--- a/tests/hawd/dataset.h
+++ b/tests/hawd/dataset.h
@@ -28,6 +28,7 @@
28 28
29#include <QHash> 29#include <QHash>
30#include <QVariant> 30#include <QVariant>
31#include <QDateTime>
31 32
32namespace HAWD 33namespace HAWD
33{ 34{
@@ -52,6 +53,7 @@ public:
52 QDateTime timestamp() const; 53 QDateTime timestamp() const;
53 void annotate(const QString &note); 54 void annotate(const QString &note);
54 void setCommitHash(const QString &hash); 55 void setCommitHash(const QString &hash);
56 void setTimestamp(const QDateTime &dt);
55 qint64 key() const; 57 qint64 key() const;
56 QByteArray toBinary() const; 58 QByteArray toBinary() const;
57 QString toString(const QStringList &cols = QStringList(), int standardCols = All, const QString &seperator = "|") const; 59 QString toString(const QStringList &cols = QStringList(), int standardCols = All, const QString &seperator = "|") const;
@@ -66,6 +68,7 @@ public:
66 QHash<QString, QVariant> m_data; 68 QHash<QString, QVariant> m_data;
67 QString m_annotation; 69 QString m_annotation;
68 QString m_commitHash; 70 QString m_commitHash;
71 QDateTime m_timeStamp;
69 const Dataset *m_dataset; 72 const Dataset *m_dataset;
70 friend class Dataset; 73 friend class Dataset;
71 }; 74 };
@@ -82,7 +85,6 @@ public:
82 void eachRow(const std::function<void(const Row &row)> &resultHandler); 85 void eachRow(const std::function<void(const Row &row)> &resultHandler);
83 Row row(qint64 key = 0); 86 Row row(qint64 key = 0);
84 Row lastRow(); 87 Row lastRow();
85 //TODO: row cursor
86 88
87private: 89private:
88 DatasetDefinition m_definition; 90 DatasetDefinition m_definition;
diff --git a/tests/hawd/modules/json.cpp b/tests/hawd/modules/json.cpp
index d299761..092c977 100644
--- a/tests/hawd/modules/json.cpp
+++ b/tests/hawd/modules/json.cpp
@@ -63,6 +63,7 @@ bool Json::toJson(const QStringList &commands, State &state)
63 63
64 QJsonObject json; 64 QJsonObject json;
65 json.insert("dataset", datasetName); 65 json.insert("dataset", datasetName);
66 json.insert("name", definition.name());
66 json.insert("description", definition.description()); 67 json.insert("description", definition.description());
67 68
68 const auto columns = definition.columns(); 69 const auto columns = definition.columns();