27bd6842f8
Logging plugins use the same HTTP interface as other plugins for basic command operations meanwhile actual logging operations are handled (on Unix) via a fifo. The plugin interface looks like so: ```go type loggingPlugin interface { StartLogging(fifoPath string, loggingContext Context) error StopLogging(fifoPath) ``` This means a plugin must implement `LoggingDriver.StartLogging` and `LoggingDriver.StopLogging` endpoints and be able to consume the passed in fifo. Logs are sent via stream encoder to the fifo encoded with protobuf. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
27 lines
774 B
Go
27 lines
774 B
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/docker/docker/integration-cli/checker"
|
|
"github.com/go-check/check"
|
|
)
|
|
|
|
func (s *DockerSuite) TestPluginLogDriver(c *check.C) {
|
|
testRequires(c, IsAmd64, DaemonIsLinux)
|
|
|
|
pluginName := "cpuguy83/docker-logdriver-test:latest"
|
|
|
|
dockerCmd(c, "plugin", "install", pluginName)
|
|
dockerCmd(c, "run", "--log-driver", pluginName, "--name=test", "busybox", "echo", "hello")
|
|
out, _ := dockerCmd(c, "logs", "test")
|
|
c.Assert(strings.TrimSpace(out), checker.Equals, "hello")
|
|
|
|
dockerCmd(c, "start", "-a", "test")
|
|
out, _ = dockerCmd(c, "logs", "test")
|
|
c.Assert(strings.TrimSpace(out), checker.Equals, "hello\nhello")
|
|
|
|
dockerCmd(c, "rm", "test")
|
|
dockerCmd(c, "plugin", "disable", pluginName)
|
|
dockerCmd(c, "plugin", "rm", pluginName)
|
|
}
|