11
. "github.com/containers/podman/v5/test/utils"
12
. "github.com/onsi/ginkgo/v2"
13
. "github.com/onsi/gomega"
16
var _ = Describe("Common functions test", func() {
17
var defaultOSPath string
18
var defaultCgroupPath string
21
defaultOSPath = OSReleasePath
22
defaultCgroupPath = ProcessOneCgroupPath
26
OSReleasePath = defaultOSPath
27
ProcessOneCgroupPath = defaultCgroupPath
30
It("Test CreateTempDirInTempDir", func() {
31
tmpDir, _ := CreateTempDirInTempDir()
32
_, err := os.Stat(tmpDir)
33
Expect(os.IsNotExist(err)).ShouldNot(BeTrue(), "Directory is not created as expect")
36
It("Test SystemExec", func() {
37
session := SystemExec(GoechoPath, []string{})
38
Expect(session.Command.Process).ShouldNot(BeNil(), "SystemExec cannot start a process")
41
DescribeTable("Test GetHostDistributionInfo",
42
func(path, id, ver string, empty bool) {
43
txt := fmt.Sprintf("ID=%s\nVERSION_ID=%s", id, ver)
45
f, _ := os.Create(path)
46
_, err := f.WriteString(txt)
47
Expect(err).ToNot(HaveOccurred(), "Failed to write data.")
52
host := GetHostDistributionInfo()
54
Expect(host).To(Equal(HostOS{}), "HostOs should be empty.")
56
Expect(host.Distribution).To(Equal(strings.Trim(id, "\"")))
57
Expect(host.Version).To(Equal(strings.Trim(ver, "\"")))
60
Entry("Configure file is not exist.", "/tmp/nonexistent", "", "", true),
61
Entry("Item value with and without \"", "/tmp/os-release.test", "fedora", "\"28\"", false),
62
Entry("Item empty with and without \"", "/tmp/os-release.test", "", "\"\"", false),
65
DescribeTable("Test IsKernelNewerThan",
66
func(kv string, expect, isNil bool) {
67
newer, err := IsKernelNewerThan(kv)
68
Expect(newer).To(Equal(expect), "Version compare results is not as expect.")
69
Expect(err == nil).To(Equal(isNil), "Error is not as expect.")
71
Entry("Invalid kernel version: 0", "0", false, false),
72
Entry("Older kernel version:0.0", "0.0", true, true),
73
Entry("Newer kernel version: 100.17.14", "100.17.14", false, true),
74
Entry("Invalid kernel version: I am not a kernel version", "I am not a kernel version", false, false),
77
DescribeTable("Test TestIsCommandAvailable",
78
func(cmd string, expect bool) {
79
cmdExist := IsCommandAvailable(cmd)
80
Expect(cmdExist).To(Equal(expect))
82
Entry("Command exist", GoechoPath, true),
83
Entry("Command exist", "Fakecmd", false),
86
It("Test WriteJSONFile", func() {
87
type testJSON struct {
91
compareData := &testJSON{}
93
testData := &testJSON{
95
Item2: []string{"test"},
98
testByte, err := json.Marshal(testData)
99
Expect(err).ToNot(HaveOccurred(), "Failed to marshal data.")
101
err = WriteJSONFile(testByte, "/tmp/testJSON")
102
Expect(err).ToNot(HaveOccurred(), "Failed to write JSON to file.")
104
read, err := os.Open("/tmp/testJSON")
105
Expect(err).ToNot(HaveOccurred(), "Can not find the JSON file after we write it.")
108
bytes, err := io.ReadAll(read)
109
Expect(err).ToNot(HaveOccurred())
110
err = json.Unmarshal(bytes, compareData)
111
Expect(err).ToNot(HaveOccurred())
113
Expect(reflect.DeepEqual(testData, compareData)).To(BeTrue(), "Data changed after we store it to file.")
116
DescribeTable("Test Containerized",
117
func(path string, setEnv, createFile, expect bool) {
118
if setEnv && (os.Getenv("container") == "") {
119
os.Setenv("container", "test")
120
defer os.Setenv("container", "")
122
if !setEnv && (os.Getenv("container") != "") {
123
containerized := os.Getenv("container")
124
os.Setenv("container", "")
125
defer os.Setenv("container", containerized)
132
f, _ := os.Create(path)
133
_, err := f.WriteString(txt)
134
Expect(err).ToNot(HaveOccurred(), "Failed to write data.")
137
ProcessOneCgroupPath = path
138
Expect(Containerized()).To(Equal(expect))
140
Entry("Set container in env", "", true, false, true),
141
Entry("Can not read from file", "/tmp/nonexistent", false, false, false),
142
Entry("Docker in cgroup file", "/tmp/cgroup.test", false, true, true),
143
Entry("Docker not in cgroup file", "/tmp/cgroup.test", false, true, false),
146
It("Test WriteRSAKeyPair", func() {
147
fileName := "/tmp/test_key"
150
publicKeyFileName, privateKeyFileName, err := WriteRSAKeyPair(fileName, bitSize)
151
Expect(err).ToNot(HaveOccurred(), "Failed to write RSA key pair to files.")
153
read, err := os.Open(publicKeyFileName)
154
Expect(err).ToNot(HaveOccurred(), "Cannot find the public key file after we write it.")
157
read, err = os.Open(privateKeyFileName)
158
Expect(err).ToNot(HaveOccurred(), "Cannot find the private key file after we write it.")