Skip to content

Commit b25f345

Browse files
add more tests
1 parent 6f63736 commit b25f345

File tree

7 files changed

+119
-47
lines changed

7 files changed

+119
-47
lines changed

main.go

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,6 @@ import (
1010
"strings"
1111
)
1212

13-
func ReadPatterns(path string) (patterns []string, err error) {
14-
file, err := os.Open(path)
15-
if err != nil {
16-
return
17-
}
18-
defer file.Close()
19-
20-
scanner := bufio.NewScanner(file)
21-
for scanner.Scan() {
22-
line := scanner.Text()
23-
if ! strings.HasPrefix(line, "#") {
24-
patterns = append(patterns, line)
25-
}
26-
}
27-
return
28-
}
2913

3014
func RunApp(ctx *cli.Context) {
3115
log.Printf("[II] Start Version: %s", ctx.App.Version)
@@ -34,7 +18,12 @@ func RunApp(ctx *cli.Context) {
3418
dockerSock, _ := cfg.String("docker-socket")
3519
debug, _ := cfg.Bool("debug")
3620
patternsFile, _ := cfg.String("pattern-file")
37-
patterns, err := ReadPatterns(patternsFile)
21+
reader, err := os.Open(patternsFile)
22+
if err != nil {
23+
return
24+
}
25+
defer reader.Close()
26+
patterns, err := proxy.ReadPatterns(reader)
3827
if err != nil {
3928
log.Printf("Error reading patterns file (%s), using default patterns\n", err.Error())
4029
patterns = []string{

proxy/main_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package proxy
2+
3+
import (
4+
"testing"
5+
"github.com/stretchr/testify/assert"
6+
)
7+
8+
func TestProxy_AddPattern(t *testing.T) {
9+
p := NewProxy("new", "old", false)
10+
p.AddPattern("mypat1")
11+
assert.Equal(t, []string{"mypat1"}, p.patterns)
12+
}
13+
14+
func TestProxy_AddPatterns(t *testing.T) {
15+
p := NewProxy("new", "old", false)
16+
p.AddPatterns([]string{"mypat1","mypat2"})
17+
assert.Equal(t, []string{"mypat1","mypat2"}, p.patterns)
18+
}

proxy/newsock.go

Lines changed: 0 additions & 30 deletions
This file was deleted.

proxy/patterns.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package proxy
2+
3+
import (
4+
"bufio"
5+
"strings"
6+
"io"
7+
)
8+
9+
func ReadPatterns(reader io.Reader) (patterns []string, err error) {
10+
scanner := bufio.NewScanner(reader)
11+
for scanner.Scan() {
12+
line := scanner.Text()
13+
if ! strings.HasPrefix(line, "#") {
14+
patterns = append(patterns, line)
15+
}
16+
}
17+
return
18+
}

proxy/patterns_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package proxy
2+
3+
import (
4+
"testing"
5+
"strings"
6+
"github.com/stretchr/testify/assert"
7+
)
8+
9+
const (
10+
p1 = `# List and inspect containers
11+
^/(v\d\.\d+/)?containers(/\w+)?/json$
12+
# List and inspect services
13+
^/(v\d\.\d+/)?services(/[0-9a-f]+)?$
14+
# List and inspect tasks
15+
^/(v\d\.\d+/)?tasks(/\w+)?$
16+
# List and inspect networks
17+
^/(v\d\.\d+/)?networks(/\w+)?$
18+
# List and inspect nodes
19+
^/(v\d\.\d+/)?nodes(/\w+)?$
20+
# Show engine info
21+
^/(v\d\.\d+/)?info$
22+
# Healthcheck
23+
^/_ping$`
24+
)
25+
26+
func TestReadPatterns(t *testing.T) {
27+
r := strings.NewReader(p1)
28+
got,err := ReadPatterns(r)
29+
assert.NoError(t, err, "Should be parsed without problems")
30+
exp := []string{
31+
`^/(v\d\.\d+/)?containers(/\w+)?/json$`,
32+
`^/(v\d\.\d+/)?services(/[0-9a-f]+)?$`,
33+
`^/(v\d\.\d+/)?tasks(/\w+)?$`,
34+
`^/(v\d\.\d+/)?networks(/\w+)?$`,
35+
`^/(v\d\.\d+/)?nodes(/\w+)?$`,
36+
`^/(v\d\.\d+/)?info$`,
37+
"^/_ping$",
38+
}
39+
assert.Equal(t, exp, got)
40+
}

proxy/proxy.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package proxy
22

33
import (
4+
"log"
45
"net"
56
"fmt"
67
"net/url"
78
"net/http"
89
"net/http/httputil"
910
"regexp"
11+
"os"
12+
"path/filepath"
1013
)
1114

1215
type UpStream struct {
@@ -76,3 +79,25 @@ func (u *UpStream) ServeHTTP(w http.ResponseWriter, req *http.Request) {
7679
}
7780
http.Error(w, fmt.Sprintf("'%s' is not allowed.", req.URL.Path), 403)
7881
}
82+
83+
func ListenToNewSock(newsock string, sigc chan os.Signal) (l net.Listener, err error) {
84+
// extract directory for newsock
85+
dir, _ := filepath.Split(newsock)
86+
// attempt to create dir and ignore if it's already existing
87+
_ = os.Mkdir(dir, 0777)
88+
l, err = net.Listen("unix", newsock)
89+
if err != nil {
90+
panic(err)
91+
}
92+
os.Chmod(newsock, 0666)
93+
log.Println("[gk-soxy] Listening on " + newsock)
94+
go func(c chan os.Signal) {
95+
sig := <-c
96+
log.Printf("[gk-soxy] Caught signal %s: shutting down.\n", sig)
97+
if err := l.Close(); err != nil {
98+
panic(err)
99+
}
100+
os.Exit(0)
101+
}(sigc)
102+
return
103+
}

proxy/proxy_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package proxy
2+
3+
import (
4+
"testing"
5+
"github.com/stretchr/testify/assert"
6+
)
7+
8+
func TestNewUnixSocket(t *testing.T) {
9+
us := NewUnixSocket("test")
10+
exp := UnixSocket{"test"}
11+
assert.Equal(t, exp, us)
12+
}

0 commit comments

Comments
 (0)