Unverified Commit f73d1ade authored by Yifan Xiong's avatar Yifan Xiong Committed by GitHub
Browse files

Runner: Init - Add superbench runner class (#38)

* init runner class with not implemented
parent 7c0534cc
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
"""SuperBench runner module."""
from superbench.runner.runner import SuperBenchRunner
__all__ = ['SuperBenchRunner']
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
"""SuperBench Runner."""
from pathlib import Path
from superbench.common.utils import SuperBenchLogger, logger
class SuperBenchRunner():
"""SuperBench runner class."""
def __init__(self, sb_config, docker_config, ansible_config, output_dir):
"""Initilize.
Args:
sb_config (DictConfig): SuperBench config object.
docker_config (DictConfig): Docker config object.
ansible_config (DictConfig): Ansible config object.
output_dir (str): Dir for output.
"""
self._sb_config = sb_config
self._docker_config = docker_config
self._ansible_config = ansible_config
self._output_dir = output_dir
self.__set_logger('sb-run.log')
logger.info('Runner uses config: %s.', self._sb_config)
logger.info('Runner writes to: %s.', self._output_dir)
def __set_logger(self, filename):
"""Set logger and add file handler.
Args:
filename (str): Log file name.
"""
SuperBenchLogger.add_handler(logger.logger, filename=str(Path(self._output_dir) / filename))
def run(self):
"""Run the SuperBench benchmarks distributedly.
Raises:
NotImplementedError: Not implemented yet.
"""
logger.info(self._sb_config)
logger.error('Work in progress, not implemented yet.')
pass
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
"""SuperBench Runner test."""
import unittest
import shutil
import tempfile
from pathlib import Path
from omegaconf import OmegaConf
from superbench.runner import SuperBenchRunner
class RunnerTestCase(unittest.TestCase):
"""A class for runner test cases."""
def setUp(self):
"""Hook method for setting up the test fixture before exercising it."""
default_config_file = Path(__file__).parent / '../../superbench/config/default.yaml'
self.default_config = OmegaConf.load(str(default_config_file))
self.output_dir = tempfile.mkdtemp()
self.runner = SuperBenchRunner(self.default_config, None, None, self.output_dir)
def tearDown(self):
"""Hook method for deconstructing the test fixture after testing it."""
shutil.rmtree(self.output_dir)
def test_set_logger(self):
"""Test log file exists."""
expected_log_file = Path(self.runner._output_dir) / 'sb-run.log'
self.assertTrue(expected_log_file.is_file())
def test_run(self):
"""Test run."""
self.runner.run()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment