diff options
author | geronimo <geronimo013@gmx.de> | 2012-07-29 16:00:29 +0200 |
---|---|---|
committer | geronimo <geronimo013@gmx.de> | 2012-07-29 16:00:29 +0200 |
commit | aa714b0076c06d7133c625ab22c86114d4f17e23 (patch) | |
tree | f4773543d7c0bf593c20b1a033dea8dc28dd8ad5 /tests/MetaScanTest | |
parent | 4039d18078da508ba8c628df8e2aa741cf91f266 (diff) | |
download | cmp-aa714b0076c06d7133c625ab22c86114d4f17e23.tar.gz cmp-aa714b0076c06d7133c625ab22c86114d4f17e23.tar.bz2 |
cleanup
Diffstat (limited to 'tests/MetaScanTest')
-rw-r--r-- | tests/MetaScanTest/MetaScanTest.cbp | 69 | ||||
-rw-r--r-- | tests/MetaScanTest/MetaScanTest.depend | 28 | ||||
-rw-r--r-- | tests/MetaScanTest/MetaScanTest.layout | 9 | ||||
-rw-r--r-- | tests/MetaScanTest/main.cpp | 147 |
4 files changed, 253 insertions, 0 deletions
diff --git a/tests/MetaScanTest/MetaScanTest.cbp b/tests/MetaScanTest/MetaScanTest.cbp new file mode 100644 index 0000000..832ce4a --- /dev/null +++ b/tests/MetaScanTest/MetaScanTest.cbp @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="6" /> + <Project> + <Option title="Tests.MetaScanTest" /> + <Option pch_mode="2" /> + <Option compiler="gcc" /> + <Build> + <Target title="Debug"> + <Option output="bin/Debug/Tests" prefix_auto="1" extension_auto="1" /> + <Option object_output="obj/Debug/" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Compiler> + <Add option="-g" /> + </Compiler> + </Target> + <Target title="Release"> + <Option output="bin/Release/Tests" prefix_auto="1" extension_auto="1" /> + <Option object_output="obj/Release/" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Compiler> + <Add option="-O2" /> + </Compiler> + <Linker> + <Add option="-s" /> + </Linker> + </Target> + </Build> + <Compiler> + <Add option="-Wall" /> + <Add option="-fexceptions -std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" /> + <Add option="-D_REENTRANT" /> + <Add option="-D_GNU_SOURCE=1" /> + <Add option="-D_FILE_OFFSET_BITS=64" /> + <Add option="-D_LARGEFILE_SOURCE" /> + <Add option="-D_LARGEFILE64_SOURCE" /> + <Add option="-D__STDC_CONSTANT_MACROS" /> + <Add option="-D__STDC_FORMAT_MACROS" /> + <Add option="-D__STDC_LIMIT_MACROS" /> + <Add directory="../../libs/fsScan/include" /> + <Add directory="../../libs/networking/include" /> + <Add directory="../../libs/IO/include" /> + <Add directory="../../libs/util/include" /> + <Add directory="../../libs/vdr/include" /> + </Compiler> + <Linker> + <Add library="../../libs/fsScan/libfsScan.a" /> + <Add library="../../libs/networking/libnetworking.a" /> + <Add library="../../libs/IO/libIO.a" /> + <Add library="../../libs/util/libutil.a" /> + <Add library="../../libs/vdr/libvdr.a" /> + <Add library="rt" /> + <Add library="pthread" /> + <Add library="ssl" /> + <Add library="crypt" /> + <Add library="pcrecpp" /> + <Add directory="/usr/lib" /> + </Linker> + <Unit filename="main.cpp" /> + <Extensions> + <code_completion /> + <envvars /> + <lib_finder disable_auto="1" /> + <debugger /> + </Extensions> + </Project> +</CodeBlocks_project_file> diff --git a/tests/MetaScanTest/MetaScanTest.depend b/tests/MetaScanTest/MetaScanTest.depend new file mode 100644 index 0000000..aa86b49 --- /dev/null +++ b/tests/MetaScanTest/MetaScanTest.depend @@ -0,0 +1,28 @@ +# depslib dependency file v1.0 +1343547065 source:/d/linux/CMP/tests/MetaScanTest/main.cpp + <File.h> + <FileReader.h> + <LineReader.h> + <ConfigReader.h> + <iostream> + <stdlib.h> + <string.h> + <errno.h> + <fcntl.h> + <stdio.h> + <unistd.h> + <wait.h> + <tr1/tuple> + +1343485153 /d/linux/CMP/libs/IO/include/File.h + <stddef.h> + <sys/types.h> + +1343485153 /d/linux/CMP/libs/IO/include/FileReader.h + +1343485153 /d/linux/CMP/libs/IO/include/LineReader.h + +1343538490 /d/linux/CMP/libs/IO/include/ConfigReader.h + <tuple> + <string> + diff --git a/tests/MetaScanTest/MetaScanTest.layout b/tests/MetaScanTest/MetaScanTest.layout new file mode 100644 index 0000000..c9eeb3d --- /dev/null +++ b/tests/MetaScanTest/MetaScanTest.layout @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_layout_file> + <ActiveTarget name="Debug" /> + <File name="main.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <Cursor> + <Cursor1 position="1602" topLine="0" /> + </Cursor> + </File> +</CodeBlocks_layout_file> diff --git a/tests/MetaScanTest/main.cpp b/tests/MetaScanTest/main.cpp new file mode 100644 index 0000000..62c1bda --- /dev/null +++ b/tests/MetaScanTest/main.cpp @@ -0,0 +1,147 @@ +/* + * test case for scanning of meta data + */ +#include <File.h> +#include <FileReader.h> +#include <LineReader.h> +#include <ConfigReader.h> +#include <iostream> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <unistd.h> +#include <wait.h> +#include <tr1/tuple> + +//static const char *mediaInfo = NULL; +//static const char *ffmpeg = NULL; +static void testPipe(const char *chk = NULL); + +#define ASSERT_IS(rv, x) if (x != rv) { fprintf(stderr, "assertation failed at %s #%d\n",__FILE__,__LINE__); exit(-1); } +#define ASSERT_NOT(rv, x) if (x == rv) { fprintf(stderr, "assertation failed at %s #%d\n",__FILE__,__LINE__); exit(-1); } +#define FAIL(s) fprintf(stderr, s); + +static void parseConfig(const char *FileName) +{ + cConfigReader *cr = new cConfigReader(new cLineReader(new cFileReader(new cFile(FileName)))); + cConfigReader::ConfigEntry *ce; + + while ((ce = cr->ReadValue())) { + std::cout << "config entry [" << std::get<0>(*ce) << "] => " << std::get<1>(*ce) << std::endl; + delete ce; + } + cr->Close(); + delete cr; +} + +static void testMediaFiles(const char *FileName) +{ + cLineReader *lr = new cLineReader(new cFileReader(new cFile(FileName))); + const char *line; + + while ((line = lr->ReadLine())) { + std::cout << "media-test-file: " << line << std::endl; + testPipe(line); + } + lr->Close(); + delete lr; +} + +static const short BufferSize = 100; +enum PipeFileDescriptors { + READ_FD = 0, + WRITE_FD = 1 +}; + +static void testPipe(const char *chk) +{ + int parent2Child[2]; + int child2Parent[2]; + pid_t pid; + std::string dataReadFromChild; + char buffer[BufferSize + 1]; + ssize_t readResult; + bool run = true; + int status; + + ASSERT_IS(0, pipe(parent2Child)); + ASSERT_IS(0, pipe(child2Parent)); + + switch (pid = fork()) { + case -1: + FAIL("fork failed"); + exit(-1); + + case 0: /* child */ + ASSERT_NOT(-1, dup2(parent2Child[READ_FD], STDIN_FILENO)); + ASSERT_NOT(-1, dup2(child2Parent[WRITE_FD], STDOUT_FILENO)); + ASSERT_NOT(-1, dup2(child2Parent[WRITE_FD], STDERR_FILENO)); + ASSERT_IS(0, close(parent2Child[WRITE_FD])); + ASSERT_IS(0, close(child2Parent[READ_FD])); + + if (chk) { + execlp("mediainfo", "mediainfo", chk, NULL); + } + else execlp("ls", "ls", "-al", "--color", NULL); + FAIL("this line should never be reached!"); + exit(-1); + + default: /* parent */ + std::cout << "child " << pid << " process running ..." << std::endl; + + ASSERT_IS(0, close(parent2Child[READ_FD])); + ASSERT_IS(0, close(child2Parent[WRITE_FD])); + + while (run) { + switch (readResult = read(child2Parent[READ_FD], buffer, BufferSize)) { + case 0: /* end of file, or non-blocking read. */ + std::cout << "End of File reached ..." << std::endl + << "Data received was (" + << dataReadFromChild.size() << "):" << std::endl + << dataReadFromChild << std::endl; + ASSERT_IS(pid, waitpid(pid, &status, 0)); + + std::cout << std::endl + << "child exit status is: " << WEXITSTATUS(status) << std::endl << std::endl; +// exit(0); + run = false; + break; + + case -1: + if ((errno == EINTR) || (errno == EAGAIN)) { + errno = 0; + } + else { + FAIL("read() failed"); + run = false; + } break; + + default: + dataReadFromChild.append(buffer, readResult); + break; + } + } + } +} + + +// mediainfo ${media} | grep "Scan type" +// ffmpeg -i ${media} +int main() +{ + parseConfig("srclient.conf"); + + std::cout << std::endl << "===========================================" << std::endl << std::endl; + parseConfig("srserver.conf"); + + std::cout << std::endl << "===========================================" << std::endl << std::endl; + testPipe(); + + std::cout << std::endl << "===========================================" << std::endl << std::endl; + testMediaFiles("testMedia.files"); + + cFile::Cleanup(); + return 0; +} |