Skip to content

Commit 287babf

Browse files
committed
add tcp proxy support
1 parent 8d3799c commit 287babf

4 files changed

Lines changed: 606 additions & 550 deletions

File tree

cmd/mock-compose.go

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ limitations under the License.
1717
package cmd
1818

1919
import (
20-
"os"
21-
"os/signal"
22-
"syscall"
23-
24-
"github.com/linuxsuren/api-testing/pkg/mock"
25-
"github.com/spf13/cobra"
20+
"github.com/linuxsuren/api-testing/pkg/mock"
21+
"github.com/spf13/cobra"
22+
"os"
23+
"os/signal"
24+
"syscall"
2625
)
2726

2827
func createMockComposeCmd() (c *cobra.Command) {
@@ -33,36 +32,36 @@ func createMockComposeCmd() (c *cobra.Command) {
3332
RunE: func(cmd *cobra.Command, args []string) (err error) {
3433
reader := mock.NewLocalFileReader(args[0])
3534

36-
var server *mock.Server
37-
if server, err = reader.Parse(); err != nil {
38-
return
39-
}
35+
var server *mock.Server
36+
if server, err = reader.Parse(); err != nil {
37+
return
38+
}
4039

41-
var subServers []mock.DynamicServer
42-
for _, proxy := range server.Proxies {
43-
subProxy := &mock.Server{
44-
Proxies: []mock.Proxy{proxy},
45-
}
40+
var subServers []mock.DynamicServer
41+
for _, proxy := range server.Proxies {
42+
subProxy := &mock.Server{
43+
Proxies: []mock.Proxy{proxy},
44+
}
4645

47-
subReader := mock.NewObjectReader(subProxy)
48-
subServer := mock.NewInMemoryServer(c.Context(), proxy.Port)
49-
if err = subServer.Start(subReader, proxy.Prefix); err != nil {
50-
return
51-
}
52-
subServers = append(subServers, subServer)
53-
}
46+
subReader := mock.NewObjectReader(subProxy)
47+
subServer := mock.NewInMemoryServer(c.Context(), proxy.Port)
48+
if err = subServer.Start(subReader, proxy.Prefix); err != nil {
49+
return
50+
}
51+
subServers = append(subServers, subServer)
52+
}
5453

55-
clean := make(chan os.Signal, 1)
56-
signal.Notify(clean, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP, syscall.SIGQUIT)
57-
select {
58-
case <-c.Context().Done():
59-
case <-clean:
60-
}
61-
for _, server := range subServers {
62-
server.Stop()
63-
}
64-
return
65-
},
66-
}
67-
return
54+
clean := make(chan os.Signal, 1)
55+
signal.Notify(clean, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP, syscall.SIGQUIT)
56+
select {
57+
case <-c.Context().Done():
58+
case <-clean:
59+
}
60+
for _, server := range subServers {
61+
server.Stop()
62+
}
63+
return
64+
},
65+
}
66+
return
6867
}

docs/site/content/zh/latest/tasks/mock.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,12 @@ proxies:
178178
port: 17001
179179
path: /{path:.*}
180180
target: http://192.168.123.58:17001
181+
- protocol: tcp
182+
port: 33060
183+
path: /
184+
target: 192.168.123.58:33060
181185
```
182186

187+
当前代理支持 HTTP 和 TCP 协议,上面的例子中代理了 MySQL 的 `33060` 端口。
188+
183189
> 更多 URL 中通配符的用法,请参考 https://github.com/gorilla/mux

0 commit comments

Comments
 (0)