root/library/tests/testsuite/logger_test.cpp @ 907

Revision 907, 2.4 kB (checked in by mido, 14 years ago)

LOG LEVEL improved and hopefully finished

  • Property svn:eol-style set to native
RevLine 
[386]1#include "base/loggers.h"
[717]2#include "../test_util.h"
[469]3#include "osutils.h"
[425]4#include "UnitTest++.h"
5#include <string>
[548]6#include <stdexcept>
[425]7#include <sys/stat.h>
8#include <sys/types.h>
[553]9
10#ifndef WIN32
[548]11#include <unistd.h>
[553]12#endif
[87]13
[254]14using namespace bdm;
[87]15
[548]16int get_file_size ( const char *fname ) {
17        struct stat st;
18        if ( stat ( fname, &st ) ) {
19                std::string msg = "can't stat ";
20                msg += fname;
21                throw std::runtime_error ( msg );
22        }
23
[722]24        int sz = static_cast<int> ( st.st_size );
[548]25        if ( sz != st.st_size ) {
26                std::string msg = fname;
27                msg += " too big";
28                throw std::runtime_error ( msg );
29        }
30
31        return sz;
32}
33
[907]34class log_tester : public root
35{
36        LOG_LEVEL(log_tester,logr,logth,logpol);
37public:
38        RV th, r;
39        int pol, i;
40
41        log_tester() {
42                th = RV ( "{alog blog }" );
43                r = RV ( "{r }", "2" );
44                pol = 11;
45
46                log_level[logr] = true;
47                log_level[logth] = true;
48                log_level[logpol] = true;
49        }
50
51        void log_register( logger &L, const string prefix ) {
52                root::log_register( L, prefix );
53                L.add_vector( log_level, logr, r, prefix );
54                L.add_vector( log_level, logth, th, prefix );
55                L.add_setting( log_level, logpol, prefix );
56        }
57
58        void log_write() const {
59                root::log_write();
60                log_level.store( logr, vec_2 ( ( double ) i, ( double ) ( i + 1 ) ) );
61                log_level.store( logth, vec_2 ( ( double ) ( 100 - i ), ( double ) ( i - 50 ) ) );
62                log_level.store( logpol, pol );
63        }
64
65};
66
[689]67TEST ( memlog_test ) {
[728]68        string ls ( "memlog_test" );
[548]69        remove_all ( ls.c_str() );
70
71        memlog logger ( 100, ls );
72
[737]73
[907]74        log_tester tester;
75        tester.log_register( logger, "memlog" );
76       
[548]77        logger.init();
78
[907]79        for ( tester.i = 0; tester.i < 10; tester.i++ ) {
80                tester.log_write();
[548]81                logger.step();
82        }
83
84        logger.finalize();
85
[737]86        CHECK_EQUAL ( get_file_size ( "logger_test.matrix" ), get_file_size ( ( ls + ".it" ).c_str() ) );
87        CHECK_EQUAL ( get_file_size ( ( ls + ".cfg.check" ).c_str() ), get_file_size ( ( ls + ".cfg" ).c_str() ) );
[548]88}
89
[689]90TEST ( dirfilelog_test ) {
[87]91
[907]92
[477]93        string ls ( "exp" );
94        remove_all ( ls.c_str() );
95        makedir ( ls, false );
[723]96        remove_all ( "dirfilelog_files" );
[87]97
[907]98        dirfilelog logger ( "dirfilelog_files", 10 );
[425]99
[907]100        log_tester tester;
101        tester.log_register( logger, "dirfilelog" );   
[425]102
[907]103        logger.init();
[425]104
[907]105        for ( tester.i = 0; tester.i < 150; tester.i++ ) {
106                tester.log_write();
107                logger.step();
[477]108        }
[425]109
[907]110        logger.finalize();
[425]111
[721]112        std::string expected ( load_test_file ( "logger_test_dirfile_format.matrix" ) );
[723]113        std::string actual ( load_test_file ( "dirfilelog_files/format" ) );
[477]114        CHECK_EQUAL ( expected, actual );
[87]115}
Note: See TracBrowser for help on using the browser.