1414from openml .testing import TestBase
1515from openml .runs .functions import _run_task_get_arffcontent , \
1616 _get_seeded_model , _run_exists , _extract_arfftrace , \
17- _extract_arfftrace_attributes , _prediction_to_row
17+ _extract_arfftrace_attributes , _prediction_to_row , _check_n_jobs
1818
1919from sklearn .naive_bayes import GaussianNB
2020from sklearn .model_selection ._search import BaseSearchCV
@@ -431,6 +431,7 @@ def test_run_with_classifiers_in_param_grid(self):
431431 task = task , model = clf , avoid_duplicate_runs = False )
432432
433433 def test__run_task_get_arffcontent (self ):
434+ timing_measures = {'usercpu_time_millis_testing' , 'usercpu_time_millis_training' , 'usercpu_time_millis' }
434435 task = openml .tasks .get_task (7 )
435436 class_labels = task .class_labels
436437 num_instances = 3196
@@ -444,13 +445,29 @@ def test__run_task_get_arffcontent(self):
444445 clf , task , class_labels )
445446
446447 clf = SGDClassifier (loss = 'log' , random_state = 1 )
447- arff_datacontent , arff_tracecontent , _ , _ = openml .runs .functions ._run_task_get_arffcontent (
448- clf , task , class_labels )
448+ res = openml .runs .functions ._run_task_get_arffcontent (clf , task , class_labels )
449+ arff_datacontent , arff_tracecontent , _ , detailed_evaluations = res
449450 # predictions
450451 self .assertIsInstance (arff_datacontent , list )
451452 # trace. SGD does not produce any
452453 self .assertIsInstance (arff_tracecontent , type (None ))
453454
455+ self .assertIsInstance (detailed_evaluations , dict )
456+ if sys .version_info [:2 ] >= (3 , 3 ): # check_n_jobs follows from the used clf:
457+ self .assertEquals (set (detailed_evaluations .keys ()), timing_measures )
458+ for measure in timing_measures :
459+ num_rep_entrees = len (detailed_evaluations [measure ])
460+ self .assertEquals (num_rep_entrees , num_repeats )
461+ for rep in range (num_rep_entrees ):
462+ num_fold_entrees = len (detailed_evaluations [measure ][rep ])
463+ self .assertEquals (num_fold_entrees , num_folds )
464+ for fold in range (num_fold_entrees ):
465+ evaluation = detailed_evaluations [measure ][rep ][fold ]
466+ self .assertIsInstance (evaluation , float )
467+ self .assertGreater (evaluation , 0 ) # should take at least one millisecond (?)
468+ self .assertLess (evaluation , 60 ) # pessimistic
469+
470+
454471 # 10 times 10 fold CV of 150 samples
455472 self .assertEqual (len (arff_datacontent ), num_instances * num_repeats )
456473 for arff_line in arff_datacontent :
0 commit comments