mirror of https://github.com/containers/podman.git
97 lines
3.0 KiB
Go
97 lines
3.0 KiB
Go
package e2e_test
|
|
|
|
import (
|
|
"context"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"runtime"
|
|
|
|
"github.com/containers/podman/v5/pkg/machine"
|
|
"github.com/docker/docker/client"
|
|
jsoniter "github.com/json-iterator/go"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
. "github.com/onsi/gomega/gexec"
|
|
)
|
|
|
|
const (
|
|
NamedPipeProto = "npipe://"
|
|
)
|
|
|
|
var _ = Describe("run podman API test calls", func() {
|
|
|
|
It("client connect to machine socket", func() {
|
|
if runtime.GOOS == "windows" {
|
|
Skip("Go docker client doesn't support unix socket on Windows")
|
|
}
|
|
name := randomString()
|
|
i := new(initMachine)
|
|
session, err := mb.setName(name).setCmd(i.withImage(mb.imagePath).withNow()).run()
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(session).To(Exit(0))
|
|
|
|
inspectJSON := new(inspectMachine)
|
|
inspectSession, err := mb.setName(name).setCmd(inspectJSON).run()
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(inspectSession).To(Exit(0))
|
|
|
|
var inspectInfo []machine.InspectInfo
|
|
err = jsoniter.Unmarshal(inspectSession.Bytes(), &inspectInfo)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
sockPath := inspectInfo[0].ConnectionInfo.PodmanSocket.GetPath()
|
|
|
|
cli, err := client.NewClientWithOpts(client.WithHost("unix://" + sockPath))
|
|
Expect(err).ToNot(HaveOccurred())
|
|
_, err = cli.Ping(context.Background())
|
|
Expect(err).ToNot(HaveOccurred())
|
|
})
|
|
|
|
It("client connect to machine named pipe", func() {
|
|
if runtime.GOOS != "windows" {
|
|
Skip("test is only supported on Windows")
|
|
}
|
|
name := randomString()
|
|
i := new(initMachine)
|
|
session, err := mb.setName(name).setCmd(i.withImage(mb.imagePath).withNow()).run()
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(session).To(Exit(0))
|
|
|
|
inspectJSON := new(inspectMachine)
|
|
inspectSession, err := mb.setName(name).setCmd(inspectJSON).run()
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(inspectSession).To(Exit(0))
|
|
|
|
var inspectInfo []machine.InspectInfo
|
|
err = jsoniter.Unmarshal(inspectSession.Bytes(), &inspectInfo)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
pipePath := inspectInfo[0].ConnectionInfo.PodmanPipe.GetPath()
|
|
|
|
cli, err := client.NewClientWithOpts(client.WithHost(NamedPipeProto + filepath.ToSlash(pipePath)))
|
|
Expect(err).ToNot(HaveOccurred())
|
|
_, err = cli.Ping(context.Background())
|
|
Expect(err).ToNot(HaveOccurred())
|
|
})
|
|
|
|
It("curl connect to machine socket", func() {
|
|
name := randomString()
|
|
i := new(initMachine)
|
|
session, err := mb.setName(name).setCmd(i.withImage(mb.imagePath).withNow()).run()
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(session).To(Exit(0))
|
|
|
|
inspectJSON := new(inspectMachine)
|
|
inspectSession, err := mb.setName(name).setCmd(inspectJSON).run()
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(inspectSession).To(Exit(0))
|
|
|
|
var inspectInfo []machine.InspectInfo
|
|
err = jsoniter.Unmarshal(inspectSession.Bytes(), &inspectInfo)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
sockPath := inspectInfo[0].ConnectionInfo.PodmanSocket.GetPath()
|
|
|
|
cmd := exec.Command("curl", "--unix-socket", sockPath, "http://d/v5.0.0/libpod/info")
|
|
err = cmd.Run()
|
|
Expect(err).ToNot(HaveOccurred())
|
|
})
|
|
})
|