ceph/teuthology/test/test_suite.py

140 lines
5.7 KiB
Python
Raw Normal View History

import os
import requests
from datetime import datetime
from pytest import raises, skip
from teuthology.config import config
from teuthology import suite
class TestSuiteOffline(object):
def test_name_timestamp_passed(self):
stamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
name = suite.make_run_name('suite', 'ceph', 'kernel', 'flavor',
'mtype', timestamp=stamp)
assert str(stamp) in name
def test_name_timestamp_not_passed(self):
stamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
name = suite.make_run_name('suite', 'ceph', 'kernel', 'flavor',
'mtype')
assert str(stamp) in name
def test_name_user(self):
name = suite.make_run_name('suite', 'ceph', 'kernel', 'flavor',
'mtype', user='USER')
assert name.startswith('USER-')
def test_distro_defaults_saya(self):
assert suite.get_distro_defaults('ubuntu', 'saya') == ('armv7l',
'saucy', 'deb')
def test_distro_defaults_plana(self):
assert suite.get_distro_defaults('ubuntu', 'plana') == ('x86_64',
'precise',
'deb')
def test_gitbuilder_url(self):
ref_url = "http://gitbuilder.ceph.com/ceph-deb-squeeze-x86_64-basic/"
assert suite.get_gitbuilder_url('ceph', 'squeeze', 'deb', 'x86_64',
'basic') == ref_url
def test_substitute_placeholders(self):
input_dict = dict(
suite='suite',
suite_branch='suite_branch',
ceph_branch='ceph_branch',
ceph_hash='ceph_hash',
teuthology_branch='teuthology_branch',
machine_type='machine_type',
distro='distro',
s3_branch='s3_branch',
)
output_dict = suite.substitute_placeholders(suite.dict_templ,
input_dict)
assert output_dict['suite'] == 'suite'
assert isinstance(suite.dict_templ['suite'], suite.Placeholder)
assert isinstance(
suite.dict_templ['overrides']['admin_socket']['branch'],
suite.Placeholder)
class TestSuiteOnline(object):
def setup(self):
if 'TEST_ONLINE' not in os.environ:
skip("To run these sets, set the environment variable TEST_ONLINE")
def test_ceph_hash_simple(self):
resp = requests.get(
'https://api.github.com/repos/ceph/ceph/git/refs/heads/master')
ref_hash = resp.json()['object']['sha']
assert suite.get_hash('ceph') == ref_hash
def test_kernel_hash_saya(self):
# We don't currently have these packages.
assert suite.get_hash('kernel', 'master', 'basic', 'saya') is None
def test_all_master_branches(self):
# Don't attempt to send email
config.results_email = None
job_config = suite.create_initial_config('suite', 'master',
'master', 'master', 'testing',
'basic', 'centos', 'plana')
assert ((job_config.branch, job_config.teuthology_branch,
job_config.suite_branch) == ('master', 'master', 'master'))
def test_config_bogus_kernel_branch(self):
# Don't attempt to send email
config.results_email = None
with raises(suite.ScheduleFailError):
suite.create_initial_config('s', None, 'master', 't',
'bogus_kernel_branch', 'f', 'd', 'm')
def test_config_bogus_kernel_flavor(self):
# Don't attempt to send email
config.results_email = None
with raises(suite.ScheduleFailError):
suite.create_initial_config('s', None, 'master', 't', 'k',
'bogus_kernel_flavor', 'd', 'm')
def test_config_bogus_ceph_branch(self):
# Don't attempt to send email
config.results_email = None
with raises(suite.ScheduleFailError):
suite.create_initial_config('s', None, 'bogus_ceph_branch', 't',
'k', 'f', 'd', 'm')
def test_config_bogus_suite_branch(self):
# Don't attempt to send email
config.results_email = None
with raises(suite.ScheduleFailError):
suite.create_initial_config('s', 'bogus_suite_branch', 'master',
't', 'k', 'f', 'd', 'm')
def test_config_bogus_teuthology_branch(self):
# Don't attempt to send email
config.results_email = None
with raises(suite.ScheduleFailError):
suite.create_initial_config('s', None, 'master',
'bogus_teuth_branch', 'k', 'f', 'd',
'm')
def test_config_substitution(self):
# Don't attempt to send email
config.results_email = None
job_config = suite.create_initial_config('MY_SUITE', 'master',
'master', 'master', 'testing',
'basic', 'centos', 'plana')
assert job_config['suite'] == 'MY_SUITE'
def test_config_kernel_section(self):
# Don't attempt to send email
config.results_email = None
job_config = suite.create_initial_config('MY_SUITE', 'master',
'master', 'master', 'testing',
'basic', 'centos', 'plana')
assert job_config['kernel']['kdb'] is True
# maybe use notario for the above?