podman

Форк
0
/
exec_test.go 
85 строк · 2.5 Кб
1
package bindings_test
2

3
import (
4
	"time"
5

6
	"github.com/containers/podman/v5/pkg/api/handlers"
7
	"github.com/containers/podman/v5/pkg/bindings/containers"
8
	. "github.com/onsi/ginkgo/v2"
9
	. "github.com/onsi/gomega"
10
	"github.com/onsi/gomega/gexec"
11
)
12

13
var _ = Describe("Podman containers exec", func() {
14
	var (
15
		bt *bindingTest
16
		s  *gexec.Session
17
	)
18

19
	BeforeEach(func() {
20
		bt = newBindingTest()
21
		bt.RestoreImagesFromCache()
22
		s = bt.startAPIService()
23
		time.Sleep(1 * time.Second)
24
		err := bt.NewConnection()
25
		Expect(err).ToNot(HaveOccurred())
26
	})
27

28
	AfterEach(func() {
29
		s.Kill()
30
		bt.cleanup()
31
	})
32

33
	It("Podman exec create+start makes an exec session", func() {
34
		name := "testCtr"
35
		cid, err := bt.RunTopContainer(&name, nil)
36
		Expect(err).ToNot(HaveOccurred())
37

38
		execConfig := new(handlers.ExecCreateConfig)
39
		execConfig.Cmd = []string{"echo", "hello world"}
40

41
		sessionID, err := containers.ExecCreate(bt.conn, name, execConfig)
42
		Expect(err).ToNot(HaveOccurred())
43
		Expect(sessionID).To(Not(Equal("")))
44

45
		inspectOut, err := containers.ExecInspect(bt.conn, sessionID, nil)
46
		Expect(err).ToNot(HaveOccurred())
47
		Expect(inspectOut.ContainerID).To(Equal(cid))
48
		Expect(inspectOut.ProcessConfig.Entrypoint).To(Equal("echo"))
49
		Expect(inspectOut.ProcessConfig.Arguments).To(HaveLen(1))
50
		Expect(inspectOut.ProcessConfig.Arguments[0]).To(Equal("hello world"))
51

52
		err = containers.ExecStart(bt.conn, sessionID, nil)
53
		Expect(err).ToNot(HaveOccurred())
54

55
		inspectOut, err = containers.ExecInspect(bt.conn, sessionID, nil)
56
		Expect(err).ToNot(HaveOccurred())
57
		Expect(inspectOut.ContainerID).To(Equal(cid))
58
		Expect(inspectOut.Running).To(BeFalse(), "session should not be running")
59
		Expect(inspectOut.ExitCode).To(Equal(0), "exit code from echo")
60
	})
61

62
	It("Podman exec create with bad command fails", func() {
63
		name := "testCtr"
64
		_, err := bt.RunTopContainer(&name, nil)
65
		Expect(err).ToNot(HaveOccurred())
66

67
		execConfig := new(handlers.ExecCreateConfig)
68

69
		_, err = containers.ExecCreate(bt.conn, name, execConfig)
70
		Expect(err).To(HaveOccurred())
71
	})
72

73
	It("Podman exec create with invalid container fails", func() {
74
		execConfig := new(handlers.ExecCreateConfig)
75
		execConfig.Cmd = []string{"echo", "hello world"}
76

77
		_, err := containers.ExecCreate(bt.conn, "doesnotexist", execConfig)
78
		Expect(err).To(HaveOccurred())
79
	})
80

81
	It("Podman exec inspect on invalid session fails", func() {
82
		_, err := containers.ExecInspect(bt.conn, "0000000000000000000000000000000000000000000000000000000000000000", nil)
83
		Expect(err).To(HaveOccurred())
84
	})
85
})
86

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.