def set_sanity_patterns(self): self.sanity_patterns = sn.assert_bounded( sn.extractsingle( r'Random: (?P<number>\S+)', self.stdout, 'number', float ), self.lower, self.upper )
def set_sanity_patterns(self): numbers = sn.extractall(r'Random: (?P<number>\S+)', self.stdout, 'number', float) self.sanity_patterns = sn.all([ sn.assert_eq(sn.count(numbers), 100), sn.all(sn.map(lambda x: sn.assert_bounded(x, 90, 100), numbers)) ])
def validate_test(self): numbers = sn.extractall(r'Random: (?P<number>\S+)', self.stdout, 'number', float) return sn.all([ sn.assert_eq(sn.count(numbers), 100), sn.all(sn.map(lambda x: sn.assert_bounded(x, 90, 100), numbers)) ])
def __init__(self): super().__init__() self.valid_systems = ['daint:mc'] self.executable = '/usr/bin/free' self.executable_opts = ['-h'] mem_obtained = sn.extractsingle(r'Mem:\s+(?P<mem>\S+)G', self.stdout, 'mem', float) self.sanity_patterns = sn.assert_bounded(mem_obtained, 122.0, 128.0)
def __init__(self): self.descr = 'Apply a sanity function iteratively' self.valid_systems = ['*'] self.valid_prog_environs = ['*'] self.executable = './random_numbers.sh' numbers = sn.extractall(r'Random: (?P<number>\S+)', self.stdout, 'number', float) self.sanity_patterns = sn.and_( sn.assert_eq(sn.count(numbers), 100), sn.all(sn.map(lambda x: sn.assert_bounded(x, 90, 100), numbers)))
def __init__(self): self.descr = 'A simple test that echoes a random number' self.valid_systems = ['*'] self.valid_prog_environs = ['*'] lower = 90 upper = 100 self.executable = 'echo' self.executable_opts = [ 'Random: ', f'$((RANDOM%({upper}+1-{lower})+{lower}))' ] self.sanity_patterns = sn.assert_bounded( sn.extractsingle(r'Random: (?P<number>\S+)', self.stdout, 'number', float), lower, upper)
def __init__(self): self.descr = ('ReFrame tutorial demonstrating the use of deferred ' 'iteration via the `map` sanity function.') self.valid_systems = ['*'] self.valid_prog_environs = ['*'] self.executable = './random_numbers.sh' numbers = sn.extractall(r'Random: (?P<number>\S+)', self.stdout, 'number', float) self.sanity_patterns = sn.and_( sn.assert_eq(sn.count(numbers), 100), sn.all(sn.map(lambda x: sn.assert_bounded(x, 90, 100), numbers))) self.maintainers = ['put-your-name-here'] self.tags = {'tutorial'}
def __init__(self): self.descr = 'Pre- and post-run demo test' self.valid_systems = ['*'] self.valid_prog_environs = ['*'] self.prerun_cmds = ['source limits.sh'] self.postrun_cmds = ['echo FINISHED'] self.executable = './random_numbers.sh' numbers = sn.extractall(r'Random: (?P<number>\S+)', self.stdout, 'number', float) self.sanity_patterns = sn.all([ sn.assert_eq(sn.count(numbers), 100), sn.all(sn.map(lambda x: sn.assert_bounded(x, 90, 100), numbers)), sn.assert_found(r'FINISHED', self.stdout) ])
def test_assert_bounded(self): self.assertTrue(sn.assert_bounded(1, -1.5, 1.5)) self.assertTrue(sn.assert_bounded(1, upper=1.5)) self.assertTrue(sn.assert_bounded(1, lower=-1.5)) self.assertTrue(sn.assert_bounded(1)) self.assertRaisesRegex(SanityError, 'value 1 not within bounds -0\.5\.\.0\.5', evaluate, sn.assert_bounded(1, -0.5, 0.5)) self.assertRaisesRegex(SanityError, 'value 1 not within bounds -inf\.\.0\.5', evaluate, sn.assert_bounded(1, upper=0.5)) self.assertRaisesRegex(SanityError, 'value 1 not within bounds 1\.5\.\.inf', evaluate, sn.assert_bounded(1, lower=1.5)) self.assertRaisesRegex( SanityError, 'value 1 is out of bounds', evaluate, sn.assert_bounded(1, -0.5, 0.5, 'value {0} is out of bounds'))
def __init__(self, **kwargs): super().__init__('run_only_check', os.path.dirname(__file__), **kwargs) self.descr = ('ReFrame tutorial demonstrating the class' 'RunOnlyRegressionTest') self.valid_systems = ['*'] self.valid_prog_environs = ['*'] lower = 90 upper = 100 self.executable = 'echo $((RANDOM%({1}+1-{0})+{0}))'.format( lower, upper) self.sanity_patterns = sn.assert_bounded( sn.extractsingle(r'(?P<number>\S+)', self.stdout, 'number', float), lower, upper) self.maintainers = ['put-your-name-here'] self.tags = {'tutorial'}
def __init__(self): self.descr = ('ReFrame tutorial demonstrating the class' 'RunOnlyRegressionTest') self.valid_systems = ['*'] self.valid_prog_environs = ['*'] self.sourcesdir = None lower = 90 upper = 100 self.executable = 'echo "Random: $((RANDOM%({1}+1-{0})+{0}))"'.format( lower, upper) self.sanity_patterns = sn.assert_bounded( sn.extractsingle(r'Random: (?P<number>\S+)', self.stdout, 'number', float), lower, upper) self.maintainers = ['put-your-name-here'] self.tags = {'tutorial'}
def __init__(self): self.descr = ('ReFrame tutorial demonstrating the use of ' 'pre- and post-run commands') self.valid_systems = ['*'] self.valid_prog_environs = ['*'] self.pre_run = ['source scripts/limits.sh'] self.post_run = ['echo FINISHED'] self.executable = './random_numbers.sh' numbers = sn.extractall(r'Random: (?P<number>\S+)', self.stdout, 'number', float) self.sanity_patterns = sn.all([ sn.assert_eq(sn.count(numbers), 100), sn.all(sn.map(lambda x: sn.assert_bounded(x, 50, 80), numbers)), sn.assert_found('FINISHED', self.stdout) ]) self.maintainers = ['put-your-name-here'] self.tags = {'tutorial'}
def test_assert_bounded(): assert sn.assert_bounded(1, -1.5, 1.5) assert sn.assert_bounded(1, upper=1.5) assert sn.assert_bounded(1, lower=-1.5) assert sn.assert_bounded(1) with pytest.raises(SanityError, match=r'value 1 not within bounds -0\.5\.\.0\.5'): sn.evaluate(sn.assert_bounded(1, -0.5, 0.5)) with pytest.raises(SanityError, match=r'value 1 not within bounds -inf\.\.0\.5'): sn.evaluate(sn.assert_bounded(1, upper=0.5)) with pytest.raises(SanityError, match=r'value 1 not within bounds 1\.5\.\.inf'): sn.evaluate(sn.assert_bounded(1, lower=1.5)) with pytest.raises(SanityError, match='value 1 is out of bounds'): sn.evaluate(sn.assert_bounded( 1, -0.5, 0.5, 'value {0} is out of bounds'))
def assert_memory_is_bounded(self): mem_obtained = sn.extractsingle(r'Mem:\s+(?P<mem>\S+)G', self.stdout, 'mem', float) return sn.assert_bounded(mem_obtained, 122.0, 128.0)
def assert_solution(self): return sn.assert_bounded( sn.extractsingle(r'Random: (?P<number>\S+)', self.stdout, 'number', float), self.lower, self.upper)