#include "serviceTester.h" ServiceTester::ServiceTester(int _position, int _size, int _background) { if(_position != 0) this->position = _position; else this->position = 3; //bottom_rigth if(_size != 0) this->resolution = _size; else this->resolution = 2; //medium this->background = _background; msgErr = ""; finish = false; fail = false; PRINTL(util::_DEBUG, "ServiceTester Done!\n"); } ServiceTester::~ServiceTester() { PRINTL(util::_DEBUG, "ServiceTester Finalized!\n"); } void ServiceTester::checkServiceSRT() { PRINTL(util::_DEBUG, "Checando extração de legenda...\n"); setPathContents(); service_srt = new ServiceWindowGenerationFromSubtitle((char*)VID_FILE, (char*)SRT_FILE, 1, position, resolution, background, (char*)TESTER_ID, MODE_TEST, 1); try{ service_srt->initialize(); }catch(ServiceException &ex){ msgErr += "Extração de legenda\n"; fail = true; return; } while(!service_srt->isFinished()) sleep(5); delete service_srt; bool sucess; sucess = checkFiles(VID_FILE, OUT_FILE); if(!sucess){ msgErr += "Extração de legenda\n"; } deleteFiles(); } void ServiceTester::checkServiceRec() { PRINTL(util::_DEBUG, "Checando reconhecimento...\n"); setPathContents(); service_rec = new ServiceWindowGenerationFromRec((char*)REC_FILE, 0, 0, background, (char*)TESTER_ID, MODE_TEST, 6);// 6 serviço sem mixagem try{ service_rec->initialize(); }catch(ServiceException &ex){ msgErr += "Reconhecimento\n"; fail = true; return; } while(!service_rec->isFinished()) sleep(5); delete service_rec; bool sucess; sucess = checkFiles(REC_FILE, OUT_FILE); if(!sucess){ msgErr += "Reconhecimento\n"; } deleteFiles(); } void ServiceTester::checkServiceText() { PRINTL(util::_DEBUG, "Checando extração de texto...\n"); setPathContents(); service_text = new ServiceWindowGenerationFromText((char*)TXT_FILE, 1, background, (char*)TESTER_ID, MODE_TEST); try{ service_text->initialize(); }catch(ServiceException &ex){ msgErr += "Extração de texto\n"; fail = true; return; } while (!service_text->isFinished()) usleep(100000); //100ms delete service_text; bool sucess; sucess = checkFiles(TXT_FILE, OUT_FILE); if(!sucess){ msgErr += "Extração de texto\n"; } deleteFiles(); } bool ServiceTester::checkFiles(string fileIn, string fileOut) { int64_t inSize; int64_t outSize; fIn = new lavidlib::File(fileIn); fOut = new lavidlib::File(fileOut); try{ fIO_in = new lavidlib::FileIO(fIn->getPath(), FileIO::MODE_READ); fIO_out = new lavidlib::FileIO(fOut->getPath(), FileIO::MODE_READ); }catch(Exception &ex){ delete fIn; delete fOut; fail = true; return false; } inSize = fIO_in->getSize(); outSize = fIO_out->getSize(); delete fIn; delete fOut; delete fIO_in; delete fIO_out; if(outSize != 0 && outSize != inSize) return true; fail = true; return false; } bool ServiceTester::isFinished(){ return this->finish; } bool ServiceTester::hasFailed() { return this->fail; } void ServiceTester::setPathContents() { string command = "mkdir -p "; command.append(PATH_TEST_CONTENTS).append(" && mkdir -p ") .append(PATH_TEST_UPLOADS).append("/").append(TESTER_ID); system(command.c_str()); } void ServiceTester::deleteFiles() { string command = "rm -f "; command.append(OUT_FILE).append(" && rm -rf ") .append(PATH_TEST_UPLOADS).append("/").append(TESTER_ID); system(command.c_str()); } void ServiceTester::Run() { PRINTL(util::_INFO, "Verificando módulos, aguarde...\n"); checkServiceText(); checkServiceSRT(); checkServiceRec(); if(hasFailed()) throw ServiceException(msgErr); PRINTL(util::_INFO, "Não foram encontrados problemas!\n"); finish = true; }