Ejemplo n.º 1
0
function init_args(&$dbHandler, $cfgObj)
{
    $args = new stdClass();
    $_REQUEST = strings_stripSlashes($_REQUEST);
    $tplan_mgr = new testplan($dbHandler);
    // Settings we put on session to create some sort of persistent scope,
    // because we have had issues when passing this info using GET mode (size limits)
    //
    // we get info about build_id, platform_id, etc ...
    getContextFromGlobalScope($args);
    $args->user = $_SESSION['currentUser'];
    $args->user_id = $args->user->dbID;
    $args->caller = isset($_REQUEST['caller']) ? $_REQUEST['caller'] : 'exec_feature';
    $args->reload_caller = false;
    $args->tplan_id = intval(isset($_REQUEST['tplan_id']) ? $_REQUEST['tplan_id'] : $_SESSION['testplanID']);
    $args->tproject_id = intval(isset($_REQUEST['tproject_id']) ? $_REQUEST['tproject_id'] : $_SESSION['testprojectID']);
    if ($args->tproject_id <= 0) {
        $tree_mgr = new tree($dbHandler);
        $dm = $tree_mgr->get_node_hierarchy_info($args->tplan_id);
        $args->tproject_id = $dm['parent_id'];
    }
    if (is_null($args->build_id) || $args->build_id == 0) {
        // Go for the build
        // this info can be present in session, then we will try different ways
        // ATTENTION:
        // give a look to tlTestCaseFilterControl.class.php method init_setting_build()
        //
        $key = $args->tplan_id . '_stored_setting_build';
        $args->build_id = isset($_SESSION[$key]) ? intval($_SESSION[$key]) : null;
        if (is_null($args->build_id)) {
            $args->build_id = $tplan_mgr->get_max_build_id($args->tplan_id, 1, 1);
        }
    }
    if (is_null($args->platform_id) || $args->platform_id <= 0) {
        // Go for the platform (if any exists)
        // this info can be present in session, then we will try different ways
        // ATTENTION:
        // give a look to tlTestCaseFilterControl.class.php method init_setting_platform()
        //
        $itemSet = $tplan_mgr->getPlatforms($args->tplan_id);
        if (!is_null($itemSet)) {
            $key = $args->tplan_id . '_stored_setting_platform';
            $args->platform_id = isset($_SESSION[$key]) ? intval($_SESSION[$key]) : null;
            if (is_null($args->platform_id) || $args->platform_id <= 0) {
                $args->platform_id = $itemSet[0]['id'];
            }
        }
    }
    return array($args, $tplan_mgr);
}
Ejemplo n.º 2
0
/**
 * Migrate the existing user assignments for all test plans and test projects.
 * All test case execution assignments will be stored per build in TL 1.9.
 * So all tester assignments for the test cases in each test plan will be updated 
 * with the ID of the newest available build for that test plan.
 * 
 * @author Andreas Simon
 * @param database $dbHandler
 * @param array $tableSet
 */
function migrate_user_assignments(&$dbHandler, $tableSet)
{
    //$starttime = microtime(true);
    echo 'Step - User Execution Assignment Migration - STARTED <br> ';
    echo 'Working - User Execution Assignment Migration <br> ';
    $testplan_mgr = new testplan($dbHandler);
    // get assignment type for execution
    $assignment_mgr = new assignment_mgr($dbHandler);
    $assignment_types = $assignment_mgr->get_available_types();
    $execution = $assignment_types['testcase_execution']['id'];
    // get table names
    $ua = $tableSet['user_assignments'];
    $tp_tcv = $tableSet['testplan_tcversions'];
    // get list of test plan IDs from the assigned test cases
    $sql = " SELECT distinct T.testplan_id " . " FROM {$ua} UA, {$tp_tcv} T " . " WHERE UA.feature_id = T.id " . " AND (UA.type={$execution} OR UA.type IS NULL) ";
    $testplans = $dbHandler->fetchColumnsIntoArray($sql, 'testplan_id');
    // Get the newest (max) build ID for each of these test plan IDs and store them.
    // In $testplan_builds, we then have an array consisting of testplan_id => max_build_id
    // If no build for a test plan is found, its assignments will not be changed (build_id=0).
    $testplan_builds = array();
    if (!is_null($testplans)) {
        foreach ($testplans as $key => $tp_id) {
            // first we try to get an active build
            $max_build_id = $testplan_mgr->get_max_build_id($tp_id, testplan::GET_ACTIVE_BUILD);
            // if there is no active build, we get the max id no matter if it is active or not
            if ($max_build_id == 0) {
                $max_build_id = $testplan_mgr->get_max_build_id($tp_id);
            }
            if ($max_build_id > 0) {
                $testplan_builds[$tp_id] = $max_build_id;
            }
        }
        // now update all assignments for these test plans
        foreach ($testplan_builds as $testplan_id => $build_id) {
            $subquery = " SELECT id as feature_id FROM {$tp_tcv} " . " WHERE testplan_id = {$testplan_id} ";
            // This update with ALIAS is not LIKED by Postgres
            //
            // OK
            // UPDATE user_assignments UA
            // SET build_id = 2  WHERE UA.feature_id IN
            // ( SELECT id AS feature_id FROM testplan_tcversions  WHERE testplan_id = 70)
            //
            // if used UA.build_id -> problems on Postgre 8.4
            // Message:
            // ERROR:  column "ua" of relation "user_assignments" does not exist
            // LINE 2: SET UA.build_id = 2  WHERE UA.feature_id IN
            // $sql = " UPDATE {$ua} UA " .
            //        " SET UA.build_id = {$build_id} " .
            //        " WHERE UA.feature_id IN($subquery) " .
            //        " AND (UA.type={$execution} OR UA.type IS NULL) ";
            //
            // 20101212 - franciscom
            $sql = " UPDATE {$ua} " . " SET build_id = {$build_id} " . " WHERE feature_id IN({$subquery}) " . " AND (type={$execution} OR type IS NULL) ";
            $dbHandler->exec_query($sql);
        }
    }
    // delete objects
    unset($testplan_mgr);
    // check how long the function is running on huge databases...
    //$endtime = microtime(true) - $starttime;
    //echo "<br/>migrate_user_assignments() needed $endtime seconds to finish<br/>";
    echo 'Step - User Execution Assignment Migration - Finished <br><br> ';
}
Ejemplo n.º 3
0
if ($addTestPlanID) {
    $getArguments .= '&docTestPlanId=' . $args->tplan_id;
}
// generate tree
$tree = null;
$additionalArgs = '';
switch ($args->doc_type) {
    case 'testspec':
    case 'reqspec':
        break;
    case 'testplan':
    case 'testreport':
        $tplan_mgr = new testplan($db);
        $tplan_info = $tplan_mgr->get_by_id($args->tplan_id);
        $testplan_name = htmlspecialchars($tplan_info['name']);
        $latestBuild = $tplan_mgr->get_max_build_id($args->tplan_id);
        $filters = new stdClass();
        $additionalInfo = new stdClass();
        // ----- BUGID 3451 and related ---------------------------------------
        // Notice: these variables were wrong since the changes to filtering system,
        // but they did not cause the bug responsible for 3451.
        // See print.inc.php for the real solution!
        // Set of filters Off
        //		$filters->keyword_id = null;
        //		$filters->keywordsFilterType = null;
        //		$filters->tc_id = null;
        //		$filters->assignedTo = null;
        //		$filters->status = null;
        //		$filters->cf_hash = null;
        //		$filters->platform_id = null;
        //
 /**
  *
  */
 private function init_filter_result()
 {
     $result_key = 'filter_result_result';
     $method_key = 'filter_result_method';
     $build_key = 'filter_result_build';
     if (is_null($this->testplan_mgr)) {
         $this->testplan_mgr = new testplan($this->db);
     }
     $tplan_id = $this->settings['setting_testplan']['selected'];
     $this->configuration->results = config_get('results');
     // determine, which config to load and use for filter methods - depends on mode!
     $cfg = $this->mode == 'execution_mode' ? 'execution_filter_methods' : 'execution_assignment_filter_methods';
     $this->configuration->filter_methods = config_get($cfg);
     //
     // CRITIC - Differences bewteen this configuration and
     // (file const.inc.php)
     // $tlCfg->execution_filter_methods['default_type']
     // $tlCfg->execution_assignment_filter_methods['default_type']
     //
     // Will create issues: you will see an string on HTML SELECT, but code
     // returned on submit will not code for string you are seeing.!!!!
     //
     // determine which filter method shall be selected by the JS function in template,
     // when only one build is selectable by the user
     $js_key_to_select = 0;
     if ($this->mode == 'execution_mode') {
         $js_key_to_select = $this->configuration->filter_methods['status_code']['current_build'];
     } else {
         if ($this->mode == 'plan_mode') {
             $js_key_to_select = $this->configuration->filter_methods['status_code']['specific_build'];
         }
     }
     // values selected by user
     $result_selection = $this->args->{$result_key};
     $method_selection = $this->args->{$method_key};
     $build_selection = $this->args->{$build_key};
     // default values
     $default_filter_method = $this->configuration->filter_methods['default_type'];
     $any_result_key = $this->configuration->results['status_code']['all'];
     $newest_build_id = $this->testplan_mgr->get_max_build_id($tplan_id, testplan::GET_ACTIVE_BUILD);
     if (is_null($method_selection)) {
         $method_selection = $default_filter_method;
     }
     if (is_null($result_selection) || $this->args->reset_filters) {
         // no selection yet or filter reset requested
         $result_selection = $any_result_key;
         $method_selection = $default_filter_method;
         $build_selection = $newest_build_id;
     } else {
         $this->do_filtering = true;
     }
     // init array structure
     $key = 'filter_result';
     $this->filters[$key] = array($result_key => array('items' => null, 'selected' => $result_selection), $method_key => array('items' => array(), 'selected' => $method_selection, 'js_selection' => $js_key_to_select), $build_key => array('items' => null, 'selected' => $build_selection));
     // init menu for result selection by function from exec.inc.php
     $this->filters[$key][$result_key]['items'] = createResultsMenu();
     $this->filters[$key][$result_key]['items'][$any_result_key] = $this->option_strings['any'];
     // init menu for filter method selection
     foreach ($this->configuration->filter_methods['status_code'] as $statusname => $statusshortcut) {
         $code = $this->configuration->filter_methods['status_code'][$statusname];
         $this->filters[$key][$method_key]['items'][$code] = lang_get($this->configuration->filter_methods['status_label'][$statusname]);
     }
     // init menu for build selection
     $this->filters[$key][$build_key]['items'] = $this->testplan_mgr->get_builds_for_html_options($tplan_id, testplan::GET_ACTIVE_BUILD);
     // if "any" is selected, nullify the active filters
     if (is_array($result_selection) && in_array($any_result_key, $result_selection) || $result_selection == $any_result_key) {
         $this->active_filters[$result_key] = null;
         $this->active_filters[$method_key] = null;
         $this->active_filters[$build_key] = null;
         $this->filters[$key][$result_key]['selected'] = $any_result_key;
     } else {
         $this->active_filters[$result_key] = $result_selection;
         $this->active_filters[$method_key] = $method_selection;
         $this->active_filters[$build_key] = $build_selection;
     }
 }
Ejemplo n.º 5
0
/**
 * Migrate the existing user assignments for all test plans and test projects.
 * All test case execution assignments will be stored per build in TL 1.9.
 * So all tester assignments for the test cases in each test plan will be updated 
 * with the ID of the newest available build for that test plan.
 * 
 * @author Andreas Simon
 * @param database $dbHandler
 * @param array $tableSet
 */
function migrate_user_assignments(&$dbHandler, $tableSet)
{
    //$starttime = microtime(true);
    $testplan_mgr = new testplan($dbHandler);
    // get assignment type for execution
    $assignment_mgr = new assignment_mgr($dbHandler);
    $assignment_types = $assignment_mgr->get_available_types();
    $execution = $assignment_types['testcase_execution']['id'];
    // get table names
    $ua = $tableSet['user_assignments'];
    $tp_tcv = $tableSet['testplan_tcversions'];
    // get list of test plan IDs from the assigned test cases
    $sql = " SELECT distinct T.testplan_id " . " FROM {$ua} UA, {$tp_tcv} T " . " WHERE UA.feature_id = T.id " . " AND (UA.type={$execution} OR UA.type IS NULL) ";
    $testplans = $dbHandler->fetchColumnsIntoArray($sql, 'testplan_id');
    // Get the newest (max) build ID for each of these test plan IDs and store them.
    // In $testplan_builds, we then have an array consisting of testplan_id => max_build_id
    // If no build for a test plan is found, its assignments will not be changed (build_id=0).
    $testplan_builds = array();
    foreach ($testplans as $key => $tp_id) {
        // first we try to get an active build
        $max_build_id = $testplan_mgr->get_max_build_id($tp_id, testplan::GET_ACTIVE_BUILD);
        // if there is no active build, we get the max id no matter if it is active or not
        if ($max_build_id == 0) {
            $max_build_id = $testplan_mgr->get_max_build_id($tp_id);
        }
        if ($max_build_id > 0) {
            $testplan_builds[$tp_id] = $max_build_id;
        }
    }
    // now update all assignments for these test plans
    foreach ($testplan_builds as $testplan_id => $build_id) {
        $subquery = " SELECT id as feature_id FROM {$tp_tcv} " . " WHERE testplan_id = {$testplan_id} ";
        $sql = " UPDATE {$ua} UA " . " SET UA.build_id = {$build_id} " . " WHERE UA.feature_id IN({$subquery}) " . " AND (UA.type={$execution} OR UA.type IS NULL) ";
        $dbHandler->exec_query($sql);
    }
    // delete objects
    unset($testplan_mgr);
    // check how long the function is running on huge databases...
    //$endtime = microtime(true) - $starttime;
    //echo "<br/>migrate_user_assignments() needed $endtime seconds to finish<br/>";
}