diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/dummyresourcewritebenchmark.cpp | 68 | ||||
-rw-r--r-- | tests/hawd/dataset.cpp | 15 | ||||
-rw-r--r-- | tests/hawd/dataset.h | 4 | ||||
-rw-r--r-- | tests/hawd/modules/json.cpp | 1 |
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 ×tamp) |
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 | ||
32 | static const QString s_annotationKey("__annotation__"); | 32 | static const QString s_annotationKey("__annotation__"); |
33 | static const QString s_hashKey("__commithash__"); | 33 | static const QString s_hashKey("__commithash__"); |
34 | static const QString s_timestampKey("__timestamp"); | ||
34 | static const int s_fieldWidth(20); | 35 | static const int s_fieldWidth(20); |
35 | 36 | ||
36 | Dataset::Row::Row(const Row &other) | 37 | Dataset::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 | ||
190 | QDateTime Dataset::Row::timestamp() const | 197 | QDateTime 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 | ||
207 | void Dataset::Row::setTimestamp(const QDateTime &dt) | ||
208 | { | ||
209 | m_timeStamp = dt; | ||
210 | } | ||
211 | |||
197 | QString Dataset::Row::toString(const QStringList &cols, int standardCols, const QString &seperator) const | 212 | QString 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 | ||
32 | namespace HAWD | 33 | namespace HAWD |
33 | { | 34 | { |
@@ -52,6 +53,7 @@ public: | |||
52 | QDateTime timestamp() const; | 53 | QDateTime timestamp() const; |
53 | void annotate(const QString ¬e); | 54 | void annotate(const QString ¬e); |
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 | ||
87 | private: | 89 | private: |
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(); |