#!/usr/bin/env python3 import glob import pytest import subprocess from collections import namedtuple from os.path import abspath, basename from os import listdir Workload = namedtuple('Workload', ['name', 'filename']) Platform = namedtuple('Platform', ['name', 'filename']) Scheduler = namedtuple('Scheduler', ['name', 'short_name']) def pytest_generate_tests(metafunc): if 'platform_monoC' in metafunc.fixturenames: platform_files = glob.glob('test/platforms/monocore/*.xml') platforms = [Platform( name=basename(platform_file).replace('.xml', ''), filename=abspath(platform_file)) for platform_file in platform_files] metafunc.parametrize('platform_monoC', platforms) if 'workload_static' in metafunc.fixturenames: workload_files = glob.glob('test/workloads/static/*.json') workloads = [Workload( name=basename(workload_file).replace('.json', ''), filename=abspath(workload_file)) for workload_file in workload_files] metafunc.parametrize('workload_static', workloads) if 'platform_multiC' in metafunc.fixturenames: platform_files = glob.glob('test/platforms/multicore/*.xml') platforms = [Platform( name=basename(platform_file).replace('.xml', ''), filename=abspath(platform_file)) for platform_file in platform_files] metafunc.parametrize('platform_multiC', platforms) if 'sched_mono' in metafunc.fixturenames: scheds = [ Scheduler('easy_bf', 'easy'), Scheduler('fcfs', 'fcfs') ] metafunc.parametrize('sched_mono', scheds) if 'sched_multi' in metafunc.fixturenames: scheds = [ Scheduler('multicore_filler', 'filler'), Scheduler('bin_packing', 'bp'), Scheduler('bin_packing_energy', 'bpNRJ') ] metafunc.parametrize('sched_multi', scheds) if 'test_with_expected_log' in metafunc.fixturenames: instance_files = glob.glob('test/expected_log/*') instances = [basename(instance_file).replace('_jobs.csv', '') for instance_file in instance_files] metafunc.parametrize('test_with_expected_log', instances) if 'test_with_expected_behavior' in metafunc.fixturenames: instance_files = glob.glob('test/expected_behavior_log/*') instances = [basename(instance_file).replace('_user_stats_behaviors.csv', '') for instance_file in instance_files] metafunc.parametrize('test_with_expected_behavior', instances) # def pytest_cmdline_preparse(config, args): # html_file = "test-out/testreport.html" # print('HTML report file:', html_file) # args.extend(['--html', html_file, '--self-contained-html'])