testlinkInitPage($db, false, false, "checkRights"); $templateCfg = templateConfiguration(); $args = init_args(); $gui = initializeGui($db, $args); if ($args->tproject_id) { $tproject_mgr = new testproject($db); $gui->tplans = $args->user->getAccessibleTestPlans($db, $args->tproject_id, null, array('output' => 'mapfull', 'active' => null)); $gui->drawPlatformQtyColumn = false; if (!is_null($gui->tplans) && count($gui->tplans) > 0) { // do this test project has platform definitions ? $tplan_mgr = new testplan($db); $tplan_mgr->platform_mgr->setTestProjectID($args->tproject_id); $dummy = $tplan_mgr->platform_mgr->testProjectCount(); $gui->drawPlatformQtyColumn = $dummy[$args->tproject_id]['platform_qty'] > 0; $tplanSet = array_keys($gui->tplans); $dummy = $tplan_mgr->count_testcases($tplanSet, null, array('output' => 'groupByTestPlan')); $buildQty = $tplan_mgr->get_builds($tplanSet, null, null, array('getCount' => true)); foreach ($tplanSet as $idk) { $gui->tplans[$idk]['tcase_qty'] = isset($dummy[$idk]['qty']) ? intval($dummy[$idk]['qty']) : 0; $gui->tplans[$idk]['build_qty'] = isset($buildQty[$idk]['build_qty']) ? intval($buildQty[$idk]['build_qty']) : 0; if ($gui->drawPlatformQtyColumn) { $plat = $tplan_mgr->getPlatforms($idk); $gui->tplans[$idk]['platform_qty'] = is_null($plat) ? 0 : count($plat); } } unset($tplan_mgr); } unset($tproject_mgr); } $smarty = new TLSmarty(); $smarty->assign('gui', $gui);
function init_args(&$dbHandler) { $argsObj = new stdClass(); $argsObj->doIt = false; $argsObj->showPlatforms = false; $argsObj->tproject_id = isset($_SESSION['testprojectID']) ? $_SESSION['testprojectID'] : 0; $argsObj->tproject_name = isset($_SESSION['testprojectName']) ? $_SESSION['testprojectName'] : ''; $argsObj->tplan_name = ''; $argsObj->tplan_id = isset($_REQUEST['tplan_id']) ? $_REQUEST['tplan_id'] : 0; if ($argsObj->tplan_id == 0) { $argsObj->tplan_id = isset($_SESSION['testplanID']) ? $_SESSION['testplanID'] : 0; } if ($argsObj->tplan_id > 0) { $tplan_mgr = new testplan($dbHandler); $tplan_info = $tplan_mgr->get_by_id($argsObj->tplan_id); $argsObj->tplan_name = $tplan_info['name']; $argsObj->doIt = $tplan_mgr->count_testcases($argsObj->tplan_id) > 0; $argsObj->showPlatforms = $tplan_mgr->hasLinkedPlatforms($argsObj->tplan_id); unset($tplan_mgr); } return $argsObj; }
/** * only active builds has to be used * * @internal revisions * * */ function getMetrics(&$db, $userObj, $args, $result_cfg, $labels) { $user_id = $args->currentUserID; $tproject_id = $args->tproject_id; $linked_tcversions = array(); $metrics = array(); $tplan_mgr = new testplan($db); $show_platforms = false; $platforms = array(); // get all tesplans accessibles for user, for $tproject_id $options = array('output' => 'map'); $options['active'] = $args->show_only_active ? ACTIVE : TP_ALL_STATUS; $test_plans = $userObj->getAccessibleTestPlans($db, $tproject_id, null, $options); // Get count of testcases linked to every testplan // Hmm Count active and inactive ? $linkedItemsQty = $tplan_mgr->count_testcases(array_keys($test_plans), null, array('output' => 'groupByTestPlan')); $metricsMgr = new tlTestPlanMetrics($db); $show_platforms = false; $metrics = array('testplans' => null, 'total' => null); $mm =& $metrics['testplans']; $metrics['total'] = array('active' => 0, 'total' => 0, 'executed' => 0); foreach ($result_cfg['status_label_for_exec_ui'] as $status_code => &$dummy) { $metrics['total'][$status_code] = 0; } $codeStatusVerbose = array_flip($result_cfg['status_code']); foreach ($test_plans as $key => &$dummy) { // We need to know if test plan has builds, if not we can not call any method // that try to get exec info, because you can only execute if you have builds. // // 20130909 - added active filter $buildSet = $tplan_mgr->get_builds($key, testplan::ACTIVE_BUILDS); if (is_null($buildSet)) { continue; } $platformSet = $tplan_mgr->getPlatforms($key); if (isset($platformSet)) { $platforms = array_merge($platforms, $platformSet); } $show_platforms_for_tplan = !is_null($platformSet); $show_platforms = $show_platforms || $show_platforms_for_tplan; if (!is_null($platformSet)) { $neurus = $metricsMgr->getExecCountersByPlatformExecStatus($key, null, array('getPlatformSet' => true, 'getOnlyActiveTCVersions' => true)); $mm[$key]['overall']['active'] = $mm[$key]['overall']['executed'] = 0; foreach ($neurus['with_tester'] as $platform_id => &$pinfo) { $xd =& $mm[$key]['platforms'][$platform_id]; $xd['tplan_name'] = $dummy['name']; $xd['platform_name'] = $neurus['platforms'][$platform_id]; $xd['total'] = $xd['active'] = $neurus['total'][$platform_id]['qty']; $xd['executed'] = 0; foreach ($pinfo as $code => &$elem) { $xd[$codeStatusVerbose[$code]] = $elem['exec_qty']; if ($codeStatusVerbose[$code] != 'not_run') { $xd['executed'] += $elem['exec_qty']; } if (!isset($mm[$key]['overall'][$codeStatusVerbose[$code]])) { $mm[$key]['overall'][$codeStatusVerbose[$code]] = 0; } $mm[$key]['overall'][$codeStatusVerbose[$code]] += $elem['exec_qty']; $metrics['total'][$codeStatusVerbose[$code]] += $elem['exec_qty']; } $mm[$key]['overall']['executed'] += $xd['executed']; $mm[$key]['overall']['active'] += $xd['active']; } unset($neurus); $mm[$key]['overall']['total'] = $mm[$key]['overall']['active']; $metrics['total']['executed'] += $mm[$key]['overall']['executed']; $metrics['total']['active'] += $mm[$key]['overall']['active']; } else { $mm[$key]['overall'] = $metricsMgr->getExecCountersByExecStatus($key, null, array('getOnlyActiveTCVersions' => true)); $mm[$key]['overall']['active'] = $mm[$key]['overall']['total']; // compute executed $mm[$key]['overall']['executed'] = 0; foreach ($mm[$key]['overall'] as $status_code => $qty) { if ($status_code != 'not_run' && $status_code != 'total' && $status_code != 'active') { $mm[$key]['overall']['executed'] += $qty; } if ($status_code != 'total' && $status_code != 'active') { if (!isset($metrics['total'][$status_code])) { $metrics['total'][$status_code] = 0; } $metrics['total'][$status_code] += $qty; } } $metrics['total']['executed'] += $mm[$key]['overall']['executed']; $metrics['total']['active'] += $mm[$key]['overall']['active']; $mm[$key]['platforms'][0] = $mm[$key]['overall']; $mm[$key]['platforms'][0]['tplan_name'] = $dummy['name']; $mm[$key]['platforms'][0]['platform_name'] = $labels['not_aplicable']; } } // remove duplicate platform names $platformsUnique = array(); foreach ($platforms as $platform) { if (!in_array($platform['name'], $platformsUnique)) { $platformsUnique[] = $platform['name']; } } return array($metrics, $show_platforms, $platformsUnique); }
function init_args(&$dbHandler, &$treeMgr) { $iParams = array("format" => array(tlInputParameter::INT_N), "tproject_id" => array(tlInputParameter::INT_N), "tplan_id" => array(tlInputParameter::INT_N), "type" => array(tlInputParameter::STRING_N, 0, 1)); $argsObj = new stdClass(); R_PARAMS($iParams, $argsObj); $argsObj->doIt = false; $argsObj->showPlatforms = false; $argsObj->tproject_name = ''; if ($argsObj->tproject_id > 0) { $dummy = $treeMgr->get_node_hierarchy_info($argsObj->tproject_id); $argsObj->tproject_name = $dummy['name']; } $argsObj->tplan_name = ''; if ($argsObj->tplan_id > 0) { $tplan_mgr = new testplan($dbHandler); $tplan_info = $tplan_mgr->get_by_id($argsObj->tplan_id); $argsObj->tplan_name = $tplan_info['name']; $argsObj->doIt = $tplan_mgr->count_testcases($argsObj->tplan_id) > 0; $argsObj->showPlatforms = $tplan_mgr->hasLinkedPlatforms($argsObj->tplan_id); $getOpt = array('outputFormat' => 'map'); $argsObj->platforms = $tplan_mgr->getPlatforms($argsObj->tplan_id, $getOpt); unset($tplan_mgr); } return $argsObj; }
echo "</pre>"; echo "<pre> get_by_name({$tplan_name})"; echo "</pre>"; $tplan_info = $tplan_mgr->get_by_name($tplan_name); new dBug($tplan_info); echo "<pre> testplan - get_builds(\$tplan_id,\$active=null,\$open=null)"; echo "</pre>"; echo "<pre> get_builds({$tplan_id})"; echo "</pre>"; $all_builds = $tplan_mgr->get_builds($tplan_id); new dBug($all_builds); echo "<pre> testplan - count_testcases(\$tplan_id)"; echo "</pre>"; echo "<pre> count_testcases({$tplan_id})"; echo "</pre>"; $count_testcases = $tplan_mgr->count_testcases($tplan_id); new dBug("Number of testcase linked to test plan=" . $count_testcases); // echo "<pre> testplan - get_linked_tcversions(\$tplan_id,\$tcase_id=null,\$keyword_id=0,\$executed=null, // \$assigned_to=null,\$exec_status=null,\$build_id=0, // \$cf_hash = null)";echo "</pre>"; // echo "<pre> testplan - get_linked_tcversions(\$id,\$filters=null,\$options=null)"; echo "</pre>"; echo "<pre> get_linked_tcversions({$tplan_id})"; echo "</pre>"; $linked_tcversions = $tplan_mgr->get_linked_tcversions($tplan_id); new dBug($linked_tcversions); // ------------------------------------------------------------------------------------------- echo "<hr><h2> Build Manager Class </h2>"; echo "<pre> build manager - constructor - build_mgr(&\$db)"; echo "</pre>";
/** * * @internal revisions * */ function getMetrics(&$db, $userObj, $args, $result_cfg, $labels) { $user_id = $args->currentUserID; $tproject_id = $args->tproject_id; $linked_tcversions = array(); $metrics = array(); $tplan_mgr = new testplan($db); $show_platforms = false; $platforms = array(); // get all tesplans accessibles for user, for $tproject_id $options['active'] = $args->show_only_active ? ACTIVE : TP_ALL_STATUS; $test_plans = $userObj->getAccessibleTestPlans($db, $tproject_id, null, $options); // Get count of testcases linked to every testplan foreach ($test_plans as $key => $value) { $tplan_id = $value['id']; $linked_tcversions[$tplan_id] = null; $platformSet = $tplan_mgr->getPlatforms($tplan_id); if (isset($platformSet)) { $platforms = array_merge($platforms, $platformSet); } else { $platforms[]['name'] = $labels['not_aplicable']; } $show_platforms_for_tplan = !is_null($platformSet); if (!$show_platforms_for_tplan) { // Julian: replaced array(0=>'') $platformSet = array(0 => array('id' => 0)); } else { // 20110615 - Julian - if at least 1 test plan of the test project uses platforms // we need to display platform column on metrics dashboard $show_platforms = true; } # initialize counters foreach ($platformSet as $platform_id => $platform_name) { $metrics['testplans'][$tplan_id]['platforms'][$platform_name['id']]['tplan_name'] = $value['name']; $metrics['testplans'][$tplan_id]['platforms'][$platform_name['id']]['platform_name'] = $platform_name['id'] == 0 ? $labels['not_aplicable'] : $platform_name['name']; $metrics['testplans'][$tplan_id]['platforms'][$platform_name['id']]['active'] = 0; $metrics['testplans'][$tplan_id]['overall']['active'] = 0; $metrics['total']['active'] = 0; $metrics['testplans'][$tplan_id]['platforms'][$platform_name['id']]['executed'] = 0; $metrics['testplans'][$tplan_id]['overall']['executed'] = 0; $metrics['total']['executed'] = 0; foreach ($result_cfg['status_label'] as $key => $status) { $metrics['testplans'][$tplan_id]['platforms'][$platform_name['id']][$key] = 0; $metrics['testplans'][$tplan_id]['overall'][$key] = 0; $metrics['total'][$key] = 0; } } if (($linkedItemsQty = $tplan_mgr->count_testcases($tplan_id)) > 0) { $executed = null; $not_run = null; // get executions ON ACTIVE BUILDS // // IMPORTANTE NOTICE // using 'output' => 'mapOfMap' means we will get JUST ONE exec record for test case / platform // $options = array('output' => 'mapOfMap', 'steps_info' => 0, 'build_active_status' => 'active'); $filters = null; $executed[$tplan_id] = $tplan_mgr->get_linked_tcversions($tplan_id, $filters, $options); // Simple test to cope with active/inactive build if (is_null($executed[$tplan_id])) { // need a simple call to get linked items and set status to NOT RUN on all items. $filters = null; $options = array('output' => 'mapOfMap', 'steps_info' => 0, 'forced_exec_status' => $result_cfg['status_code']['not_run']); $executed[$tplan_id] = $tplan_mgr->get_linked_tcversions($tplan_id, $filters, $options); } else { // get NOT EXECUTED on ACTIVE BUILDS and EXECUTED on INACTIVE BUILDS // EXECUTED on INACTIVE BUILDS are candidate to become NOT EXECUTED on ACTIVE BUILDS // $options = array('output' => 'mapOfMap', 'steps_info' => 0, 'build_active_status' => 'active', 'forced_exec_status' => $result_cfg['status_code']['not_run']); $filters = array('exec_status' => $result_cfg['status_code']['not_run']); $not_run[$tplan_id] = $tplan_mgr->get_linked_tcversions($tplan_id, $filters, $options); } // Time to work on keys $notRunKeys = array_keys($not_run[$tplan_id]); foreach ($notRunKeys as $tcaseIDkey) { // BUGID 4362 // Mistake was this: // isset($executed[$tplan_id][$key2copy]) // just means we have found at least one execution. // But inside the element we have a map indexed by platform id. // If we have N platforms, and have exec on M, we have M elements // and MISS TO ADD the N-M NOT EXECUTED generating the issue. if (!isset($executed[$tplan_id][$tcaseIDkey])) { $executed[$tplan_id][$tcaseIDkey] = array(); } $executed[$tplan_id][$tcaseIDkey] += $not_run[$tplan_id][$tcaseIDkey]; } $linked_tcversions[$tplan_id] = (array) $executed[$tplan_id]; } // test plan has linked items } // Get count of executed testcases foreach ($linked_tcversions as $tplan_id => $tcinfo) { if (!is_null($tcinfo)) { foreach ($tcinfo as $tcase_id => $tc) { foreach ($tc as $platform_id => $value) { if ($value['active']) { // count number of active test cases for each platform, each test plan // and whole project $metrics['testplans'][$tplan_id]['platforms'][$platform_id]['active']++; $metrics['testplans'][$tplan_id]['overall']['active']++; $metrics['total']['active']++; // count number of test cases depending on execution status (result) for // each platform, each test plan and whole project $status_key = array_keys($result_cfg['status_code'], $value['exec_status']); $metrics['testplans'][$tplan_id]['platforms'][$platform_id][$status_key[0]]++; $metrics['testplans'][$tplan_id]['overall'][$status_key[0]]++; $metrics['total'][$status_key[0]]++; // count number of executed test cases for each platform, each test plan and // the whole project // // 20110317 - do not know how we do not have tested for exec status <> not_run // After change done to fix inactive build behaviour we need to check for // execution status // if ($value['exec_id'] > 0) if ($value['exec_status'] != $result_cfg['status_code']['not_run']) { $metrics['testplans'][$tplan_id]['platforms'][$platform_id]['executed']++; $metrics['testplans'][$tplan_id]['overall']['executed']++; $metrics['total']['executed']++; } } } } } } // remove duplicate platform names $platforms_no_duplicates = array(); foreach ($platforms as $platform) { if (!in_array($platform['name'], $platforms_no_duplicates)) { $platforms_no_duplicates[] = $platform['name']; } } return array($metrics, $show_platforms, $platforms_no_duplicates); }