Skip to content

Commit fafdc66

Browse files
committed
pandas package tests
1 parent 309292a commit fafdc66

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

scripts/package_tests.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#! /bin/env python3
2+
3+
'''Many popular PyPI packages (e.g., pandas, scikit-learn, etc) have
4+
extensive tests. We want those packages to work on OL, so we run
5+
these inside the SOCK containers. Some of these suites take quite
6+
long (e.g., 20+ minutes), so we set large timeouts. Very high memory
7+
limits (>1GB) are also necessary.
8+
'''
9+
10+
import argparse
11+
import os
12+
13+
from helper import DockerWorker, SockWorker, prepare_open_lambda, setup_config
14+
from helper import TestConfContext, assert_eq
15+
16+
from helper.test import set_test_filter, start_tests, check_test_results, set_worker_type, test
17+
18+
from open_lambda import OpenLambda
19+
20+
# These will be set by argparse in main()
21+
OL_DIR = None
22+
23+
@test
24+
def pandas_test():
25+
open_lambda = OpenLambda()
26+
result = open_lambda.run("pandas-tests", None)
27+
assert_eq(result, True)
28+
29+
def run_tests():
30+
with TestConfContext(mem_pool_mb=6000, limits={"mem_mb": 2000, "max_runtime_default": 3600}):
31+
pandas_test()
32+
33+
def main():
34+
global OL_DIR
35+
36+
parser = argparse.ArgumentParser(description='Run tests for OpenLambda')
37+
parser.add_argument('--reuse_config', action="store_true")
38+
parser.add_argument('--worker_type', type=str, default="sock")
39+
parser.add_argument('--test_filter', type=str, default="")
40+
parser.add_argument('--registry', type=str, default="test-registry")
41+
parser.add_argument('--ol_dir', type=str, default="test-dir")
42+
43+
args = parser.parse_args()
44+
45+
set_test_filter([name for name in args.test_filter.split(",") if name != ''])
46+
OL_DIR = args.ol_dir
47+
48+
setup_config(args.ol_dir)
49+
prepare_open_lambda(args.ol_dir)
50+
51+
trace_config = {
52+
"cgroups": True,
53+
"memory": True,
54+
"evictor": True,
55+
"package": True,
56+
}
57+
with TestConfContext(registry=os.path.abspath(args.registry), trace=trace_config):
58+
if args.worker_type == 'docker':
59+
set_worker_type(DockerWorker)
60+
elif args.worker_type == 'sock':
61+
set_worker_type(SockWorker)
62+
else:
63+
raise RuntimeError(f"Invalid worker type {args.worker_type}")
64+
65+
start_tests()
66+
run_tests()
67+
68+
check_test_results()
69+
70+
if __name__ == '__main__':
71+
main()

0 commit comments

Comments
 (0)