Skip to content

Commit

Permalink
Test new cg2 branch of isolate with Ubuntu 22.04
Browse files Browse the repository at this point in the history
  • Loading branch information
wil93 committed Sep 14, 2024
1 parent f0d969b commit 031a930
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 6 deletions.
8 changes: 8 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@ jobs:
with:
submodules: true

- name: Install isolate v2
run: |
cd isolate && sudo apt-get install -y libcap-dev libsystemd-dev && make isolate && make isolate-cg-keeper && sudo make install && sudo cp systemd/* /etc/systemd/system/ && sudo systemctl daemon-reload && sudo systemctl start isolate.slice && sudo systemctl start isolate.service
- name: Check if isolate is running
run: |
systemctl status isolate.service
- name: Check available cgroups
run: |
mount | grep cgroup
Expand Down
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ RUN apt-get install -y \
libcups2-dev \
libffi-dev \
libpq-dev \
libsystemd-dev \
libyaml-dev \
mono-mcs \
openjdk-8-jdk-headless \
Expand Down
2 changes: 1 addition & 1 deletion cms/grading/Sandbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -1076,7 +1076,7 @@ def build_box_options(self):
if self.box_id is not None:
res += ["--box-id=%d" % self.box_id]
if self.cgroup:
res += ["--cg", "--cg-timing"]
res += ["--cg"]
if self.chdir is not None:
res += ["--chdir=%s" % self.chdir]
for src, dest, options in self.dirs:
Expand Down
5 changes: 5 additions & 0 deletions docker-compose.test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,13 @@ services:
volumes:
- "./codecov:/home/cmsuser/cms/codecov"
privileged: true
cgroup: host
command: >
wait-for-it testdb:5432 -- sh -c "
sudo mkdir /run/isolate ;
echo /sys/fs/cgroup | sudo tee /run/isolate/cgroup ;
isolate --print-cg-root ;
isolate-check-environment ;
dropdb --host=testdb --username=postgres cmsdbfortesting ;
createdb --host=testdb --username=postgres cmsdbfortesting ;
cmsInitDB ;
Expand Down
2 changes: 1 addition & 1 deletion isolate
22 changes: 18 additions & 4 deletions prerequisites.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,9 @@ def build_isolate():
assert_not_root()

print("===== Compiling isolate")
# We make only the executable isolate, otherwise the tool a2x
# is needed and we have to add more compilation dependencies.
subprocess.check_call(["make", "-C", "isolate", "isolate"])
# We make only the executable isolate and isolate-cg-keeper, otherwise the
# tool a2x is needed and we have to add more compilation dependencies.
subprocess.check_call(["make", "--directory", "isolate", "isolate", "isolate-cg-keeper"])


def install_isolate():
Expand All @@ -214,7 +214,7 @@ def install_isolate():
exit(1)

# Check if build_isolate() has been called
if not os.path.exists(os.path.join("isolate", "isolate")):
if not os.path.exists(os.path.join("isolate", "isolate")) or not os.path.exists(os.path.join("isolate", "isolate-cg-keeper")):
print("[Error] You must run the build_isolate command first")
exit(1)

Expand All @@ -224,6 +224,18 @@ def install_isolate():
os.path.join(USR_ROOT, "bin", "isolate"),
root, 0o4750, group=cmsuser_grp)

print("===== Copying isolate-cg-keeper to /usr/local/bin/")
makedir(os.path.join(USR_ROOT, "bin"), root, 0o755)
copyfile(os.path.join(".", "isolate", "isolate-cg-keeper"),
os.path.join(USR_ROOT, "bin", "isolate-cg-keeper"),
root, 0o4750, group=cmsuser_grp)

print("===== Copying isolate-check-environment to /usr/local/bin/")
makedir(os.path.join(USR_ROOT, "bin"), root, 0o755)
copyfile(os.path.join(".", "isolate", "isolate-check-environment"),
os.path.join(USR_ROOT, "bin", "isolate-check-environment"),
root, 0o4750, group=cmsuser_grp)

print("===== Copying isolate config to /usr/local/etc/")
makedir(os.path.join(USR_ROOT, "etc"), root, 0o755)
copyfile(os.path.join(".", "isolate", "default.cf"),
Expand Down Expand Up @@ -374,6 +386,8 @@ def uninstall():

print("===== Deleting isolate from /usr/local/bin/")
try_delete(os.path.join(USR_ROOT, "bin", "isolate"))
try_delete(os.path.join(USR_ROOT, "bin", "isolate-cg-keeper"))
try_delete(os.path.join(USR_ROOT, "bin", "isolate-check-environment"))

print("===== Deleting configuration to /usr/local/etc/")
if ask("Type Y if you really want to remove configuration files: "):
Expand Down

0 comments on commit 031a930

Please sign in to comment.