mirror of
				https://github.com/containers/podman.git
				synced 2025-10-31 10:00:01 +08:00 
			
		
		
		
	 e58cb97de1
			
		
	
	e58cb97de1
	
	
	
		
			
			- Fixes conflicts such as removal of second machine deleting a socket of a the first machine while it's running - Move API socket into runtime directory for consistency - Add API and gvproxy sockets to removal list - Cleanup related logic Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
		
			
				
	
	
		
			120 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package e2e_test
 | |
| 
 | |
| import (
 | |
| 	"github.com/containers/podman/v5/pkg/machine"
 | |
| 	"github.com/containers/podman/v5/pkg/machine/define"
 | |
| 	jsoniter "github.com/json-iterator/go"
 | |
| 
 | |
| 	. "github.com/onsi/ginkgo/v2"
 | |
| 	. "github.com/onsi/gomega"
 | |
| 	. "github.com/onsi/gomega/gexec"
 | |
| )
 | |
| 
 | |
| var _ = Describe("podman inspect stop", func() {
 | |
| 	var (
 | |
| 		mb      *machineTestBuilder
 | |
| 		testDir string
 | |
| 	)
 | |
| 
 | |
| 	BeforeEach(func() {
 | |
| 		testDir, mb = setup()
 | |
| 	})
 | |
| 	AfterEach(func() {
 | |
| 		teardown(originalHomeDir, testDir, mb)
 | |
| 	})
 | |
| 
 | |
| 	It("inspect bad name", func() {
 | |
| 		i := inspectMachine{}
 | |
| 		reallyLongName := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
 | |
| 		session, err := mb.setName(reallyLongName).setCmd(&i).run()
 | |
| 		Expect(err).ToNot(HaveOccurred())
 | |
| 		Expect(session).To(Exit(125))
 | |
| 	})
 | |
| 
 | |
| 	It("inspect two machines", func() {
 | |
| 		i := new(initMachine)
 | |
| 		foo1, err := mb.setName("foo1").setCmd(i.withImage(mb.imagePath)).run()
 | |
| 		Expect(err).ToNot(HaveOccurred())
 | |
| 		Expect(foo1).To(Exit(0))
 | |
| 
 | |
| 		ii := new(initMachine)
 | |
| 		foo2, err := mb.setName("foo2").setCmd(ii.withImage(mb.imagePath)).run()
 | |
| 		Expect(err).ToNot(HaveOccurred())
 | |
| 		Expect(foo2).To(Exit(0))
 | |
| 
 | |
| 		inspect := new(inspectMachine)
 | |
| 		inspect = inspect.withFormat("{{.Name}}")
 | |
| 		inspectSession, err := mb.setName("foo1").setCmd(inspect).run()
 | |
| 		Expect(err).ToNot(HaveOccurred())
 | |
| 		Expect(inspectSession).To(Exit(0))
 | |
| 		Expect(inspectSession.Bytes()).To(ContainSubstring("foo1"))
 | |
| 	})
 | |
| 
 | |
| 	It("inspect with go format", func() {
 | |
| 		name := randomString()
 | |
| 		i := new(initMachine)
 | |
| 		session, err := mb.setName(name).setCmd(i.withImage(mb.imagePath)).run()
 | |
| 		Expect(err).ToNot(HaveOccurred())
 | |
| 		Expect(session).To(Exit(0))
 | |
| 
 | |
| 		// regular inspect should
 | |
| 		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())
 | |
| 
 | |
| 		switch testProvider.VMType() {
 | |
| 		case define.HyperVVirt, define.WSLVirt:
 | |
| 			Expect(inspectInfo[0].ConnectionInfo.PodmanPipe.GetPath()).To(ContainSubstring("podman-"))
 | |
| 		default:
 | |
| 			Expect(inspectInfo[0].ConnectionInfo.PodmanSocket.GetPath()).To(HaveSuffix("api.sock"))
 | |
| 		}
 | |
| 
 | |
| 		inspect := new(inspectMachine)
 | |
| 		inspect = inspect.withFormat("{{.Name}}")
 | |
| 		inspectSession, err = mb.setName(name).setCmd(inspect).run()
 | |
| 		Expect(err).ToNot(HaveOccurred())
 | |
| 		Expect(inspectSession).To(Exit(0))
 | |
| 		Expect(inspectSession.Bytes()).To(ContainSubstring(name))
 | |
| 
 | |
| 		// check invalid template returns error
 | |
| 		inspect = new(inspectMachine)
 | |
| 		inspect = inspect.withFormat("{{.Abcde}}")
 | |
| 		inspectSession, err = mb.setName(name).setCmd(inspect).run()
 | |
| 		Expect(err).ToNot(HaveOccurred())
 | |
| 		Expect(inspectSession).To(Exit(125))
 | |
| 		Expect(inspectSession.errorToString()).To(ContainSubstring("can't evaluate field Abcde in type machine.InspectInfo"))
 | |
| 	})
 | |
| 
 | |
| 	It("inspect shows a unique socket name per machine", func() {
 | |
| 		skipIfVmtype(define.WSLVirt, "test is only relevant for Unix based providers")
 | |
| 		skipIfVmtype(define.HyperVVirt, "test is only relevant for Unix based machines")
 | |
| 
 | |
| 		var socks []string
 | |
| 		for c := 0; c < 2; c++ {
 | |
| 			name := randomString()
 | |
| 			i := new(initMachine)
 | |
| 			session, err := mb.setName(name).setCmd(i.withImage(mb.imagePath)).run()
 | |
| 			Expect(err).ToNot(HaveOccurred())
 | |
| 			Expect(session).To(Exit(0))
 | |
| 
 | |
| 			// regular inspect should
 | |
| 			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())
 | |
| 			socks = append(socks, inspectInfo[0].ConnectionInfo.PodmanSocket.GetPath())
 | |
| 		}
 | |
| 
 | |
| 		Expect(socks[0]).ToNot(Equal(socks[1]))
 | |
| 	})
 | |
| })
 |