/**
* ======================== legal notice ======================
*
* File: ConnectionHandlerTest.cc
* Created: 10.07.2012, 05
* Author: Geronimo
* Project: cmps - the backend (server) part of compound media player
*
* CMP - compound media player
*
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
*
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
*
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
*
* --------------------------------------------------------------
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
class cTestUnit {
public:
cTestUnit(const char *Name, cConnectionPoint &cp);
~cTestUnit();
void test1(void);
void test2(void);
const char *Name(void) const { return name; }
void SetUp(void);
private:
cServerConfig config;
cConnectionHandler ch;
const char *name;
cFSMediaScanner *scanner;
};
cTestUnit::cTestUnit(const char* Name, cConnectionPoint &cp)
: config(12345)
, ch(cp, config)
, name(Name)
, scanner(NULL)
{
config.SetAuthorizationRequired(false);
config.SetDocumentRoot("/media/video");
config.SetAppIcon("/media/favicon.ico");
scanner = new cFSMediaScanner();
if (!scanner) {
fprintf(stderr, "could not initialize application! (1)");
exit(-1);
}
scanner->SetMediaFactory(new cMediaFactory(config.DocumentRoot()));
cAbstractMediaRequestHandler::SetFilesystemScanner(scanner);
cConnectionHandler::RegisterRequestHandler("/cmd", new cCommandHandler());
cMediaListHandler *listHandler = new cMediaListHandler();
listHandler->SetListAssembler("json", new cJSonListAssembler());
listHandler->SetDefaultListAssembler(new cHTMLListAssembler());
cConnectionHandler::RegisterRequestHandler("/", listHandler);
cConnectionHandler::RegisterDefaultHandler(new cMediaFileHandler());
}
cTestUnit::~cTestUnit()
{
cCommandHandler::Cleanup();
delete scanner;
}
void cTestUnit::SetUp()
{
if (scanner) scanner->Refresh();
}
void cTestUnit::test1()
{
std::cout << "ConnectionHandlerTest test 1" << std::endl;
cHTTPRequest rq(cHTTPRequest::GET, "/");
rq.SetHeader("Host", "localhost:43567");
rq.SetHeader("User-Agent", "TestUnit");
rq.SetHeader("Accept", "image/png,image/*;q=0.8,*/*;q=0.5");
rq.SetHeader("Accept-Language", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");
rq.SetHeader("Accept-Encoding", "gzip,deflate");
rq.SetHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
rq.SetHeader("Keep-Alive", "300");
rq.SetHeader("Connection", "keep-alive");
rq.Dump();
cHTTPResponse *res = ch.ProcessRequest(rq);
std::cout << "response looks like ..." << std::endl;
res->Dump();
delete res;
}
void cTestUnit::test2()
{
std::cout << "ConnectionHandlerTest test 2" << std::endl;
std::cout << "%TEST_FAILED% time=0 testname=test2 (ConnectionHandlerTest) message=error message sample" << std::endl;
}
int main(int argc, char** argv)
{
uint64_t t0 = cTimeMs::Now();
cConnectionPoint localHost("localhost", 40902);
cTestUnit unit("ConnectionHandlerTest", localHost);
unit.SetUp();
std::cout << "%SUITE_STARTING% " << unit.Name() << std::endl;
std::cout << "%SUITE_STARTED%" << std::endl;
std::cout << "%TEST_STARTED% test1 (" << unit.Name() << ")" << std::endl;
uint64_t start = cTimeMs::Now();
unit.test1();
uint64_t end = cTimeMs::Now();
std::cout << "%TEST_FINISHED% time=" << (double)(end - start) / 1000 << " test1 (" << unit.Name() << ")" << std::endl;
std::cout << "%TEST_STARTED% test2 (" << unit.Name() << ")\n" << std::endl;
start = cTimeMs::Now();
unit.test2();
end = cTimeMs::Now();
std::cout << "%TEST_FINISHED% time=" << (double)(end - start) / 1000 << " test2 (" << unit.Name() << ")" << std::endl;
std::cout << "%SUITE_FINISHED% time=" << (double)(cTimeMs::Now() - t0) / 1000 << std::endl;
return (EXIT_SUCCESS);
}