mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-25 11:44:44 +00:00
Add golint, make linting top-level
Signed-off-by: Riyaz Faizullabhoy <riyaz.faizullabhoy@docker.com>
This commit is contained in:
parent
27cb33f7b9
commit
51088ee491
10
Makefile
10
Makefile
@ -37,6 +37,14 @@ hyperkit.git/build/com.docker.hyperkit: hyperkit.git
|
||||
hyperkit: hyperkit.sh hyperkit.git/build/com.docker.hyperkit alpine/initrd.img alpine/kernel/x86_64/vmlinuz64
|
||||
sudo ./hyperkit.sh
|
||||
|
||||
lint:
|
||||
# gofmt
|
||||
@test -z "$$(gofmt -s -l .| grep -v .pb. | grep -v */vendor/ | tee /dev/stderr)"
|
||||
# govet
|
||||
@test -z "$$(go tool vet -printf=false . 2>&1 | grep -v */vendor/ | tee /dev/stderr)"
|
||||
# golint
|
||||
@test -z "$(shell find . -type f -name "*.go" -not -path "*/vendor/*" -not -name "*.pb.*" -exec golint {} \; | tee /dev/stderr)"
|
||||
|
||||
test: Dockerfile.test alpine/initrd-test.img alpine/kernel/x86_64/vmlinuz64
|
||||
$(MAKE) -C alpine
|
||||
BUILD=$$( tar cf - $^ | docker build -f Dockerfile.test -q - ) && \
|
||||
@ -93,7 +101,7 @@ ci:
|
||||
$(MAKE) AUFS=1 test
|
||||
$(MAKE) AUFS=1 media
|
||||
|
||||
ci-pr:
|
||||
ci-pr: lint
|
||||
$(MAKE) clean
|
||||
$(MAKE) all
|
||||
$(MAKE) test
|
||||
|
@ -3,14 +3,8 @@ DEPS=proxy diagnostics transfused tap-vsockd docker nc-vsock vsudd 9pmount-vsock
|
||||
|
||||
default: $(DEPS)
|
||||
|
||||
$(DEPS): lint
|
||||
$(DEPS):
|
||||
$(MAKE) -C $@
|
||||
|
||||
lint:
|
||||
# gofmt
|
||||
@test -z "$$(gofmt -s -l .| grep -v .pb. | grep -v vendor/ | tee /dev/stderr)"
|
||||
# govet
|
||||
@test -z "$$(go tool vet -printf=false . 2>&1 | grep -v vendor/ | tee /dev/stderr)"
|
||||
|
||||
clean:
|
||||
for f in $(DEPS); do $(MAKE) -C $$f clean; done
|
||||
|
@ -82,12 +82,15 @@ type Capturer interface {
|
||||
Capture(context.Context, *tar.Writer)
|
||||
}
|
||||
|
||||
// CommandCapturer describes commands with its arguments and timeout to
|
||||
// capture diagnostic information from
|
||||
type CommandCapturer struct {
|
||||
command string
|
||||
args []string
|
||||
timeout time.Duration
|
||||
}
|
||||
|
||||
// Capture writes output from a CommandCapturer to a tar archive
|
||||
func (cc CommandCapturer) Capture(parentCtx context.Context, w *tar.Writer) {
|
||||
stdout := &bytes.Buffer{}
|
||||
stderr := &bytes.Buffer{}
|
||||
@ -148,10 +151,14 @@ func runCmd(cmd *exec.Cmd, done chan<- struct{}) {
|
||||
done <- struct{}{}
|
||||
}
|
||||
|
||||
// DatabaseCapturer defines behavior for capturing diagnostic
|
||||
// information from dumping a database
|
||||
type DatabaseCapturer struct {
|
||||
*CommandCapturer
|
||||
}
|
||||
|
||||
// NewDatabaseCapturer creates a new DatabaseCapturer that cats
|
||||
// the database's contents to a CommandCapturer
|
||||
func NewDatabaseCapturer() DatabaseCapturer {
|
||||
return DatabaseCapturer{
|
||||
&CommandCapturer{
|
||||
@ -161,6 +168,7 @@ func NewDatabaseCapturer() DatabaseCapturer {
|
||||
}
|
||||
}
|
||||
|
||||
// Capture writes output from a DatabaseCapturer to a tar archive
|
||||
func (dc DatabaseCapturer) Capture(parentCtx context.Context, w *tar.Writer) {
|
||||
// Dump the database
|
||||
dbBase := "/Database/branch/master/ro"
|
||||
|
@ -36,6 +36,7 @@ func init() {
|
||||
// for cloud editions.
|
||||
type HTTPDiagnosticListener struct{}
|
||||
|
||||
// Listen starts the HTTPDiagnosticListener and sets up handlers for its endpoints
|
||||
func (h HTTPDiagnosticListener) Listen() {
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
if _, err := os.Stat(dockerSock); os.IsNotExist(err) {
|
||||
@ -140,10 +141,8 @@ func (h HTTPDiagnosticListener) Listen() {
|
||||
}
|
||||
log.Println(string(body))
|
||||
return
|
||||
} else {
|
||||
log.Println("No error sending S3 request")
|
||||
}
|
||||
|
||||
log.Println("No error sending S3 request")
|
||||
log.Println("Diagnostics request finished")
|
||||
}()
|
||||
})
|
||||
|
@ -7,8 +7,10 @@ import (
|
||||
"github.com/rneugeba/virtsock/go/hvsock"
|
||||
)
|
||||
|
||||
// HVSockDiagnosticListener is a diagnostic server using HVSock (Windows)
|
||||
type HVSockDiagnosticListener struct{}
|
||||
|
||||
// Listen sets up the diagnostic server to listen on an HVSock
|
||||
func (l HVSockDiagnosticListener) Listen() {
|
||||
svcid, _ := hvsock.GuidFromString("445BA2CB-E69B-4912-8B42-D7F494D007EA")
|
||||
hvsock, err := hvsock.Listen(hvsock.HypervAddr{VmId: hvsock.GUID_WILDCARD, ServiceId: svcid})
|
||||
|
@ -16,6 +16,7 @@ func init() {
|
||||
log.SetFlags(0)
|
||||
}
|
||||
|
||||
// DiagnosticListener listens for starting diagnostics capture requests
|
||||
type DiagnosticListener interface {
|
||||
// Listen(), a blocking method intended to be invoked in its own
|
||||
// goroutine, will listen for a diagnostic information request and
|
||||
|
@ -5,8 +5,10 @@ import (
|
||||
"net"
|
||||
)
|
||||
|
||||
// RawTCPDiagnosticListener is a diagnostic server listening on a TCP port
|
||||
type RawTCPDiagnosticListener struct{}
|
||||
|
||||
// Listen for RawTCPDiagnosticListener listens on port 62374
|
||||
func (l RawTCPDiagnosticListener) Listen() {
|
||||
ip, err := net.Listen("tcp", ":62374")
|
||||
if err != nil {
|
||||
|
@ -7,8 +7,10 @@ import (
|
||||
"github.com/rneugeba/virtsock/go/vsock"
|
||||
)
|
||||
|
||||
// VSockDiagnosticListener is a diagnostic server listening on VSock
|
||||
type VSockDiagnosticListener struct{}
|
||||
|
||||
// Listen for VSockDiagnosticListener listens on a VSock's port 62374
|
||||
func (l VSockDiagnosticListener) Listen() {
|
||||
vsock, err := vsock.Listen(uint(62374))
|
||||
if err != nil {
|
||||
|
@ -1,11 +1,12 @@
|
||||
// Package proxy provides a network Proxy interface and implementations for TCP
|
||||
// Package libproxy provides a network Proxy interface and implementations for TCP
|
||||
// and UDP.
|
||||
package libproxy
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/rneugeba/virtsock/go/vsock"
|
||||
"net"
|
||||
|
||||
"github.com/rneugeba/virtsock/go/vsock"
|
||||
)
|
||||
|
||||
// Proxy defines the behavior of a proxy. It forwards traffic back and forth
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"net"
|
||||
)
|
||||
|
||||
// Conn defines a network connection
|
||||
type Conn interface {
|
||||
io.Reader
|
||||
io.Writer
|
||||
@ -33,6 +34,7 @@ func NewTCPProxy(listener net.Listener, backendAddr *net.TCPAddr) (*TCPProxy, er
|
||||
}, nil
|
||||
}
|
||||
|
||||
// HandleTCPConnection forwards the TCP traffic to a specified backend address
|
||||
func HandleTCPConnection(client Conn, backendAddr *net.TCPAddr, quit chan bool) {
|
||||
backend, err := net.DialTCP("tcp", nil, backendAddr)
|
||||
if err != nil {
|
||||
|
@ -9,12 +9,14 @@ import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
type udpListener interface {
|
||||
// UDPListener defines a listener interface to read, write and close a UDP connection
|
||||
type UDPListener interface {
|
||||
ReadFromUDP(b []byte) (int, *net.UDPAddr, error)
|
||||
WriteToUDP(b []byte, addr *net.UDPAddr) (int, error)
|
||||
Close() error
|
||||
}
|
||||
|
||||
// udpEncapsulator encapsulates a UDP connection and listener
|
||||
type udpEncapsulator struct {
|
||||
conn *net.Conn
|
||||
listener net.Listener
|
||||
@ -38,6 +40,8 @@ func (u *udpEncapsulator) getConn() (net.Conn, error) {
|
||||
return conn, nil
|
||||
}
|
||||
|
||||
// ReadFromUDP reads the bytestream from a udpEncapsulator, returning the
|
||||
// number of bytes read and the unpacked UDPAddr struct
|
||||
func (u *udpEncapsulator) ReadFromUDP(b []byte) (int, *net.UDPAddr, error) {
|
||||
conn, err := u.getConn()
|
||||
if err != nil {
|
||||
@ -54,6 +58,8 @@ func (u *udpEncapsulator) ReadFromUDP(b []byte) (int, *net.UDPAddr, error) {
|
||||
return length, &udpAddr, nil
|
||||
}
|
||||
|
||||
// WriteToUDP writes a bytestream to a specified UDPAddr, returning the number
|
||||
// of bytes successfully written
|
||||
func (u *udpEncapsulator) WriteToUDP(b []byte, addr *net.UDPAddr) (int, error) {
|
||||
conn, err := u.getConn()
|
||||
if err != nil {
|
||||
@ -65,6 +71,7 @@ func (u *udpEncapsulator) WriteToUDP(b []byte, addr *net.UDPAddr) (int, error) {
|
||||
return len(b), datagram.Marshal(conn)
|
||||
}
|
||||
|
||||
// Close closes the connection in the udpEncapsulator
|
||||
func (u *udpEncapsulator) Close() error {
|
||||
if u.conn != nil {
|
||||
conn := *u.conn
|
||||
@ -74,7 +81,8 @@ func (u *udpEncapsulator) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewUDPConn(conn net.Conn) udpListener {
|
||||
// NewUDPConn initializes a new UDP connection
|
||||
func NewUDPConn(conn net.Conn) UDPListener {
|
||||
var m sync.Mutex
|
||||
var r sync.Mutex
|
||||
var w sync.Mutex
|
||||
@ -87,7 +95,8 @@ func NewUDPConn(conn net.Conn) udpListener {
|
||||
}
|
||||
}
|
||||
|
||||
func NewUDPListener(listener net.Listener) udpListener {
|
||||
// NewUDPListener initializes a new UDP listener
|
||||
func NewUDPListener(listener net.Listener) UDPListener {
|
||||
var m sync.Mutex
|
||||
var r sync.Mutex
|
||||
var w sync.Mutex
|
||||
@ -107,6 +116,7 @@ type udpDatagram struct {
|
||||
Zone string
|
||||
}
|
||||
|
||||
// Marshal marshals data from the udpDatagram to the provided connection
|
||||
func (u *udpDatagram) Marshal(conn net.Conn) error {
|
||||
// marshal the variable length header to a temporary buffer
|
||||
var header bytes.Buffer
|
||||
@ -154,6 +164,7 @@ func (u *udpDatagram) Marshal(conn net.Conn) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Unmarshal unmarshals data from the connection to the udpDatagram
|
||||
func (u *udpDatagram) Unmarshal(conn net.Conn) (int, error) {
|
||||
var length uint16
|
||||
// frame length
|
||||
|
@ -46,7 +46,7 @@ type connTrackMap map[connTrackKey]*net.UDPConn
|
||||
// interface to handle UDP traffic forwarding between the frontend and backend
|
||||
// addresses.
|
||||
type UDPProxy struct {
|
||||
listener udpListener
|
||||
listener UDPListener
|
||||
frontendAddr net.Addr
|
||||
backendAddr *net.UDPAddr
|
||||
connTrackTable connTrackMap
|
||||
@ -54,7 +54,7 @@ type UDPProxy struct {
|
||||
}
|
||||
|
||||
// NewUDPProxy creates a new UDPProxy.
|
||||
func NewUDPProxy(frontendAddr net.Addr, listener udpListener, backendAddr *net.UDPAddr) (*UDPProxy, error) {
|
||||
func NewUDPProxy(frontendAddr net.Addr, listener UDPListener, backendAddr *net.UDPAddr) (*UDPProxy, error) {
|
||||
|
||||
return &UDPProxy{
|
||||
listener: listener,
|
||||
|
@ -3,18 +3,19 @@ package main
|
||||
import (
|
||||
"encoding/binary"
|
||||
"flag"
|
||||
"github.com/rneugeba/virtsock/go/hvsock"
|
||||
"github.com/rneugeba/virtsock/go/vsock"
|
||||
"log"
|
||||
"net"
|
||||
"proxy/libproxy"
|
||||
|
||||
"github.com/rneugeba/virtsock/go/hvsock"
|
||||
"github.com/rneugeba/virtsock/go/vsock"
|
||||
)
|
||||
|
||||
// Listen on virtio-vsock and AF_HYPERV for multiplexed connections
|
||||
func manyPorts() {
|
||||
var (
|
||||
vsockPort = flag.Int("vsockPort", 62373, "virtio-vsock port")
|
||||
hvGuid = flag.String("hvGuid", "0B95756A-9985-48AD-9470-78E060895BE7", "Hyper-V service GUID")
|
||||
hvGUID = flag.String("hvGuid", "0B95756A-9985-48AD-9470-78E060895BE7", "Hyper-V service GUID")
|
||||
)
|
||||
flag.Parse()
|
||||
|
||||
@ -26,10 +27,10 @@ func manyPorts() {
|
||||
} else {
|
||||
listeners = append(listeners, vsock)
|
||||
}
|
||||
svcid, _ := hvsock.GuidFromString(*hvGuid)
|
||||
svcid, _ := hvsock.GuidFromString(*hvGUID)
|
||||
hvsock, err := hvsock.Listen(hvsock.HypervAddr{VmId: hvsock.GUID_WILDCARD, ServiceId: svcid})
|
||||
if err != nil {
|
||||
log.Printf("Failed to bind hvsock guid: %s: %#v", *hvGuid, err)
|
||||
log.Printf("Failed to bind hvsock guid: %s: %#v", *hvGUID, err)
|
||||
} else {
|
||||
listeners = append(listeners, hvsock)
|
||||
}
|
||||
@ -83,7 +84,9 @@ func manyPorts() {
|
||||
}
|
||||
|
||||
const (
|
||||
// TCP protocol const
|
||||
TCP = 1
|
||||
// UDP protocol const
|
||||
UDP = 2
|
||||
)
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
* Functions in this file are used to forward syslog messages to the
|
||||
* host and must be quite careful about their own logging. In general
|
||||
* error messages should go via the console log.Logger defined in this
|
||||
* file.
|
||||
* Functions in this file are used to forward syslog messages to the
|
||||
* host and must be quite careful about their own logging. In general
|
||||
* error messages should go via the console log.Logger defined in this
|
||||
* file.
|
||||
*/
|
||||
package main
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user