Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/backup/util/factories/simpletest/testfactory.php
Go to the documentation of this file.
00001 <?php
00002 
00003 // This file is part of Moodle - http://moodle.org/
00004 //
00005 // Moodle is free software: you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation, either version 3 of the License, or
00008 // (at your option) any later version.
00009 //
00010 // Moodle is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 // GNU General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License
00016 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
00017 
00025 // Prevent direct access to this file
00026 if (!defined('MOODLE_INTERNAL')) {
00027     die('Direct access to this script is forbidden.');
00028 }
00029 
00030 // Include all the needed stuff
00031 require_once($CFG->dirroot . '/backup/util/interfaces/checksumable.class.php');
00032 require_once($CFG->dirroot . '/backup/backup.class.php');
00033 require_once($CFG->dirroot . '/backup/util/loggers/base_logger.class.php');
00034 require_once($CFG->dirroot . '/backup/util/loggers/error_log_logger.class.php');
00035 require_once($CFG->dirroot . '/backup/util/loggers/output_indented_logger.class.php');
00036 require_once($CFG->dirroot . '/backup/util/loggers/database_logger.class.php');
00037 require_once($CFG->dirroot . '/backup/util/loggers/file_logger.class.php');
00038 require_once($CFG->dirroot . '/backup/util/factories/backup_factory.class.php');
00039 
00040 /*
00041  * backup_factory tests (all)
00042  */
00043 class backup_factories_test extends UnitTestCase {
00044 
00045     public static $includecoverage = array('backup/util/factories');
00046     public static $excludecoverage = array('backup/util/factories/simpletest');
00047 
00048     protected $errorlogloggerlevel; // To store $CFG->backup_error_log_logger_level
00049     protected $fileloggerlevel; // To store level $CFG->backup_file_logger_level
00050     protected $databaseloggerlevel; // To store $CFG->backup_database_logger_level
00051     protected $outputindentedloggerlevel; // To store $CFG->backup_output_indented_logger_level
00052     protected $fileloggerextra; // To store $CFG->backup_file_logger_extra
00053     protected $fileloggerlevelextra; // To store level $CFG->backup_file_logger_level_extra
00054     protected $debugging; // To store $CFG->debug
00055     protected $debugdisplay; // To store $CFG->debugdisplay
00056 
00057     function setUp() {
00058         global $CFG;
00059         parent::setUp();
00060         // Avoid any file logger to be created, we'll restore original settings on tearDown()
00061         // Fetch the rest of CFG variables to be able to restore them after tests
00062         // and normalize default values
00063         $this->errorlogloggerlevel = isset($CFG->backup_error_log_logger_level) ? $CFG->backup_error_log_logger_level : null;
00064         $CFG->backup_error_log_logger_level = backup::LOG_NONE;
00065 
00066         $this->outputindentedloggerlevel = isset($CFG->backup_output_indented_logger_level) ? $CFG->backup_output_indented_logger_level : null;
00067         $CFG->backup_output_indented_logger_level = backup::LOG_NONE;
00068 
00069         $this->fileloggerlevel = isset($CFG->backup_file_logger_level) ? $CFG->backup_file_logger_level : null;
00070         $CFG->backup_file_logger_level = backup::LOG_NONE;
00071 
00072         $this->databaseloggerlevel = isset($CFG->backup_database_logger_level) ? $CFG->backup_database_logger_level : null;
00073         $CFG->backup_database_logger_level = backup::LOG_NONE;
00074 
00075         $this->fileloggerextra = isset($CFG->backup_file_logger_extra) ? $CFG->backup_file_logger_extra : null;
00076         unset($CFG->backup_file_logger_extra);
00077         $this->fileloggerlevelextra = isset($CFG->backup_file_logger_level_extra) ? $CFG->backup_file_logger_level_extra : null;
00078         $CFG->backup_file_logger_level_extra = backup::LOG_NONE;
00079 
00080         $this->debugging = isset($CFG->debug) ? $CFG->debug : null;
00081         $this->debugdisplay = isset($CFG->debugdisplay) ? $CFG->debugdisplay : null;
00082     }
00083 
00084     function tearDown() {
00085         global $CFG;
00086         // Restore original file_logger levels
00087         if ($this->errorlogloggerlevel !== null) {
00088             $CFG->backup_error_log_logger_level = $this->errorlogloggerlevel;
00089         } else {
00090             unset($CFG->backup_error_log_logger_level);
00091         }
00092 
00093         if ($this->outputindentedloggerlevel !== null) {
00094             $CFG->backup_output_indented_logger_level = $this->outputindentedloggerlevel;
00095         } else {
00096             unset($CFG->backup_output_indented_logger_level);
00097         }
00098 
00099         if ($this->fileloggerlevel !== null) {
00100             $CFG->backup_file_logger_level = $this->fileloggerlevel;
00101         } else {
00102             unset($CFG->backup_file_logger_level);
00103         }
00104 
00105         if ($this->databaseloggerlevel !== null) {
00106             $CFG->backup_database_logger_level = $this->databaseloggerlevel;
00107         } else {
00108             unset($CFG->backup_database_logger_level);
00109         }
00110 
00111         if ($this->fileloggerextra !== null) {
00112             $CFG->backup_file_logger_extra = $this->fileloggerextra;
00113         } else {
00114             unset($CFG->backup_file_logger_extra);
00115         }
00116         if ($this->fileloggerlevelextra !== null) {
00117             $CFG->backup_file_logger_level_extra = $this->fileloggerlevelextra;
00118         } else {
00119             unset($CFG->backup_file_logger_level_extra);
00120         }
00121         // Restore the rest of $CFG settings
00122         if ($this->debugging !== null) {
00123             $CFG->debug = $this->debugging;
00124         } else {
00125             unset($CFG->debug);
00126         }
00127         if ($this->debugdisplay !== null) {
00128             $CFG->debugdisplay = $this->debugdisplay;
00129         } else {
00130             unset($CFG->debugdisplay);
00131         }
00132         parent::tearDown();
00133     }
00134 
00135 
00136     /*
00137      * test get_logger_chain() method
00138      */
00139     function test_backup_factory() {
00140         global $CFG;
00141 
00142         // Default instantiate, all levels = backup::LOG_NONE
00143         // With debugdisplay enabled
00144         $CFG->debugdisplay = true;
00145         $logger1 = backup_factory::get_logger_chain(backup::INTERACTIVE_YES, backup::EXECUTION_INMEDIATE, 'test');
00146         $this->assertTrue($logger1 instanceof error_log_logger);  // 1st logger is error_log_logger
00147         $this->assertEqual($logger1->get_level(), backup::LOG_NONE);
00148         $logger2 = $logger1->get_next();
00149         $this->assertTrue($logger2 instanceof output_indented_logger);  // 2nd logger is output_indented_logger
00150         $this->assertEqual($logger2->get_level(), backup::LOG_NONE);
00151         $logger3 = $logger2->get_next();
00152         $this->assertTrue($logger3 instanceof file_logger);  // 3rd logger is file_logger
00153         $this->assertEqual($logger3->get_level(), backup::LOG_NONE);
00154         $logger4 = $logger3->get_next();
00155         $this->assertTrue($logger4 instanceof database_logger);  // 4th logger is database_logger
00156         $this->assertEqual($logger4->get_level(), backup::LOG_NONE);
00157         $logger5 = $logger4->get_next();
00158         $this->assertTrue($logger5 === null);
00159 
00160         // With debugdisplay disabled
00161         $CFG->debugdisplay = false;
00162         $logger1 = backup_factory::get_logger_chain(backup::INTERACTIVE_YES, backup::EXECUTION_INMEDIATE, 'test');
00163         $this->assertTrue($logger1 instanceof error_log_logger);  // 1st logger is error_log_logger
00164         $this->assertEqual($logger1->get_level(), backup::LOG_NONE);
00165         $logger2 = $logger1->get_next();
00166         $this->assertTrue($logger2 instanceof file_logger);  // 2nd logger is file_logger
00167         $this->assertEqual($logger2->get_level(), backup::LOG_NONE);
00168         $logger3 = $logger2->get_next();
00169         $this->assertTrue($logger3 instanceof database_logger);  // 3rd logger is database_logger
00170         $this->assertEqual($logger3->get_level(), backup::LOG_NONE);
00171         $logger4 = $logger3->get_next();
00172         $this->assertTrue($logger4 === null);
00173 
00174         // Instantiate with debugging enabled and $CFG->backup_error_log_logger_level not set
00175         $CFG->debugdisplay = true;
00176         $CFG->debug = DEBUG_DEVELOPER;
00177         unset($CFG->backup_error_log_logger_level);
00178         $logger1 = backup_factory::get_logger_chain(backup::INTERACTIVE_YES, backup::EXECUTION_INMEDIATE, 'test');
00179         $this->assertTrue($logger1 instanceof error_log_logger);  // 1st logger is error_log_logger
00180         $this->assertEqual($logger1->get_level(), backup::LOG_DEBUG); // and must have backup::LOG_DEBUG level
00181         // Set $CFG->backup_error_log_logger_level to backup::LOG_WARNING and test again
00182         $CFG->backup_error_log_logger_level = backup::LOG_WARNING;
00183         $logger1 = backup_factory::get_logger_chain(backup::INTERACTIVE_YES, backup::EXECUTION_INMEDIATE, 'test');
00184         $this->assertTrue($logger1 instanceof error_log_logger);  // 1st logger is error_log_logger
00185         $this->assertEqual($logger1->get_level(), backup::LOG_WARNING); // and must have backup::LOG_WARNING level
00186 
00187         // Instantiate in non-interactive mode, output_indented_logger must be out
00188         $logger1 = backup_factory::get_logger_chain(backup::INTERACTIVE_NO, backup::EXECUTION_INMEDIATE, 'test');
00189         $logger2 = $logger1->get_next();
00190         $this->assertTrue($logger2 instanceof file_logger);  // 2nd logger is file_logger (output_indented_logger skiped)
00191 
00192         // Define extra file logger and instantiate, should be 5th and last logger
00193         $CFG->backup_file_logger_extra = '/tmp/test.html';
00194         $CFG->backup_file_logger_level_extra = backup::LOG_NONE;
00195         $logger1 = backup_factory::get_logger_chain(backup::INTERACTIVE_YES, backup::EXECUTION_INMEDIATE, 'test');
00196         $logger2 = $logger1->get_next();
00197         $logger3 = $logger2->get_next();
00198         $logger4 = $logger3->get_next();
00199         $logger5 = $logger4->get_next();
00200         $this->assertTrue($logger5 instanceof file_logger);  // 5rd logger is file_logger (extra)
00201         $this->assertEqual($logger3->get_level(), backup::LOG_NONE);
00202         $logger6 = $logger5->get_next();
00203         $this->assertTrue($logger6 === null);
00204     }
00205 }
 All Data Structures Namespaces Files Functions Variables Enumerations