Skip to content

Commit

Permalink
Merge pull request #168 from stgraber/v2
Browse files Browse the repository at this point in the history
Update Github workflows
  • Loading branch information
stgraber authored Sep 26, 2023
2 parents be98af2 + 7789c61 commit 182fb71
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 38 deletions.
33 changes: 22 additions & 11 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
fail-fast: false
matrix:
go:
- 1.18.x
- 1.20.x
- stable
os:
- ubuntu-20.04
Expand All @@ -27,7 +27,7 @@ jobs:
- name: Install dependencies
run: |
sudo add-apt-repository ppa:ubuntu-lxc/daily -y
sudo apt-get install -qq lxc lxc-dev pkg-config uidmap busybox libdbus-1-dev libseccomp-dev libcap-dev
sudo apt-get install -qq apparmor lxc lxc-dev pkg-config uidmap busybox libdbus-1-dev libseccomp-dev libcap-dev libselinux-dev
- name: Setup test environment
run: |
Expand Down Expand Up @@ -55,17 +55,28 @@ jobs:
DOWNLOAD_KEYSERVER: keyserver.ubuntu.com
run: |
# Make all cgroups writable
for d in /sys/fs/cgroup/*; do
[ -f $d/cgroup.clone_children ] && echo 1 | sudo tee $d/cgroup.clone_children
[ -f $d/cgroup.use_hierarchy ] && echo 1 | sudo tee $d/cgroup.use_hierarchy
if [ ! -e /sys/fs/cgroup/cgroup.controllers ]; then
# CGroup 1
for d in /sys/fs/cgroup/*; do
[ -f $d/cgroup.clone_children ] && echo 1 | sudo tee $d/cgroup.clone_children
[ -f $d/cgroup.use_hierarchy ] && echo 1 | sudo tee $d/cgroup.use_hierarchy
sudo mkdir -p $d/lxc-test
sudo chown -R $USER: $d/lxc-test
echo $$ | sudo tee $d/lxc-test/cgroup.procs
done
sudo mkdir -p $d/lxc-test
sudo chown -R $USER: $d/lxc-test
echo $$ | sudo tee $d/lxc-test/cgroup.procs
done
# Run the unprivileged tests
./go-lxc.test -test.v -test.coverprofile=/tmp/unpriv.out
# Run the unprivileged tests
./go-lxc.test -test.v -test.coverprofile=/tmp/unpriv.out
else
# CGroup 2
sudo mkdir -p /sys/fs/cgroup/lxc-test
sudo chown -R $USER: /sys/fs/cgroup/lxc-test
echo $$ | sudo tee /sys/fs/cgroup/lxc-test/cgroup.procs
# Run the unprivileged tests
systemd-run --unit=go-lxc-test --user --scope -p "Delegate=yes" ./go-lxc.test -test.v -test.coverprofile=/tmp/unpriv.out
fi
- name: Privileged tests
env:
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module github.com/lxc/go-lxc

go 1.18
go 1.20

require golang.org/x/sys v0.9.0
require golang.org/x/sys v0.12.0
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s=
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
100 changes: 77 additions & 23 deletions lxc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,23 +191,6 @@ func TestDefined_Negative(t *testing.T) {
}
}

func TestExecute(t *testing.T) {
if unprivileged() {
t.Skip("skipping test in unprivileged mode.")
}

c, err := NewContainer(ContainerName())
if err != nil {
t.Errorf(err.Error())
}
defer c.Release()

c.SetConfigItem("lxc.apparmor.profile", "unconfined")
if _, err := c.Execute("/bin/true"); err != nil {
t.Errorf(err.Error())
}
}

func TestSetVerbosity(t *testing.T) {
c, err := NewContainer(ContainerName())
if err != nil {
Expand Down Expand Up @@ -724,13 +707,29 @@ func TestSetCgroupItem(t *testing.T) {

maxMem := c.CgroupItem("memory.max_usage_in_bytes")[0]
currentMem := c.CgroupItem("memory.limit_in_bytes")[0]
if err := c.SetCgroupItem("memory.limit_in_bytes", maxMem); err != nil {
t.Errorf(err.Error())
}
newMem := c.CgroupItem("memory.limit_in_bytes")[0]
if maxMem == "" && currentMem == "" {
// Cgroup2 handling.
maxMem := c.CgroupItem("memory.peak")[0]
currentMem := c.CgroupItem("memory.max")[0]

if err := c.SetCgroupItem("memory.max", maxMem); err != nil {
t.Errorf(err.Error())
}
newMem := c.CgroupItem("memory.max")[0]

if newMem == currentMem {
t.Errorf("SetCgroupItem failed...")
}
} else {
// Cgroup1 handling.
if err := c.SetCgroupItem("memory.limit_in_bytes", maxMem); err != nil {
t.Errorf(err.Error())
}
newMem := c.CgroupItem("memory.limit_in_bytes")[0]

if newMem == currentMem {
t.Errorf("SetCgroupItem failed...")
if newMem == currentMem {
t.Errorf("SetCgroupItem failed...")
}
}
}

Expand Down Expand Up @@ -800,6 +799,11 @@ func TestMemoryUsage(t *testing.T) {
defer c.Release()

if _, err := c.MemoryUsage(); err != nil {
if err == ErrMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}
}
Expand All @@ -812,6 +816,11 @@ func TestKernelMemoryUsage(t *testing.T) {
defer c.Release()

if _, err := c.KernelMemoryUsage(); err != nil {
if err == ErrKMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}
}
Expand Down Expand Up @@ -852,6 +861,11 @@ func TestMemoryLimit(t *testing.T) {
defer c.Release()

if _, err := c.MemoryLimit(); err != nil {
if err == ErrMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}
}
Expand All @@ -864,6 +878,11 @@ func TestSoftMemoryLimit(t *testing.T) {
defer c.Release()

if _, err := c.SoftMemoryLimit(); err != nil {
if err == ErrMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}
}
Expand All @@ -876,6 +895,11 @@ func TestKernelMemoryLimit(t *testing.T) {
defer c.Release()

if _, err := c.KernelMemoryLimit(); err != nil {
if err == ErrKMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}
}
Expand Down Expand Up @@ -905,15 +929,30 @@ func TestSetMemoryLimit(t *testing.T) {

oldMemLimit, err := c.MemoryLimit()
if err != nil {
if err == ErrMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}

if err := c.SetMemoryLimit(oldMemLimit * 4); err != nil {
if err == ErrMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}

newMemLimit, err := c.MemoryLimit()
if err != nil {
if err == ErrMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}

Expand All @@ -931,15 +970,30 @@ func TestSetSoftMemoryLimit(t *testing.T) {

oldMemLimit, err := c.MemoryLimit()
if err != nil {
if err == ErrMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}

if err := c.SetSoftMemoryLimit(oldMemLimit * 4); err != nil {
if err == ErrMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}

newMemLimit, err := c.SoftMemoryLimit()
if err != nil {
if err == ErrMemLimit {
t.Skip("Skipping test due to kernel support (maybe cgroup2?)")
return
}

t.Errorf(err.Error())
}

Expand Down

0 comments on commit 182fb71

Please sign in to comment.