golanggohlsrtmpwebrtcmedia-serverobs-studiortcprtmp-proxyrtmp-serverrtprtsprtsp-proxyrtsp-relayrtsp-serversrtstreamingwebrtc-proxy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.6 KiB
76 lines
1.6 KiB
//go:build enable_highlevel_tests |
|
// +build enable_highlevel_tests |
|
|
|
package highleveltests |
|
|
|
import ( |
|
"os" |
|
"os/exec" |
|
"strconv" |
|
"time" |
|
|
|
"github.com/bluenviron/mediamtx/internal/core" |
|
"github.com/bluenviron/mediamtx/internal/test" |
|
) |
|
|
|
func newInstance(conf string) (*core.Core, bool) { |
|
if conf == "" { |
|
return core.New([]string{}) |
|
} |
|
|
|
tmpf, err := test.CreateTempFile([]byte(conf)) |
|
if err != nil { |
|
return nil, false |
|
} |
|
defer os.Remove(tmpf) |
|
|
|
return core.New([]string{tmpf}) |
|
} |
|
|
|
type container struct { |
|
name string |
|
} |
|
|
|
func newContainer(image string, name string, args []string) (*container, error) { |
|
c := &container{ |
|
name: name, |
|
} |
|
|
|
exec.Command("docker", "kill", "mediamtx-test-"+name).Run() |
|
exec.Command("docker", "wait", "mediamtx-test-"+name).Run() |
|
|
|
// --network=host is needed to test multicast |
|
cmd := []string{ |
|
"docker", "run", |
|
"--network=host", |
|
"--name=mediamtx-test-" + name, |
|
"mediamtx-test-" + image, |
|
} |
|
cmd = append(cmd, args...) |
|
ecmd := exec.Command(cmd[0], cmd[1:]...) |
|
ecmd.Stdout = nil |
|
ecmd.Stderr = os.Stderr |
|
|
|
err := ecmd.Start() |
|
if err != nil { |
|
return nil, err |
|
} |
|
|
|
time.Sleep(1 * time.Second) |
|
|
|
return c, nil |
|
} |
|
|
|
func (c *container) close() { |
|
exec.Command("docker", "kill", "mediamtx-test-"+c.name).Run() |
|
exec.Command("docker", "wait", "mediamtx-test-"+c.name).Run() |
|
exec.Command("docker", "rm", "mediamtx-test-"+c.name).Run() |
|
} |
|
|
|
func (c *container) wait() int { |
|
exec.Command("docker", "wait", "mediamtx-test-"+c.name).Run() |
|
out, _ := exec.Command("docker", "inspect", "mediamtx-test-"+c.name, |
|
"-f", "{{.State.ExitCode}}").Output() |
|
code, _ := strconv.ParseInt(string(out[:len(out)-1]), 10, 32) |
|
return int(code) |
|
}
|
|
|