132 lines
4.4 KiB
Python
Executable File
132 lines
4.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
import _prep
|
|
import shutil
|
|
import re
|
|
from osmo_gsm_tester.core import log
|
|
from osmo_gsm_tester.core import config
|
|
from osmo_gsm_tester.core import util
|
|
from osmo_gsm_tester.core import report
|
|
from osmo_gsm_tester.core import scenario
|
|
from osmo_gsm_tester.core import suite
|
|
from osmo_gsm_tester.core.schema import generate_schemas, get_all_schema
|
|
|
|
import xml.etree.ElementTree as et
|
|
|
|
config.override_conf = os.path.join(os.path.dirname(sys.argv[0]), 'paths.conf')
|
|
|
|
example_trial_dir = os.path.join('test_trial_tmp')
|
|
|
|
class FakeTrial(log.Origin):
|
|
def __init__(self):
|
|
super().__init__(log.C_TST, 'trial')
|
|
self.dir = util.Dir(example_trial_dir)
|
|
self._run_dir = None
|
|
|
|
def get_run_dir(self):
|
|
if self._run_dir is not None:
|
|
return self._run_dir
|
|
self._run_dir = util.Dir(self.dir.new_child('test_run'))
|
|
self._run_dir.mkdir()
|
|
return self._run_dir
|
|
|
|
#log.style_change(trace=True)
|
|
|
|
# Generate supported schemas dynamically from objects:
|
|
generate_schemas()
|
|
|
|
print('- non-existing suite dir')
|
|
assert(log.run_logging_exceptions(suite.load, 'does_not_exist') == None)
|
|
|
|
print('- no suite.conf')
|
|
assert(log.run_logging_exceptions(suite.load, 'empty_dir') == None)
|
|
|
|
print('- valid suite dir')
|
|
example_suite_dir = os.path.join('test_suite')
|
|
s_def = suite.load(example_suite_dir)
|
|
assert(isinstance(s_def, suite.SuiteDefinition))
|
|
print(config.tostr(s_def.conf))
|
|
|
|
print('- run hello world test')
|
|
trial = FakeTrial()
|
|
s = suite.SuiteRun(trial, 'test_suite', s_def)
|
|
results = s.run_tests('hello_world.py')
|
|
print(report.suite_to_text(s))
|
|
|
|
print('- run report fragment test')
|
|
results = s.run_tests('test_report_fragment.py')
|
|
print(report.suite_to_text(s))
|
|
xml = et.tostring(report.suite_to_junit(s)).decode('utf-8')
|
|
xml = re.sub('Traceback.*raise', '[BACKTRACE]\nraise', xml, flags=re.M + re.DOTALL)
|
|
print('\n\n################################### junit XML:\n'
|
|
+ xml
|
|
+ '\n###################################\n\n')
|
|
|
|
log.style_change(src=True)
|
|
#log.style_change(trace=True)
|
|
print('\n- a test with an error')
|
|
results = s.run_tests('test_error.py')
|
|
output = report.suite_to_text(s)
|
|
print(output)
|
|
|
|
print('\n- a test with a failure')
|
|
results = s.run_tests('test_fail.py')
|
|
output = report.suite_to_text(s)
|
|
print(output)
|
|
|
|
print('\n- a test with a raised failure')
|
|
results = s.run_tests('test_fail_raise.py')
|
|
output = report.suite_to_text(s)
|
|
print(output)
|
|
|
|
print('- test with half empty scenario')
|
|
trial = FakeTrial()
|
|
sc = scenario.Scenario('foo', 'bar')
|
|
sc['resources'] = { 'bts': [{'type': 'osmo-bts-trx'}] }
|
|
s = suite.SuiteRun(trial, 'test_suite', s_def, [sc])
|
|
results = s.run_tests('hello_world.py')
|
|
print(report.suite_to_text(s))
|
|
|
|
print('- test with scenario')
|
|
trial = FakeTrial()
|
|
sc = scenario.Scenario('foo', 'bar')
|
|
sc['resources'] = { 'bts': [{ 'times': '2', 'type': 'osmo-bts-trx', 'trx_list': [{'nominal_power': '10'}, {'nominal_power': '12'}]}, {'type': 'sysmo'}] }
|
|
s = suite.SuiteRun(trial, 'test_suite', s_def, [sc])
|
|
results = s.run_tests('hello_world.py')
|
|
print(report.suite_to_text(s))
|
|
|
|
print('- test with scenario and modifiers')
|
|
trial = FakeTrial()
|
|
sc = scenario.Scenario('foo', 'bar')
|
|
sc['resources'] = { 'bts': [{ 'times': '2', 'type': 'osmo-bts-trx', 'trx_list': [{'nominal_power': '10'}, {'nominal_power': '12'}]}, {'type': 'sysmo'}] }
|
|
sc['modifiers'] = { 'bts': [{ 'times': '2', 'trx_list': [{'nominal_power': '20'}, {'nominal_power': '20'}]}, {'type': 'sysmo'}] }
|
|
s = suite.SuiteRun(trial, 'test_suite', s_def, [sc])
|
|
s.reserve_resources()
|
|
print(repr(s.reserved_resources))
|
|
results = s.run_tests('hello_world.py')
|
|
print(report.suite_to_text(s))
|
|
|
|
print('- test with suite-specific config')
|
|
trial = FakeTrial()
|
|
sc = scenario.Scenario('foo', 'bar')
|
|
sc['config'] = {'suite': {s.name(): { 'some_suite_global_param': 'heyho', 'test_suite_params': {'one_bool_parameter': 'true', 'second_list_parameter': ['23', '45']}}}}
|
|
s = suite.SuiteRun(trial, 'test_suite', s_def, [sc])
|
|
s.reserve_resources()
|
|
print(repr(s.reserved_resources))
|
|
results = s.run_tests(['test_suite_params.py', 'test_timeout.py'])
|
|
print(report.suite_to_text(s))
|
|
|
|
print('- test with template overlay')
|
|
trial = FakeTrial()
|
|
s_def = suite.load('suiteC')
|
|
s = suite.SuiteRun(trial, 'suiteC', s_def)
|
|
results = s.run_tests('test_template_overlay.py')
|
|
print(report.suite_to_text(s))
|
|
|
|
print('\n- graceful exit.')
|
|
#deleting generated tmp trial dir:
|
|
shutil.rmtree(example_trial_dir, ignore_errors=True)
|
|
|
|
# vim: expandtab tabstop=4 shiftwidth=4
|