1 #include "tst_InsertNode.h"
7 void tst_InsertNode::initTestCase()
11 pjControl = ProjectControl::getInstance();
12 resourceDir =
"resources";
13 resourceDir = resourceDir+QDir::separator()+
"documents"+QDir::separator();
15 QString baseDir =
"..";
16 profileDir = baseDir+QDir::separator()+
"extensions"+QDir::separator();
18 lgControl = LanguageControl::getInstance();
20 pluginList = TestUtil::getPluginList();
22 pgControl = PluginControl::getInstance();
31 void tst_InsertNode::cleanupTestCase()
33 ProjectControl::releaseInstance();
35 LanguageControl::releaseInstance();
37 PluginControl::releaseInstance();
41 QString projectDir = resourceDir + QDir::separator() +
"projects";
42 QDir docDir(projectDir);
43 docDir.setFilter(QDir::Files | QDir::NoSymLinks);
44 QFileInfoList list = docDir.entryInfoList();
46 for (
int i = 0; i != list.size(); i++)
48 QFileInfo fileInfo = list.at(i);
49 cout <<
"Trying to remove " << fileInfo.absoluteFilePath().toStdString();
50 QFile file(fileInfo.absoluteFilePath());
55 void tst_InsertNode::init()
58 QString filename = profileDir+QDir::separator()+
59 "NCL"+QDir::separator()+
"libNCLLanguageProfile.dylib";
63 QString filename = profileDir+QDir::separator()
64 +
"NCL"+QDir::separator()+
"libNCLLanguageProfile.so";
66 QVERIFY(lgControl->loadProfile(filename));
70 void tst_InsertNode::insertNode_data()
72 QTest::addColumn<QString>(
"projectFileName");
73 QTest::addColumn<int>(
"nNodes");
74 QTest::addColumn<int>(
"numPlugins");
76 for(
int i = 0; i < pluginList.size(); i++)
78 QString testName =
"teste" + i;
79 QString projectName = QDir::separator();
81 projectName += QDir::separator();
82 projectName +=
"project";
83 projectName +=
".cpr";
84 QTest::newRow(testName.toStdString().c_str()) << projectName << nNodes << i;
88 void tst_InsertNode::insertNode()
90 QFETCH(QString, projectFileName);
92 QFETCH(
int, numPlugins);
94 for (
int i = 0; i < numPlugins; i++)
96 QString pluginName = pluginList.at(i);
97 pgControl->loadPlugin(pluginName);
100 QVERIFY(pjControl->launchProject(projectFileName));
103 pgControl->getMessageControl(projectFileName);
104 Project *project = ProjectControl::getInstance()
105 ->getOpenProject(projectFileName);
107 QMap <QString, QString> attrs;
108 messageControl->anonymousAddEntity(
"ncl", project->getUniqueId(), attrs);
110 messageControl->anonymousAddEntity(
"head", ncl->getUniqueId(), attrs);
112 messageControl->anonymousAddEntity(
"regionBase", head->getUniqueId(), attrs);
115 long long int interval;
118 QString filename =
"output/composer_";
119 filename += QString::number(numPlugins);
120 filename +=
"_plugins_1.txt";
121 myfile.open(filename.toStdString().c_str());
122 for(
int i = 0; i < nNodes; i++)
124 attrs.insert(
"id",
"node");
125 gettimeofday(&begin,NULL);
126 messageControl->anonymousAddEntity(
"region", regionBase->getUniqueId(),
129 QApplication::processEvents();
130 showWidgets.redraw();
131 gettimeofday(&end, NULL);
132 interval = TestUtil::timeval_subtract_micro(begin, end);
133 myfile << ((double)interval)/1000.0 << endl;
139 showWidgets.closeAllWidgets();
140 QVERIFY(pjControl->closeProject(project->
getLocation()));
143 void tst_InsertNode::insertNodeNPlugins_data()
148 void tst_InsertNode::insertNodeNPlugins()
150 QFETCH(QString, projectFileName);
152 QFETCH(
int, numPlugins);
154 QList <IPluginFactory *> factories;
156 for (
int i = 0; i < numPlugins; i++)
158 QString pluginName = pluginList.at(i);
160 factories.push_back(fact);
163 QVERIFY(pjControl->launchProject(projectFileName));
166 pgControl->getMessageControl(projectFileName);
167 Project *project = ProjectControl::getInstance()
168 ->getOpenProject(projectFileName);
171 if(factories.size() > 1)
173 for(
int i = 0; i < nInstances; i++)
177 PluginControl::getInstance()->launchNewPlugin(pluginFactory, project);
181 QMap <QString, QString> attrs;
182 messageControl->anonymousAddEntity(
"ncl", project->getUniqueId(), attrs);
184 messageControl->anonymousAddEntity(
"head", ncl->getUniqueId(), attrs);
186 messageControl->anonymousAddEntity(
"regionBase", head->getUniqueId(), attrs);
189 messageControl->anonymousAddEntity(
"body", ncl->getUniqueId(), attrs);
192 long long int interval;
195 QString filename =
"output/composer_";
196 filename += QString::number(numPlugins);
197 filename +=
"_plugins.txt";
198 myfile.open(filename.toStdString().c_str());
199 for(
int i = 0; i < nNodes; i++)
201 attrs.insert(
"id",
"node");
202 gettimeofday(&begin,NULL);
203 messageControl->anonymousAddEntity(
"region", regionBase->getUniqueId(),
204 attrs,
false,
false);
208 messageControl->anonymousUpdateFromModel();
209 QApplication::processEvents();
210 showWidgets.redraw();
211 gettimeofday(&end, NULL);
212 interval = TestUtil::timeval_subtract_micro (begin, end);
213 myfile << ((double)interval)/1000.0 << endl;
219 showWidgets.closeAllWidgets();
220 QVERIFY(pjControl->closeProject(project->
getLocation()));
224 void tst_InsertNode::updateNodes_data()
226 QTest::addColumn<QString>(
"projectFileName");
227 QTest::addColumn<int>(
"numPlugins");
228 QTest::addColumn<int>(
"nNodes");
229 QTest::addColumn<int>(
"nUpdates");
231 QVector <int> nNodes;
232 nNodes.push_back(10);
233 nNodes.push_back(100);
234 nNodes.push_back(500);
235 nNodes.push_back(1000);
239 for(
int i = 0; i < nNodes.size(); i++)
241 QString testName =
"teste" + i;
242 QString projectName = QDir::separator();
243 projectName +=
"tmp";
244 projectName += QDir::separator();
245 projectName +=
"project";
246 projectName +=
".cpr";
248 QTest::newRow(testName.toStdString().c_str()) << projectName
255 void tst_InsertNode::updateNodes()
257 QFETCH(QString, projectFileName);
258 QFETCH(
int, numPlugins);
260 QFETCH(
int, nUpdates);
262 QList <IPluginFactory *> factories;
264 for (
int i = 0; i < numPlugins; i++)
266 QString pluginName = pluginList.at(i);
268 factories.push_back(fact);
271 QVERIFY(pjControl->launchProject(projectFileName));
274 pgControl->getMessageControl(projectFileName);
275 Project *project = ProjectControl::getInstance()
276 ->getOpenProject(projectFileName);
279 QMap <QString, QString> attrs;
280 messageControl->anonymousAddEntity(
"ncl", project->getUniqueId(), attrs);
282 messageControl->anonymousAddEntity(
"head", ncl->getUniqueId(), attrs);
284 messageControl->anonymousAddEntity(
"regionBase", head->getUniqueId(), attrs);
287 messageControl->anonymousAddEntity(
"body", ncl->getUniqueId(), attrs);
290 long long int interval;
292 for(
int i = 0; i < nNodes; i++)
294 messageControl->anonymousAddEntity(
"region", regionBase->getUniqueId(),
297 QApplication::processEvents();
298 showWidgets.redraw();
303 QString filename =
"output/composer_";
304 filename += QString::number(numPlugins);
305 filename +=
"_plugins_incremental_";
306 filename += QString::number(nNodes);
307 filename +=
"_nodes.txt";
308 myfile.open(filename.toStdString().c_str());
312 for(
int i = 0; i < nUpdates; i++)
314 gettimeofday(&begin,NULL);
315 for(
int j = 0; j < i; j++)
317 QString value = QString::number(j);
318 attrs.insert(
"top", value);
319 messageControl->anonymousChangeEntity(region->getUniqueId(), attrs);
321 gettimeofday(&end, NULL);
322 interval = TestUtil::timeval_subtract_micro (begin, end);
323 myfile << ((double)interval)/1000.0 << endl;
325 QApplication::processEvents();
326 showWidgets.redraw();
329 filename =
"output/composer_";
330 filename += QString::number(numPlugins);
331 filename +=
"_plugins_updateFromModel_";
332 filename += QString::number(nNodes);
333 filename +=
"_nodes.txt";
334 myfile.open(filename.toStdString().c_str());
337 for(
int i = 0; i < nUpdates; i++)
339 gettimeofday(&begin,NULL);
340 for(
int j = 0; j < i; j++)
342 QString value = QString::number(i);
343 attrs.insert(
"top", value);
344 messageControl->anonymousChangeEntity(region->getUniqueId(), attrs,
347 messageControl->anonymousUpdateFromModel();
348 QApplication::processEvents();
349 showWidgets.redraw();
351 gettimeofday(&end, NULL);
352 interval = TestUtil::timeval_subtract_micro (begin, end);
353 myfile << ((double)interval)/1000.0 << endl;
360 showWidgets.closeAllWidgets();
361 QVERIFY(pjControl->closeProject(project->
getLocation()));