summaryrefslogtreecommitdiff
path: root/tests/MetaScanTest
diff options
context:
space:
mode:
authorgeronimo <geronimo013@gmx.de>2012-07-29 16:00:29 +0200
committergeronimo <geronimo013@gmx.de>2012-07-29 16:00:29 +0200
commitaa714b0076c06d7133c625ab22c86114d4f17e23 (patch)
treef4773543d7c0bf593c20b1a033dea8dc28dd8ad5 /tests/MetaScanTest
parent4039d18078da508ba8c628df8e2aa741cf91f266 (diff)
downloadcmp-aa714b0076c06d7133c625ab22c86114d4f17e23.tar.gz
cmp-aa714b0076c06d7133c625ab22c86114d4f17e23.tar.bz2
cleanup
Diffstat (limited to 'tests/MetaScanTest')
-rw-r--r--tests/MetaScanTest/MetaScanTest.cbp69
-rw-r--r--tests/MetaScanTest/MetaScanTest.depend28
-rw-r--r--tests/MetaScanTest/MetaScanTest.layout9
-rw-r--r--tests/MetaScanTest/main.cpp147
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;
+}