How to use run_container method in lisa

Best Python code snippet using lisa_python

compile.py

Source:compile.py Github

copy

Full Screen

...24 return ["Failed to stop container.", error]25 rmCont, error = subprocess.Popen(["docker", "container", "rm", containerID, ], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()26 if len(error) != 0:27 return ["Failed to remove container.", error]28def run_container(containerID, filename, input_file):29 #RUNS AND COMPILES FILE IN CONTAINER30 #copy user code and input files to container31 subprocess.run([ "docker", "cp", filename, containerID + ":" + "/testing"])32 subprocess.run(["docker", "cp", input_file, containerID + ":" + "/input"])33 #run the container34 runCont = subprocess.Popen(["docker", "container", "start", "-a", containerID, ], stdout=subprocess.PIPE, stderr=subprocess.PIPE)35 #get outputs or errors36 output, error = runCont.communicate()37 exitstatus = subprocess.Popen(["docker", "inspect", containerID, "--format='{{.State.ExitCode}}'"], stdout=subprocess.PIPE)38 exitcode = exitstatus.communicate()[0]39 #Returns to the user that the container was timed out or that output was too long. Both security measures to prevent malicious code from crashing the server.40 if exitcode.decode().strip() == "'124'":41 output = "Time limit exceeded".encode()42 if len(output) > 2000:43 output = "Output exceeds size limit".encode()44 45 46 if len(error) != 0:47 return['error', error]48 else:49 return['worked', output]50def add_language_extension(filename, language):51 language_mapping = {'java':'.java', 'python':'.py', 'c':'.c'}52 if language in language_mapping:53 return filename + language_mapping[language]54 else:55 raise Exception('language not supported')56def test(candidate, testname, username, language, input=None):57 #if there is no container assigned, set up new one58 containerID = getattr(candidate, "containerID")59 if len(containerID) == 0:60 containerID = create_container()61 if len(containerID) != 0:62 Candidate.objects.filter(user=candidate.user).update(containerID=containerID)63 else:64 return ["Error creating container.", 0,0]65 else:66 containerID = getattr(candidate, "containerID")67 filename = os.path.join(USER_DIR, username, testname, add_language_extension('main', language))68 testfolder = os.path.join(TEST_DIR, testname)69 70 test_cases = os.listdir(os.path.join(testfolder, 'input'))71 outputs = []72 73 if input==None:74 testingInput = 'noncustom'75 else:76 testingInput = input77 #Results for run78 passes = 079 fails = 080 result = 081 if testingInput == 'noncustom':82 for i, test_case in enumerate(test_cases):83 out_str = "Test Case " + str(i+1) + ":\n"84 testingInput = os.path.join(testfolder, 'input', test_case.strip())85 output = run_container(containerID, filename, testingInput)86 87 if output[0] == 'error':88 out_str+=output[1].decode('ascii')89 else:90 with open(os.path.join(testfolder, 'output', test_case.strip()), 'r') as f:91 data = f.read()92 #test case result93 result = data.strip() == output[1].strip().decode("ASCII")94 out_str += str(result) +"\n"95 out_str += output[1].strip().decode("ASCII") + "\n"96 outputs.append(out_str + "\n")97 98 if result != 0:99 passes += 1100 else:101 fails +=1102 return outputs, passes, fails103 else:104 output = run_container(containerID, filename, testingInput)105 #add error handling106 return ["Custom testing", output[1]]107""" 108Function to test the code run on the code review page109Takes in the name of the test, username of code being tested, testing language and input for use if custom input is selected110Returns test output, test passes and fails111If custom input is selected returns just the output112"""113def reviewtest(testname, candusername, language,username , input=None):114 containerID = create_container()115 filename = os.path.join(USER_DIR, candusername, testname,username, 'temp', add_language_extension('main', language))116 117 testfolder = os.path.join(TEST_DIR, testname)118 passes = 0119 fails = 0120 result = 0121 122 test_cases = os.listdir(os.path.join(testfolder, 'input'))123 outputs = []124 if input==None:125 testingInput = 'noncustom'126 else:127 testingInput = input128 if testingInput == 'noncustom':129 for i, test_case in enumerate(test_cases):130 out_str = "Test Case " + str(i+1) + ":\n"131 output = run_container(containerID, filename, os.path.join(testfolder, 'input', test_case.strip()))132 if output[0] == 'error':133 out_str+=output[1].decode('ascii')134 135 else:136 with open(os.path.join(testfolder, 'output', test_case.strip()), 'r') as f:137 data = f.read()138 result = data.strip() == output[1].strip().decode("ASCII")139 out_str += str(data.strip() == output[1].strip().decode("ASCII")) +"\n"140 out_str += output[1].strip().decode("ASCII") + "\n"141 142 outputs.append(out_str + "\n")143 if result != 0:144 passes += 1145 else:146 fails +=1147 return outputs, passes, fails148 else:149 output = run_container(containerID, filename, testingInput)150 #add error handling151 return ["Custom testing", output[1]]152 153 remove_container(containerID)...

Full Screen

Full Screen

ui_run.py

Source:ui_run.py Github

copy

Full Screen

1# -*- coding: utf-8 -*-2# Form implementation generated from reading ui file 'ui/run.ui'3#4# Created by: PyQt5 UI code generator 5.12.35#6# WARNING! All changes made in this file will be lost!7from PyQt5 import QtCore, QtGui, QtWidgets8from breezy.plugins.qbrz.lib.i18n import gettext9class Ui_RunDialog(object):10 def setupUi(self, RunDialog):11 RunDialog.setObjectName("RunDialog")12 RunDialog.resize(473, 367)13 self.main_v_layout = QtWidgets.QVBoxLayout(RunDialog)14 self.main_v_layout.setObjectName("main_v_layout")15 self.splitter = QtWidgets.QSplitter(RunDialog)16 self.splitter.setOrientation(QtCore.Qt.Vertical)17 self.splitter.setOpaqueResize(False)18 self.splitter.setChildrenCollapsible(False)19 self.splitter.setObjectName("splitter")20 self.run_container = QtWidgets.QGroupBox(self.splitter)21 self.run_container.setObjectName("run_container")22 self.run_container_layout = QtWidgets.QVBoxLayout(self.run_container)23 self.run_container_layout.setObjectName("run_container_layout")24 self.wd_layout = QtWidgets.QHBoxLayout()25 self.wd_layout.setObjectName("wd_layout")26 self.wd_label = QtWidgets.QLabel(self.run_container)27 self.wd_label.setObjectName("wd_label")28 self.wd_layout.addWidget(self.wd_label)29 self.wd_edit = QtWidgets.QLineEdit(self.run_container)30 self.wd_edit.setObjectName("wd_edit")31 self.wd_layout.addWidget(self.wd_edit)32 self.browse_button = QtWidgets.QPushButton(self.run_container)33 self.browse_button.setObjectName("browse_button")34 self.wd_layout.addWidget(self.browse_button)35 self.run_container_layout.addLayout(self.wd_layout)36 self.cmd_layout = QtWidgets.QGridLayout()37 self.cmd_layout.setObjectName("cmd_layout")38 self.cat_label = QtWidgets.QLabel(self.run_container)39 self.cat_label.setObjectName("cat_label")40 self.cmd_layout.addWidget(self.cat_label, 0, 0, 1, 1)41 self.cat_combobox = QtWidgets.QComboBox(self.run_container)42 self.cat_combobox.setMinimumSize(QtCore.QSize(170, 0))43 self.cat_combobox.setObjectName("cat_combobox")44 self.cmd_layout.addWidget(self.cat_combobox, 0, 1, 1, 1)45 self.cmd_label = QtWidgets.QLabel(self.run_container)46 self.cmd_label.setObjectName("cmd_label")47 self.cmd_layout.addWidget(self.cmd_label, 1, 0, 1, 1)48 self.cmd_combobox = QtWidgets.QComboBox(self.run_container)49 self.cmd_combobox.setMinimumSize(QtCore.QSize(170, 0))50 self.cmd_combobox.setEditable(True)51 self.cmd_combobox.setObjectName("cmd_combobox")52 self.cmd_layout.addWidget(self.cmd_combobox, 1, 1, 1, 1)53 self.hidden_checkbox = QtWidgets.QCheckBox(self.run_container)54 self.hidden_checkbox.setObjectName("hidden_checkbox")55 self.cmd_layout.addWidget(self.hidden_checkbox, 1, 2, 1, 1)56 self.run_container_layout.addLayout(self.cmd_layout)57 self.opt_arg_label = QtWidgets.QLabel(self.run_container)58 self.opt_arg_label.setLineWidth(0)59 self.opt_arg_label.setObjectName("opt_arg_label")60 self.run_container_layout.addWidget(self.opt_arg_label)61 self.opt_arg_edit = QtWidgets.QLineEdit(self.run_container)62 self.opt_arg_edit.setObjectName("opt_arg_edit")63 self.run_container_layout.addWidget(self.opt_arg_edit)64 self.opt_arg_btn_layout = QtWidgets.QHBoxLayout()65 self.opt_arg_btn_layout.setObjectName("opt_arg_btn_layout")66 self.directory_button = QtWidgets.QPushButton(self.run_container)67 self.directory_button.setObjectName("directory_button")68 self.opt_arg_btn_layout.addWidget(self.directory_button)69 self.filenames_button = QtWidgets.QPushButton(self.run_container)70 self.filenames_button.setObjectName("filenames_button")71 self.opt_arg_btn_layout.addWidget(self.filenames_button)72 spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)73 self.opt_arg_btn_layout.addItem(spacerItem)74 self.run_container_layout.addLayout(self.opt_arg_btn_layout)75 self.help_browser = QtWidgets.QTextBrowser(self.run_container)76 self.help_browser.setObjectName("help_browser")77 self.run_container_layout.addWidget(self.help_browser)78 self.subprocess_container = QtWidgets.QWidget(self.splitter)79 self.subprocess_container.setObjectName("subprocess_container")80 self.subprocess_container_layout = QtWidgets.QVBoxLayout(self.subprocess_container)81 self.subprocess_container_layout.setContentsMargins(0, 0, 0, 0)82 self.subprocess_container_layout.setObjectName("subprocess_container_layout")83 self.main_v_layout.addWidget(self.splitter)84 self.wd_label.setBuddy(self.wd_edit)85 self.cat_label.setBuddy(self.cmd_combobox)86 self.cmd_label.setBuddy(self.cmd_combobox)87 self.opt_arg_label.setBuddy(self.opt_arg_edit)88 self.retranslateUi(RunDialog)89 RunDialog.disableUi['bool'].connect(self.run_container.setDisabled)90 QtCore.QMetaObject.connectSlotsByName(RunDialog)91 RunDialog.setTabOrder(self.wd_edit, self.browse_button)92 RunDialog.setTabOrder(self.browse_button, self.hidden_checkbox)93 RunDialog.setTabOrder(self.hidden_checkbox, self.cmd_combobox)94 RunDialog.setTabOrder(self.cmd_combobox, self.opt_arg_edit)95 RunDialog.setTabOrder(self.opt_arg_edit, self.directory_button)96 RunDialog.setTabOrder(self.directory_button, self.filenames_button)97 RunDialog.setTabOrder(self.filenames_button, self.help_browser)98 def retranslateUi(self, RunDialog):99 _translate = QtCore.QCoreApplication.translate100 RunDialog.setWindowTitle(_translate("RunDialog", "Run bzr command"))101 self.run_container.setTitle(_translate("RunDialog", "Options"))102 self.wd_label.setText(_translate("RunDialog", "&Working directory:"))103 self.browse_button.setText(_translate("RunDialog", "&Browse..."))104 self.cat_label.setText(_translate("RunDialog", "C&ategory:"))105 self.cmd_label.setText(_translate("RunDialog", "&Command:"))106 self.hidden_checkbox.setText(_translate("RunDialog", "&Show hidden commands"))107 self.opt_arg_label.setText(_translate("RunDialog", "&Options and arguments for command:"))108 self.directory_button.setText(_translate("RunDialog", "Insert &directory..."))...

Full Screen

Full Screen

test_containers.py

Source:test_containers.py Github

copy

Full Screen

...9 sys.exit(1)10if not IMAGE_DIR.exists():11 print(f"Expected image directory at {IMAGE_DIR}", file=sys.stderr)12 sys.exit(1)13def run_container(14 new_hostname: str,15 image_dir: Path,16 num_proc: int,17 program_path: Path,18 program_args: List[str],19 valgrind: bool = False20) -> subprocess.CompletedProcess:21 default_args = [str(CONTAINER_EXE), new_hostname, str(image_dir), str(num_proc), str(program_path)] \22 + program_args23 args = ["valgrind"] + default_args if valgrind else default_args24 return subprocess.run(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,25 universal_newlines=True, timeout=60)26def test_hostname():27 res = run_container(new_hostname="testHostName", image_dir=IMAGE_DIR,28 num_proc=5, program_path=Path("/bin/hostname"), program_args=[])29 assert res.returncode == 030 assert res.stderr == ""31 assert res.stdout.strip() == "testHostName"32def test_program_args():33 res = run_container(new_hostname="testHostName", image_dir=IMAGE_DIR,34 num_proc=5, program_path=Path("/bin/bash"), program_args=[ "--help"])35 assert res.returncode == 036 assert res.stderr == ""37 assert "GNU bash, version" in res.stdout38def test_max_processes():39 res = run_container(new_hostname="testHostName", image_dir=IMAGE_DIR,40 num_proc=2, program_path=Path("/bin/bash"), program_args=["-c", "sleep 3 | sleep 3"])41 assert res.returncode == 042 assert "No child processes" in res.stderr43def test_proc_mounted():44 res = run_container(new_hostname="testHostName", image_dir=IMAGE_DIR,45 num_proc=10, program_path=Path("/bin/findmnt"),46 program_args=[])47 assert res.returncode == 048 assert res.stderr == ""49 assert "/proc" in res.stdout50def test_proc_unmounted():51 res = run_container(new_hostname="testHostName", image_dir=IMAGE_DIR,52 num_proc=10, program_path=Path("/bin/bash"),53 program_args=[])54 res2 = subprocess.run(["findmnt | grep /image/proc"], stdin=subprocess.PIPE,55 stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, timeout=60, shell=True)56 assert res.returncode == 057 assert res.stderr == ""58 assert res2.stdout == ""59def test_valgrind_happy_flow():60 res = run_container(new_hostname="testHostName", image_dir=IMAGE_DIR,61 num_proc=10, program_path=Path("/bin/sleep"),62 program_args=["3"], valgrind=True)63 assert res.returncode == 0...

Full Screen

Full Screen

get_run_container.py

Source:get_run_container.py Github

copy

Full Screen

1# coding=utf82# Autor : Dennis zhang3# Time : 2018/6/25 10:044# File : get_run_container.py5# Software PyCharm6from api.open_api import bash7def get_container_list(src_str):8 ret_dict={}9 container_list=[]10 for o in src_str:11 dict_value_list=[]12 exce_order = "ansible %s -m shell -a \"docker ps\"\13 |egrep -v \"SUCCESS\"|egrep -v \"CONTAINER ID\"|grep -v '|'|awk -F \" \" \'{print $2}\'"%o14 print(exce_order)15 str_run_container = bash(exce_order)16 run_container = str_run_container.replace('\n',' ',len(str_run_container)).split(' ')17 if len(run_container) > 1:18 container_list=container_list+run_container[:len(run_container)-1]19 dict_value_list=dict_value_list+run_container[:len(run_container)-1]20 ret_dict.update(dict({o:dict_value_list}))21 return container_list,ret_dict22def list_trans_dict(src):23 ret_dict={}24 for key, values in src.items():25 for o in values:26 midd=o.split(':')27 print("-----list_trans_dict----midd----",midd)28 ret_dict.update(dict({midd[0]:[midd[1], key]}))29 return ret_dict30def compare_dict(src_dict,dest_dict):31 ret_src_dict={}32 ret_dest_dict={}33 ret_list = []34 for o in src_dict.keys():35 mid_values = list(src_dict[o])36 if o not in dest_dict.keys():37 ret_values = str(o)+":"+str(mid_values[0])38 ret_src_dict.update({ret_values:mid_values[1]})39 else:40 mid_dest_values = list(dest_dict[o])41 if mid_values[0] != mid_dest_values[0]:42 ret_dest_values = str(o)+":"+mid_dest_values[0]43 ret_src_values = str(o)+":"+str(mid_values[0])44 dest_dict_ret = {ret_dest_values:mid_dest_values[1]}45 src_dict_ret = {ret_src_values:mid_values[1]}46 mid_ret_list = []47 mid_ret_list.append(dest_dict_ret)48 mid_ret_list.append(src_dict_ret)49 ret_list.append(mid_ret_list)50 print("------ret_src_dict---------",ret_src_dict)51 print("--------ret_list-------",ret_list)...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run lisa automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful