summaryrefslogtreecommitdiff
path: root/tests/test-performance/test-resourceqt-performance-collector
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-performance/test-resourceqt-performance-collector')
-rw-r--r--tests/test-performance/test-resourceqt-performance-collector/ResultsUpload.cpp39
-rw-r--r--tests/test-performance/test-resourceqt-performance-collector/ResultsUpload.h26
-rw-r--r--tests/test-performance/test-resourceqt-performance-collector/test-resourceqt-performance-collector.cpp153
-rw-r--r--tests/test-performance/test-resourceqt-performance-collector/test-resourceqt-performance-collector.pro21
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