mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00

Add podman farm build command that sends out builds to nodes defined in the farm, builds the images on the farm nodes, and pulls them back to the local machine to create a manifest list. Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
107 lines
2.4 KiB
Go
107 lines
2.4 KiB
Go
//go:build !remote
|
|
// +build !remote
|
|
|
|
package emulation
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// parseBinfmtMisc parses a binfmt_misc registry entry. It returns the offset,
|
|
// magic, and mask values, or an error if there was an error parsing the data.
|
|
// If the returned offset is negative, the entry was disabled or should be
|
|
// non-fatally ignored for some other reason.
|
|
func TestParseBinfmtMisc(t *testing.T) {
|
|
vectors := []struct {
|
|
platform, contents string
|
|
}{
|
|
{
|
|
"linux/386",
|
|
`
|
|
enabled
|
|
interpreter /usr/bin/qemu-i386-static
|
|
flags: F
|
|
offset 0
|
|
magic 7f454c4601010100000000000000000002000300
|
|
mask fffffffffffefe00fffffffffffffffffeffffff
|
|
`,
|
|
},
|
|
{
|
|
"linux/amd64",
|
|
`
|
|
enabled
|
|
interpreter /usr/bin/qemu-x86_64-static
|
|
flags: F
|
|
offset 0
|
|
magic 7f454c4602010100000000000000000002003e00
|
|
mask fffffffffffefe00fffffffffffffffffeffffff
|
|
`,
|
|
},
|
|
{
|
|
"linux/arm",
|
|
`
|
|
enabled
|
|
interpreter /usr/bin/qemu-arm-static
|
|
flags: F
|
|
offset 0
|
|
magic 7f454c4601010100000000000000000002002800
|
|
mask ffffffffffffff00fffffffffffffffffeffffff
|
|
`,
|
|
},
|
|
{
|
|
"linux/arm64",
|
|
`
|
|
enabled
|
|
interpreter /usr/bin/qemu-aarch64-static
|
|
flags: F
|
|
offset 0
|
|
magic 7f454c460201010000000000000000000200b700
|
|
mask ffffffffffffff00fffffffffffffffffeffffff
|
|
`,
|
|
},
|
|
{
|
|
"linux/ppc64le",
|
|
`
|
|
enabled
|
|
interpreter /usr/bin/qemu-ppc64le-static
|
|
flags: F
|
|
offset 0
|
|
magic 7f454c4602010100000000000000000002001500
|
|
mask ffffffffffffff00fffffffffffffffffeffff00
|
|
`,
|
|
},
|
|
{
|
|
"linux/s390x",
|
|
`
|
|
enabled
|
|
interpreter /usr/bin/qemu-s390x-static
|
|
flags: F
|
|
offset 0
|
|
magic 7f454c4602020100000000000000000000020016
|
|
mask ffffffffffffff00fffffffffffffffffffeffff
|
|
`,
|
|
},
|
|
}
|
|
for i := range vectors {
|
|
v := vectors[i]
|
|
t.Run(v.platform, func(t *testing.T) {
|
|
offset, magic, mask, err := parseBinfmtMisc(fmt.Sprintf("test vector %d", i), strings.NewReader(v.contents))
|
|
require.NoError(t, err, "parseBinfmtMisc: %v", err)
|
|
require.GreaterOrEqual(t, offset, 0, "%q shouldn't have been disabled", v.platform)
|
|
headers := getKnownELFPlatformHeaders()[v.platform]
|
|
matched := false
|
|
for _, header := range headers {
|
|
if magicMatch(header, offset, mask, magic) {
|
|
matched = true
|
|
}
|
|
}
|
|
assert.True(t, matched, "%q did not match an expected header match", v.platform)
|
|
})
|
|
}
|
|
}
|