Esempio n. 1
0
         }
     }
 }
 if ($db->addRow($test, $results)) {
     print_msg(sprintf('Successfully saved %s test results', $test), isset($args['verbose']), __FILE__, __LINE__);
 } else {
     print_msg(sprintf('Failed to save %s test results', $test), isset($args['verbose']), __FILE__, __LINE__, TRUE);
 }
 // save fio results
 if (!isset($args['nosave_fio'])) {
     $files = $test == 'throughput' ? array(sprintf('%s/fio-%s-1024k.json', $dir, $test), sprintf('%s/fio-%s-128k.json', $dir, $test)) : array(sprintf('%s/fio-%s.json', $dir, $test));
     foreach ($files as $file) {
         if (file_exists($file) && ($results = json_decode(file_get_contents($file), TRUE)) && isset($results['jobs'])) {
             $njobs = count($results['jobs']);
             foreach ($results['jobs'] as $i => $job) {
                 if ($row = BlockStorageTest::getFioJobRow($job)) {
                     $row['test'] = $test;
                     $row['iteration'] = $iteration;
                     $row = array_merge(BlockStorageTest::getMetaCols($dir), $row);
                     if ($db->addRow('fio', $row)) {
                         print_msg(sprintf('Successfully saved job %s to fio table', $row['jobname']), isset($args['verbose']), __FILE__, __LINE__);
                     } else {
                         print_msg(sprintf('Failed to save job %s to fio table', $row['jobname']), isset($args['verbose']), __FILE__, __LINE__, TRUE);
                     }
                 } else {
                     print_msg(sprintf('Unable to get fio row data for job %s', $row['jobname']), isset($args['verbose']), __FILE__, __LINE__, TRUE);
                 }
             }
         } else {
             print_msg(sprintf('Failed to save fio results from file %s', basename($file)), isset($args['verbose']), __FILE__, __LINE__, TRUE);
         }
 /**
  * returns a hash of key/value pairs for the fio $job specified
  * @param array $job the job (or job sub-element in recursive calls)
  * @param string $prefix optional prefix
  * @return array
  */
 public static function getFioJobRow(&$job, $prefix = NULL)
 {
     $row = array();
     if (is_array($job)) {
         foreach ($job as $key => $val) {
             // skip some fio metrics
             if (in_array($key, array('ctx', 'groupid', 'latency_depth', 'latency_target', 'latency_percentile', 'latency_window')) || preg_match('/trim/', $key) || preg_match('/error/', $key)) {
                 continue;
             }
             $key = str_replace('.', '_', str_replace('0000', '', str_replace('00000', '', str_replace('.000000', '', str_replace('<', 'lt', str_replace('<=', 'lte', str_replace('>', 'gt', str_replace('>=', 'gte', $key))))))));
             if (preg_match('/0_00/', $key)) {
                 continue;
             }
             if (is_array($val)) {
                 $row = array_merge($row, BlockStorageTest::getFioJobRow($val, str_replace('__', '_', sprintf('%s%s_', $prefix ? $prefix . '_' : '', $key))));
             } else {
                 $row[sprintf('%s%s', $prefix ? $prefix : '', $key)] = $val;
             }
         }
     }
     return $row;
 }