mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-12 19:02:12 +00:00
tests: distinguish between fast and slow tests
Most of the tests are fast and they cover most of the functionality. The slow minority of tests takes significantly more time to run. Developers should run tests frequently in order to get feedback on correctness of their changes. The test runner distinguishes now between fast and slow tests. When given '--fast' switch it skips tests marked as slow. $ time ./test.py [8/8] PASSED tests/memcache/test.py --mode release OK. real 0m33.084s user 0m0.501s sys 0m0.271s $ time ./test.py --fast [8/8] PASSED tests/memcache/test.py --mode release --fast OK. real 0m1.012s user 0m0.464s sys 0m0.247s
This commit is contained in:
7
test.py
7
test.py
@@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
import subprocess
|
||||
|
||||
all_tests = [
|
||||
@@ -18,13 +19,17 @@ def print_status(msg):
|
||||
print('\r' + msg, end='')
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Seastar test runner")
|
||||
parser.add_argument('--fast', action="store_true", help="Run only fast tests")
|
||||
args = parser.parse_args()
|
||||
|
||||
black_hole = open('/dev/null', 'w')
|
||||
|
||||
test_to_run = []
|
||||
for mode in ['debug', 'release']:
|
||||
for test in all_tests:
|
||||
test_to_run.append(os.path.join('build', mode, 'tests', test))
|
||||
test_to_run.append('tests/memcache/test.py ' + os.path.join('build', mode, 'apps', 'memcache', 'memcache') + ' --smp 1')
|
||||
test_to_run.append('tests/memcache/test.py --mode ' + mode + (' --fast' if args.fast else ''))
|
||||
|
||||
all_ok = True
|
||||
|
||||
|
||||
@@ -1,24 +1,30 @@
|
||||
#!/usr/bin/env python3
|
||||
import time
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
import argparse
|
||||
import subprocess
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print('Usage: %s <path-to-memcache> ...' % sys.argv[0])
|
||||
|
||||
memcache_path = sys.argv[1]
|
||||
|
||||
def run(cmd):
|
||||
mc = subprocess.Popen([memcache_path] + sys.argv[2:])
|
||||
def run(args, cmd):
|
||||
mc = subprocess.Popen([os.path.join('build', args.mode, 'apps', 'memcache', 'memcache'), '--smp', '1'])
|
||||
print('Memcache started.')
|
||||
try:
|
||||
time.sleep(0.1)
|
||||
cmdline = ['tests/memcache/test_memcache.py'] + cmd
|
||||
if args.fast:
|
||||
cmdline.append('--fast')
|
||||
print('Running: ' + ' '.join(cmdline))
|
||||
subprocess.check_call(cmdline)
|
||||
finally:
|
||||
print('Killing memcache...')
|
||||
mc.kill()
|
||||
|
||||
run([])
|
||||
run(['-U'])
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Seastar test runner")
|
||||
parser.add_argument('--fast', action="store_true", help="Run only fast tests")
|
||||
parser.add_argument('--mode', action="store", help="Test app in given mode", default='release')
|
||||
args = parser.parse_args()
|
||||
|
||||
run(args, [])
|
||||
run(args, ['-U'])
|
||||
|
||||
@@ -9,6 +9,7 @@ import unittest
|
||||
|
||||
server_addr = None
|
||||
call = None
|
||||
args = None
|
||||
|
||||
@contextmanager
|
||||
def tcp_connection():
|
||||
@@ -20,6 +21,13 @@ def tcp_connection():
|
||||
yield call
|
||||
s.close()
|
||||
|
||||
def slow(f):
|
||||
def wrapper(self):
|
||||
if args.fast:
|
||||
raise unittest.SkipTest('Slow')
|
||||
return f(self)
|
||||
return wrapper
|
||||
|
||||
def recv_all(s):
|
||||
m = b''
|
||||
while True:
|
||||
@@ -119,12 +127,14 @@ class TestCommands(unittest.TestCase):
|
||||
def test_error_handling(self):
|
||||
self.assertEqual(call('get\r\n'), b'ERROR\r\n')
|
||||
|
||||
@slow
|
||||
def test_expiry(self):
|
||||
self.assertEqual(call('set key 0 1 5\r\nhello\r\n'), b'STORED\r\n')
|
||||
self.assertEqual(call('get key\r\n'), b'VALUE key 0 5\r\nhello\r\nEND\r\n')
|
||||
time.sleep(1)
|
||||
self.assertEqual(call('get key\r\n'), b'END\r\n')
|
||||
|
||||
@slow
|
||||
def test_expiry_at_epoch_time(self):
|
||||
expiry = int(time.time()) + 1
|
||||
self.assertEqual(call('set key 0 %d 5\r\nhello\r\n' % expiry), b'STORED\r\n')
|
||||
@@ -159,6 +169,7 @@ if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description="memcache protocol tests")
|
||||
parser.add_argument('--server', '-s', action="store", help="server adddress in <host>:<port> format", default="localhost:11211")
|
||||
parser.add_argument('--udp', '-U', action="store_true", help="Use UDP protocol")
|
||||
parser.add_argument('--fast', action="store_true", help="Run only fast tests")
|
||||
args = parser.parse_args()
|
||||
|
||||
host, port = args.server.split(':')
|
||||
|
||||
Reference in New Issue
Block a user