serviceTester.h 2.94 KB
/**
 * \file serviceTester.h
 *
 * \author Wesnydy Lima Ribeiro <wesnydy@lavid.ufpb.br>
 * \date 2015
 */

#ifndef SERVICETESTER_H
#define SERVICETESTER_H

#include <iostream>
#include <lavidlib/io/File.h>
#include <lavidlib/io/FileIO.h>
#include "serviceException.h"
#include "serviceWindowGenerationFromRec.h"
#include "serviceWindowGenerationFromSubtitle.h"
#include "serviceWindowGenerationFromText.h"

#define MODE_TEST 3
#define TESTER_ID "Test"
#define PATH_TEST_CONTENTS "vlibras_user/.vlibras-config/test/videos"
#define PATH_TEST_UPLOADS "vlibras_user/.vlibras-config/test/uploads"

#define VID_FILE "vlibras_user/.vlibras-config/test/uploads/test_video.mp4"
#define SRT_FILE "vlibras_user/.vlibras-config/test/uploads/test_srt.srt"
#define REC_FILE "vlibras_user/.vlibras-config/test/uploads/test_rec.mov"
#define TXT_FILE "vlibras_user/.vlibras-config/test/uploads/test_text.txt"
#define OUT_FILE "vlibras_user/.vlibras-config/test/videos/Test.mp4"

using namespace util;
using namespace std;

/** \brief Classe que implementa o serviço de testes.
 *
 * \headerfile servico/src/include/serviceTester.h
 */
class ServiceTester: public Thread {

public:
	/** Construtor.
	 *
     * \param position Posição do vídeo de LIBRAS em relação ao vídeo original.
     * \param size Tamanho do vídeo de LIBRAS.
     * \param Background Plano de fundo do vídeo de LIBRAS.
	 */
	ServiceTester(int position, int size, int background);

	/** Destrutor */
	~ServiceTester();

	/** Indica o fim do processo de testes dos módulos. 
     *
     * \return O status do do processo.
     */
	bool isFinished();

private:
	int position;
	int resolution;
	int background;

	bool fail;
	bool finish;
	string msgErr;

	File* fIn;
	File* fOut;
	FileIO* fIO_in;
	FileIO* fIO_out;

	ServiceWindowGenerationFromRec*  service_rec;
	ServiceWindowGenerationFromSubtitle*  service_srt;
	ServiceWindowGenerationFromText* service_text;

	/** Checa o serviço de vídeo com legendas */
	void checkServiceSRT();

	/** Checa o serviço de reconhecimento de vídeo */
	void checkServiceRec();

	/** Checa o serviço de tradução de texto */
	void checkServiceText();

	/** Este método é chamado quando a Thread for iniciada. */
	void Run();

	/** Indica se houve falha em algum processo.
	 *
	 * \return retorna True se ocorreu algum erro, caso contrário, retorna false.
	 */
	bool hasFailed();

	/** Remove os arquivos temporários, gerados pelos processos.*/
	void deleteFiles();

	/** Define o path dos arquivos temporários. */
	void setPathContents();

	/** Verifica os arquivos de saída gerados.
	 *
	 * Caso os arquivos de sáida esperarados não existam,
	 * um status de falha será retornado.
	 * Nos casos em que houver mixagem, o vídeo de entrada
	 * e o vídeo de saída serão comparados pelo tamanho.
	 *
	 * \param fileIn arquivo de entrada.
	 * \param fileOut arquivo de saída.
	 * \return Status da verificação.
	 */
	bool checkFiles(string fileIn, string fileOut);
};

#endif /* SERVICETESTER_H */