Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
lima-vm
GitHub Repository: lima-vm/lima
Path: blob/master/pkg/networks/commands_test.go
2601 views
1
// SPDX-FileCopyrightText: Copyright The Lima Authors
2
// SPDX-License-Identifier: Apache-2.0
3
4
package networks
5
6
import (
7
"path/filepath"
8
"runtime"
9
"testing"
10
11
"gotest.tools/v3/assert"
12
13
"github.com/lima-vm/lima/v2/pkg/limatype/dirnames"
14
)
15
16
func TestCheck(t *testing.T) {
17
config, err := DefaultConfig()
18
assert.NilError(t, err)
19
20
for _, name := range []string{"bridged", "shared", "host"} {
21
err = config.Check(name)
22
assert.NilError(t, err)
23
}
24
err = config.Check("unknown")
25
assert.ErrorContains(t, err, "not defined")
26
}
27
28
func TestLogFile(t *testing.T) {
29
config, err := DefaultConfig()
30
assert.NilError(t, err)
31
32
logFile := config.LogFile("name", "daemon", "stream")
33
networksDir, err := dirnames.LimaNetworksDir()
34
assert.NilError(t, err)
35
assert.Equal(t, logFile, filepath.Join(networksDir, "name_daemon.stream.log"))
36
}
37
38
func TestUser(t *testing.T) {
39
config, err := DefaultConfig()
40
assert.NilError(t, err)
41
if runtime.GOOS != "darwin" && config.Group == "everyone" {
42
// The "everyone" group is a specific macOS feature to include non-local accounts.
43
config.Group = "staff"
44
}
45
if runtime.GOOS == "windows" {
46
// unimplemented
47
t.Skip()
48
}
49
50
t.Run("socket_vmnet", func(t *testing.T) {
51
if ok, _ := config.IsDaemonInstalled(SocketVMNet); !ok {
52
t.Skip("socket_vmnet is not installed")
53
}
54
user, err := config.User(SocketVMNet)
55
assert.NilError(t, err)
56
assert.Equal(t, user.User, "root")
57
if runtime.GOOS == "darwin" {
58
assert.Equal(t, user.Group, "wheel")
59
} else {
60
assert.Equal(t, user.Group, "root")
61
}
62
assert.Equal(t, user.Uid, uint32(0))
63
assert.Equal(t, user.Gid, uint32(0))
64
})
65
}
66
67
func TestMkdirCmd(t *testing.T) {
68
config, err := DefaultConfig()
69
assert.NilError(t, err)
70
71
cmd := config.MkdirCmd()
72
assert.Equal(t, cmd, "/bin/mkdir -m 775 -p /private/var/run/lima")
73
}
74
75
func TestStartCmd(t *testing.T) {
76
config, err := DefaultConfig()
77
assert.NilError(t, err)
78
79
varRunDir := filepath.Join("/", "private", "var", "run", "lima")
80
81
t.Run("socket_vmnet", func(t *testing.T) {
82
if ok, _ := config.IsDaemonInstalled(SocketVMNet); !ok {
83
t.Skip("socket_vmnet is not installed")
84
}
85
86
cmd := config.StartCmd("shared", SocketVMNet)
87
assert.Equal(t, cmd, "/opt/socket_vmnet/bin/socket_vmnet --pidfile="+filepath.Join(varRunDir, "shared_socket_vmnet.pid")+" --socket-group=everyone --vmnet-mode=shared "+
88
"--vmnet-gateway=192.168.105.1 --vmnet-dhcp-end=192.168.105.254 --vmnet-mask=255.255.255.0 "+filepath.Join(varRunDir, "socket_vmnet.shared"))
89
90
cmd = config.StartCmd("bridged", SocketVMNet)
91
assert.Equal(t, cmd, "/opt/socket_vmnet/bin/socket_vmnet --pidfile="+filepath.Join(varRunDir, "bridged_socket_vmnet.pid")+" --socket-group=everyone --vmnet-mode=bridged "+
92
"--vmnet-interface=en0 "+filepath.Join(varRunDir, "socket_vmnet.bridged"))
93
})
94
}
95
96
func TestStopCmd(t *testing.T) {
97
config, err := DefaultConfig()
98
assert.NilError(t, err)
99
100
varRunDir := filepath.Join("/", "private", "var", "run", "lima")
101
102
cmd := config.StopCmd("name", "daemon")
103
assert.Equal(t, cmd, "/usr/bin/pkill -F "+filepath.Join(varRunDir, "name_daemon.pid"))
104
}
105
106