mosn

Форк
0
/
router_test.go 
145 строк · 3.2 Кб
1
//go:build MOSNTest
2
// +build MOSNTest
3

4
package autoconfig
5

6
import (
7
	"strings"
8
	"testing"
9
	"time"
10

11
	v2 "mosn.io/mosn/pkg/config/v2"
12
	. "mosn.io/mosn/test/framework"
13
	"mosn.io/mosn/test/lib/mosn"
14
)
15

16
func TestUpdateRouter(t *testing.T) {
17
	Scenario(t, "test update mosn router config", func() {
18
		var m *mosn.MosnOperator
19
		Setup(func() {
20
			m = mosn.StartMosn(routerConfig, "-f", "auto_config=true")
21
			Verify(m, NotNil)
22
			time.Sleep(2 * time.Second) // wait mosn start
23
		})
24
		Case("add new router", func() {
25
			config := `{
26
				"router_config_name": "test_router",
27
				"virtual_hosts": [
28
					{
29
						"name":"serverHost",
30
						"domains": ["*"],
31
						"routers": [
32
							{
33
								"match":{"prefix":"/"},
34
								"route":{"cluster_name":"test"}
35
							}
36
						]
37
					}
38
				]
39
			}`
40
			err := m.UpdateConfig(34901, "router", config)
41
			Verify(err, Equal, nil)
42
			content, err := m.GetMosnConfig(34901, "router=test_router")
43
			Verify(err, Equal, nil)
44
			t := strings.Contains(string(content), "prefix")
45
			Verify(t, Equal, true)
46
		})
47
		Case("update router", func() {
48
			config := `{
49
				"router_config_name": "test_router",
50
				"virtual_hosts": [
51
					{
52
						"name":"serverHost",
53
						"domains": ["*"],
54
						"routers": [
55
							{
56
								"match":{"path":"/test"},
57
								"route":{"cluster_name":"test2"}
58
							},
59
							{
60
								"match":{"prefix":"/"},
61
								"route":{"cluster_name":"test"}
62
							}
63
							
64
						]
65
					}
66
				]
67
			}`
68
			err := m.UpdateConfig(34901, "router", config)
69
			Verify(err, Equal, nil)
70
			// wait auto config dump
71
			time.Sleep(4 * time.Second)
72
			mcfg := m.LoadMosnConfig() // read config from files
73
			var route *v2.RouterConfiguration
74
			for _, r := range mcfg.Servers[0].Routers {
75
				if r.RouterConfigName == "test_router" {
76
					route = r
77
				}
78
			}
79
			Verify(route, NotNil)
80
			Verify(len(route.VirtualHosts[0].Routers), Equal, 2)
81
		})
82
		Case("add route rule", func() {
83
			config := `{
84
				"router_config_name": "test_router",
85
				"domain": "",
86
				"route": {
87
					"match":{"path":"/new"},
88
					"route":{"cluster_name":"testnew"}
89
				}
90
			}`
91
			err := m.UpdateRoute(34901, "add", config)
92
			Verify(err, Equal, nil)
93
			// wait auto config dump
94
			time.Sleep(4 * time.Second)
95
			mcfg := m.LoadMosnConfig() // read config from files
96
			var route *v2.RouterConfiguration
97
			for _, r := range mcfg.Servers[0].Routers {
98
				if r.RouterConfigName == "test_router" {
99
					route = r
100
				}
101
			}
102
			Verify(route, NotNil)
103
			Verify(len(route.VirtualHosts[0].Routers), Equal, 3)
104
		})
105
		Case("remove route rule", func() {
106
			config := `{
107
				"router_config_name": "test_router",
108
				"domain": ""
109
			}`
110
			err := m.UpdateRoute(34901, "remove", config)
111
			Verify(err, Equal, nil)
112
			// wait auto config dump
113
			time.Sleep(4 * time.Second)
114
			mcfg := m.LoadMosnConfig() // read config from files
115
			var route *v2.RouterConfiguration
116
			for _, r := range mcfg.Servers[0].Routers {
117
				if r.RouterConfigName == "test_router" {
118
					route = r
119
				}
120
			}
121
			Verify(route, NotNil)
122
			Verify(len(route.VirtualHosts[0].Routers), Equal, 0)
123
		})
124
		TearDown(func() {
125
			m.Stop()
126
		})
127
	})
128
}
129

130
const routerConfig = `{
131
	"servers":[
132
		{
133
			"default_log_path":"stdout"
134
		}
135
	],
136
	"cluster_manager": {},
137
	"admin": {
138
		"address": {
139
			"socket_address": {
140
				"address": "127.0.0.1",
141
				"port_value": 34901
142
			}
143
		}
144
	}
145
}`
146

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.