diff options
Diffstat (limited to 'tests/test-performance/test-resourceqt-performance-collector')
4 files changed, 239 insertions, 0 deletions
diff --git a/tests/test-performance/test-resourceqt-performance-collector/ResultsUpload.cpp b/tests/test-performance/test-resourceqt-performance-collector/ResultsUpload.cpp new file mode 100644 index 0000000..594b07f --- /dev/null +++ b/tests/test-performance/test-resourceqt-performance-collector/ResultsUpload.cpp @@ -0,0 +1,39 @@ +/* + * ResultsUpload.cpp + * + * Created on: May 14, 2010 + * Author: wlk + */ + +#include "ResultsUpload.h" + +ResultsUpload::ResultsUpload(QString fileToUpload) +{ + networkManager = new QNetworkAccessManager(this); + uploadFile = new QFile(fileToUpload); + connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); + uploadFile->open(QIODevice::ReadOnly); + +/* QNetworkAccessManager man; + QFile* f = new QFile("/usr/lib/libresourceqt-tests/test-performance.ini"); + f->open(QIODevice::ReadOnly); + man.post(QNetworkRequest(QUrl("http://policy.research.nokia.com/performance/upload.php")), f);*/ + networkManager->post(QNetworkRequest(QUrl("http://policy.research.nokia.com/performance/upload.php")), uploadFile); +} + +ResultsUpload::~ResultsUpload() +{ + if( networkManager ) + delete networkManager; + + if( uploadFile ) + { + uploadFile->close(); + delete uploadFile; + } +} + +void ResultsUpload::replyFinished(QNetworkReply* reply) +{ + QMetaObject::invokeMethod(QCoreApplication::instance(), "quit"); +} diff --git a/tests/test-performance/test-resourceqt-performance-collector/ResultsUpload.h b/tests/test-performance/test-resourceqt-performance-collector/ResultsUpload.h new file mode 100644 index 0000000..ebc6213 --- /dev/null +++ b/tests/test-performance/test-resourceqt-performance-collector/ResultsUpload.h @@ -0,0 +1,26 @@ +#ifndef _RESULTSUPLOAD_H_ +#define _RESULTSUPLOAD_H_ + +#include <QObject> +#include <QNetworkAccessManager> +#include <QNetworkRequest> +#include <QtCore/QCoreApplication> +#include <QtCore/QFile> + +class ResultsUpload : public QObject +{ + Q_OBJECT + +public: + ResultsUpload(QString fileToUpload); + virtual ~ResultsUpload(); + +private slots: + void replyFinished(QNetworkReply* reply); + +private: + QNetworkAccessManager* networkManager; + QFile* uploadFile; +}; + +#endif // _RESULTSUPLOAD_H_ diff --git a/tests/test-performance/test-resourceqt-performance-collector/test-resourceqt-performance-collector.cpp b/tests/test-performance/test-resourceqt-performance-collector/test-resourceqt-performance-collector.cpp new file mode 100644 index 0000000..a2aee81 --- /dev/null +++ b/tests/test-performance/test-resourceqt-performance-collector/test-resourceqt-performance-collector.cpp @@ -0,0 +1,153 @@ +#include <QtCore/QCoreApplication> +#include <QtCore/QSettings> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QTextStream> +#include "ResultsUpload.h" +#include <stdlib.h> + +class Reporter +{ +public: + Reporter(bool create) + { + QSettings settings("/usr/lib/libresourceqt-performance-tests/test-resourceqt-performance.ini", QSettings::IniFormat); + + settings.beginGroup("main"); + reportAcquire = settings.value("acqreport", "/tmp/acquire.csv").toString(); + reportRelease = settings.value("relreport", "/tmp/release.csv").toString(); + report = settings.value("report", "/tmp/resourceqt-performance.html").toString(); + reportTemplate = settings.value("template", "/usr/lib/libresourceqt-tests/performance/template.html").toString(); + timeLimit = settings.value("limit", 80.0).toDouble(); + settings.endGroup(); + + if( create && QFile::exists(report) ) + { + QFile::remove(report); + } + + if( !QFile::exists(report) ) + { + QFile::copy(reportTemplate, report); + } + } + + void updateReport(bool finalize) + { + QFile f(report); + f.open(QIODevice::ReadOnly | QIODevice::Text); + QString data(f.readAll().data()); + f.close(); + + QString replace, testName("name information missing"), testDesc("test information missing"); + char* env = getenv("TEST_DESC"); + if( env ) + testDesc = env; + + env = getenv("TEST_NAME"); + if( env ) + testName = env; + + QString results; + QString resAcq, resRel, resHead; + + readReport(reportAcquire, "Acquire", resAcq); + readReport(reportRelease, "Release", resRel); + + resHead = "<tr><th>Type</th><th>Count</th><th>Limit [ms]</th><th>Average [ms]</th><th>Minimum [ms]</th><th>Maximum [ms]</th><th>Total time [ms]</th>\n"; + results.sprintf("<table border=\"1\" cellpadding=\"6\" cellspacing=\"0\">%s%s%s</table>", qPrintable(resHead), qPrintable(resAcq), qPrintable(resRel)); + replace.sprintf("<h1>Testcase '%s'</h1>\n<p>%s</p>\n<h3>Test results</h3>\n%s\n<br /><br /><br />", qPrintable(testName), qPrintable(testDesc), qPrintable(results)); + if( !finalize ) + replace += "%%TESTRUNINFO%%"; + + data.replace("%%TESTRUNINFO%%", replace); + + QFile::remove(report); + f.open(QIODevice::WriteOnly | QIODevice::Text); + QTextStream out(&f); + out << data; + f.close(); + } + +public: + QString report; + +private: + QString reportAcquire; + QString reportRelease; + QString reportTemplate; + double timeLimit; + + bool readReport(QString reportFile, QString name, QString& table) + { + QFile f(reportFile); + + if( !f.open(QIODevice::ReadOnly | QIODevice::Text) ) + { + table.sprintf("<tr><td>%s</td><td>N/A</td><td>%.2f</td><td bgcolor=\"#FF0000\">N/A</td><td>N/A</td><td>N/A</td><td>N/A</td>\n", qPrintable(name), timeLimit); + return false; + } + + int tCount = 0; + double tMin = 0, tMax = 0, tAvg = 0, tTotal = 0; + + for( int i = 0; i < 5; i++ ) + { + char temp[1024]; + if( f.readLine(temp, 1024) ) + { + QString qtemp(temp); + QStringList l = qtemp.split(';'); + QString name = l[0]; + QString val = l[1]; + + if( name == "Cnt" ) + tCount = val.toInt(); + else if( name == "Tot") + tTotal = val.toDouble(); + else if( name == "Max" ) + tMax = val.toDouble(); + else if( name == "Min" ) + tMin = val.toDouble(); + else if( name == "Avg" ) + tAvg = val.toDouble(); + } + } + + QString color = "#00FF00"; + if( tAvg > timeLimit ) + color = "#FF0000"; + + table.sprintf("<tr><td>%s</td><td>%d</td><td>%.2f</td><td bgcolor=\"%s\">%.2f</td><td>%.2f</td><td>%.2f</td><td>%.2f</td>\n", qPrintable(name), tCount, timeLimit, qPrintable(color), tAvg, tMin, tMax, tTotal); + f.close(); + + return true; + } +}; + +int main(int argc, char** argv) +{ + bool createReport = false, finalizeReport = false; + + if( argc > 1 ) + { + QString param; + param = argv[1]; + if( param == "--create" ) + createReport = true; + else if( param == "--finalize" ) + finalizeReport = true; + } + + Reporter r(createReport); + r.updateReport(finalizeReport); + + if( finalizeReport ) + { + QCoreApplication app(argc, argv); + ResultsUpload u(r.report); + app.exec(); + } + + return 0; +} diff --git a/tests/test-performance/test-resourceqt-performance-collector/test-resourceqt-performance-collector.pro b/tests/test-performance/test-resourceqt-performance-collector/test-resourceqt-performance-collector.pro new file mode 100644 index 0000000..2cffc92 --- /dev/null +++ b/tests/test-performance/test-resourceqt-performance-collector/test-resourceqt-performance-collector.pro @@ -0,0 +1,21 @@ +TEMPLATE = app +TARGET = test-resourceqt-performance-collector +MOC_DIR = .moc +OBJECTS_DIR = .obj +DEPENDPATH += . +QT = core network +CONFIG += console +CONFIG -= app_bundle + +INCLUDEPATH += $${LIBRESOURCEINC} +QMAKE_CXXFLAGS += -Wall + +# Input +HEADERS = ResultsUpload.h +SOURCES += test-resourceqt-performance-collector.cpp ResultsUpload.cpp + +QMAKE_DISTCLEAN += -r .moc .obj + +# Install options +target.path = /usr/lib/libresourceqt-performance-tests/ +INSTALLS = target |