12
. "mosn.io/mosn/test/framework"
13
"mosn.io/mosn/test/lib"
16
func request(t *testing.T, url string) []byte {
17
resp, err := http.Get(url)
19
t.Fatalf("request failed: %v", err)
21
defer resp.Body.Close()
22
b, _ := ioutil.ReadAll(resp.Body)
26
func testEnvScript(path string) error {
27
runCmd := exec.Command("sudo", "/bin/bash", path)
28
_, err := runCmd.CombinedOutput()
35
// TODO Execute this test using a docker image containing iptables and sudo
36
func TestSimpleTProxy(t *testing.T) {
38
err := testEnvScript("./setup.sh")
40
defer testEnvScript("./cleanup.sh")
46
Scenario(t, "test transparent proxy egress", func() {
47
lib.InitMosn(ConfigTProxy)
48
Case("general listener", func() {
49
Equal(t, request(t, "http://2.2.2.2:80"), []byte("this is general_server"))
51
Case("proxy listener", func() {
52
Equal(t, request(t, "http://2.2.2.2:12345"), []byte("this is tproxy_server"))
57
const ConfigTProxy = `{
60
"default_log_path":"stdout",
63
"router_config_name": "tproxy_router",
66
"name": "tproxy_server",
74
"body": "this is tproxy_server"
82
"router_config_name": "general_router",
85
"name": "general_server",
93
"body": "this is general_server"
103
"name":"tproxy_listener",
104
"address": "0.0.0.0:16000",
106
"use_original_dst": "tproxy",
107
"listener_filters": [
109
"type": "original_dst",
121
"downstream_protocol": "Auto",
122
"upstream_protocol": "Auto",
123
"router_config_name": "tproxy_router"
131
"name": "general_listener",
132
"address": "0.0.0.0:80",
140
"downstream_protocol": "Auto",
141
"upstream_protocol": "Auto",
142
"router_config_name": "general_router"
155
"address": "0.0.0.0",