Skip to content

Commit 4ed995a

Browse files
committed
driver/docker: rename container logger
1 parent ae7b169 commit 4ed995a

File tree

7 files changed

+103
-100
lines changed

7 files changed

+103
-100
lines changed

drivers/docker/docklog/client.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import (
66
"github.com/hashicorp/nomad/drivers/docker/docklog/proto"
77
)
88

9-
// docklogClient implements the Docklog interface for client side requests
10-
type docklogClient struct {
11-
client proto.DocklogClient
9+
// dockerLoggerClient implements the dockerLogger interface for client side requests
10+
type dockerLoggerClient struct {
11+
client proto.DockerLoggerClient
1212
}
1313

1414
// Start proxies the Start client side func to the protobuf interface
15-
func (c *docklogClient) Start(opts *StartOpts) error {
15+
func (c *dockerLoggerClient) Start(opts *StartOpts) error {
1616
req := &proto.StartRequest{
1717
Endpoint: opts.Endpoint,
1818
ContainerId: opts.ContainerID,
@@ -28,7 +28,7 @@ func (c *docklogClient) Start(opts *StartOpts) error {
2828
}
2929

3030
// Stop proxies the Stop client side func to the protobuf interface
31-
func (c *docklogClient) Stop() error {
31+
func (c *dockerLoggerClient) Stop() error {
3232
req := &proto.StopRequest{}
3333
_, err := c.client.Stop(context.Background(), req)
3434
return err

drivers/docker/docklog/docklog.go drivers/docker/docklog/docker_logger.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import (
1111
"golang.org/x/net/context"
1212
)
1313

14-
// Docklog is a small utility to forward logs from a docker container to a target
14+
// DockerLogger is a small utility to forward logs from a docker container to a target
1515
// destination
16-
type Docklog interface {
16+
type DockerLogger interface {
1717
Start(*StartOpts) error
1818
Stop() error
1919
}
@@ -37,12 +37,12 @@ type StartOpts struct {
3737
TLSCA string
3838
}
3939

40-
// NewDocklog returns an implementation of the Docklog interface
41-
func NewDocklog(logger hclog.Logger) Docklog {
40+
// NewDockerLogger returns an implementation of the DockerLogger interface
41+
func NewDockerLogger(logger hclog.Logger) DockerLogger {
4242
return &dockerLogger{logger: logger}
4343
}
4444

45-
// dockerLogger implements the Docklog interface
45+
// dockerLogger implements the DockerLogger interface
4646
type dockerLogger struct {
4747
logger hclog.Logger
4848

drivers/docker/docklog/docklog_test.go drivers/docker/docklog/docker_logger_test.go

+15-14
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bytes"
55
"fmt"
66
"testing"
7-
"time"
87

98
docker "github.com/fsouza/go-dockerclient"
109
"github.com/hashicorp/nomad/helper/testlog"
@@ -13,7 +12,7 @@ import (
1312
"golang.org/x/net/context"
1413
)
1514

16-
func TestDocklog(t *testing.T) {
15+
func TestDockerLogger(t *testing.T) {
1716
t.Parallel()
1817
require := require.New(t)
1918

@@ -43,20 +42,23 @@ func TestDocklog(t *testing.T) {
4342
err = client.StartContainer(container.ID, nil)
4443
require.NoError(err)
4544

46-
var count int
47-
for !container.State.Running {
48-
if count > 10 {
49-
t.Fatal("timeout waiting for container to start")
50-
}
51-
time.Sleep(100 * time.Millisecond)
45+
testutil.WaitForResult(func() (bool, error) {
5246
container, err = client.InspectContainer(container.ID)
53-
count++
54-
}
47+
if err != nil {
48+
return false, err
49+
}
50+
if !container.State.Running {
51+
return false, fmt.Errorf("container not running")
52+
}
53+
return true, nil
54+
}, func(err error) {
55+
require.NoError(err)
56+
})
5557

56-
stdout := &noopCloser{bytes.NewBufferString("")}
57-
stderr := &noopCloser{bytes.NewBufferString("")}
58+
stdout := &noopCloser{bytes.NewBuffer(nil)}
59+
stderr := &noopCloser{bytes.NewBuffer(nil)}
5860

59-
dl := NewDocklog(testlog.HCLogger(t)).(*dockerLogger)
61+
dl := NewDockerLogger(testlog.HCLogger(t)).(*dockerLogger)
6062
dl.stdout = stdout
6163
dl.stderr = stderr
6264
require.NoError(dl.Start(&StartOpts{
@@ -66,7 +68,6 @@ func TestDocklog(t *testing.T) {
6668
echoToContainer(t, client, container.ID, "abc")
6769
echoToContainer(t, client, container.ID, "123")
6870

69-
time.Sleep(2000 * time.Millisecond)
7071
testutil.WaitForResult(func() (bool, error) {
7172
act := stdout.String()
7273
if "abc\n123\n" != act {

drivers/docker/docklog/plugin.go

+12-10
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ import (
1212
"google.golang.org/grpc"
1313
)
1414

15-
// LaunchDocklog launches an instance of docklog
15+
const pluginName = "docker_logger"
16+
17+
// LaunchDockerLogger launches an instance of DockerLogger
1618
// TODO: Integrate with base plugin loader
17-
func LaunchDocklog(logger hclog.Logger) (Docklog, *plugin.Client, error) {
18-
logger = logger.Named("docklog-launcher")
19+
func LaunchDockerLogger(logger hclog.Logger) (DockerLogger, *plugin.Client, error) {
20+
logger = logger.Named(pluginName)
1921
bin, err := discover.NomadExecutable()
2022
if err != nil {
2123
return nil, nil, err
@@ -24,9 +26,9 @@ func LaunchDocklog(logger hclog.Logger) (Docklog, *plugin.Client, error) {
2426
client := plugin.NewClient(&plugin.ClientConfig{
2527
HandshakeConfig: base.Handshake,
2628
Plugins: map[string]plugin.Plugin{
27-
"docklog": &Plugin{impl: NewDocklog(hclog.L().Named("docklog"))},
29+
pluginName: &Plugin{impl: NewDockerLogger(hclog.L().Named(pluginName))},
2830
},
29-
Cmd: exec.Command(bin, "docklog"),
31+
Cmd: exec.Command(bin, pluginName),
3032
AllowedProtocols: []plugin.Protocol{
3133
plugin.ProtocolGRPC,
3234
},
@@ -37,25 +39,25 @@ func LaunchDocklog(logger hclog.Logger) (Docklog, *plugin.Client, error) {
3739
return nil, nil, err
3840
}
3941

40-
raw, err := rpcClient.Dispense("docklog")
42+
raw, err := rpcClient.Dispense(pluginName)
4143
if err != nil {
4244
return nil, nil, err
4345
}
4446

45-
l := raw.(Docklog)
47+
l := raw.(DockerLogger)
4648
return l, client, nil
4749

4850
}
4951

5052
// Plugin is the go-plugin implementation
5153
type Plugin struct {
5254
plugin.NetRPCUnsupportedPlugin
53-
impl Docklog
55+
impl DockerLogger
5456
}
5557

5658
// GRPCServer registered the server side implementation with the grpc server
5759
func (p *Plugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error {
58-
proto.RegisterDocklogServer(s, &docklogServer{
60+
proto.RegisterDockerLoggerServer(s, &dockerLoggerServer{
5961
impl: p.impl,
6062
broker: broker,
6163
})
@@ -64,5 +66,5 @@ func (p *Plugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error {
6466

6567
// GRPCClient returns a client side implementation of the plugin
6668
func (p *Plugin) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error) {
67-
return &docklogClient{client: proto.NewDocklogClient(c)}, nil
69+
return &dockerLoggerClient{client: proto.NewDockerLoggerClient(c)}, nil
6870
}

0 commit comments

Comments
 (0)