def test_run_c_container_ok(self): source = """#include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int i=0, tmp; FILE *fptr; fptr = fopen("/tmp/out.txt", "w"); for (i=1; i< argc; i++) { tmp = 2 * atoi(argv[i]); fprintf(fptr, "%d ", tmp); } fclose(fptr); return 0; }""" bldr = builder.AppBuilder() a = bldr.assembly(source, "c") tag = "test:test" self.docker.build_image(bldr.docker_file_folder, tag) result = self.docker.run_time_container(tag, " ./source.out 1 2 3", memory_limit=20, mem_swappiness=0, timeout=10) self.assertEqual(result[1], "2 4 6 ")
def test_run_python_container_timeout(self): source = """while 1: pass """ bldr = builder.AppBuilder() bldr.assembly(source, "python") tag = "test:test" self.docker.build_image(bldr.docker_file_folder, tag) result = self.docker.run_time_container(tag, " python3 source.py 1 2 3", memory_limit=20, mem_swappiness=0, timeout=3) self.docker.rm_image("test:test") self.assertIsNone(result)
def test_run_python_container_error(self): source = """while 1g: pass """ bldr = builder.AppBuilder() bldr.assembly(source, "python") tag = "test:test" self.docker.build_image(bldr.docker_file_folder, tag) result = self.docker.run_time_container(tag, " python3 source.py 1 2 3", memory_limit=20, mem_swappiness=0, timeout=3) self.docker.rm_image("test:test") self.assertEqual( ' File "source.py", line 1\n while 1g:\n ^\nSyntaxError: invalid syntax\n', result[1])
def test_run_python_container_wrong_answer(self): source = """import sys f = open("/tmp/out.txt", "w") for x in sys.argv[1:]: print(3*int(x), end=' ', file=f) f.close()""" bldr = builder.AppBuilder() bldr.assembly(source, "python") tag = "test:test" self.docker.build_image(bldr.docker_file_folder, tag) result = self.docker.run_time_container(tag, " python3 source.py 1 2 3", memory_limit=100, mem_swappiness=0, timeout=10) self.docker.rm_image("test:test") self.assertNotEqual(result[1], "2 4 6 ")
def cmd_build(entities, pymk_root, args): print("======[Start to build applications]=========") for app in entities.apps: builder.AppBuilder(app, pymk_root) print("======[Finished building applications]======")
def setUp(self): self.app_builder = builder.AppBuilder()