mosn

Форк
0
/
cluster_test.go 
86 строк · 1.8 Кб
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 TestUpdateCluster(t *testing.T) {
17
	Scenario(t, "test update mosn cluster config", func() {
18
		var m *mosn.MosnOperator
19
		Setup(func() {
20
			m = mosn.StartMosn(clusterConfig, "-f", "auto_config=true")
21
			Verify(m, NotNil)
22
			time.Sleep(2 * time.Second) // wait mosn start
23
		})
24
		Case("add new cluster", func() {
25
			config := `{
26
				"name": "server_cluster",
27
				"type": "SIMPLE",
28
				"lb_type": "LB_RANDOM",
29
				"hosts":[
30
					{"address":"127.0.0.1:8080"}
31
				]
32
			}`
33
			err := m.UpdateConfig(34901, "cluster", config)
34
			Verify(err, Equal, nil)
35
			content, err := m.GetMosnConfig(34901, "cluster=server_cluster")
36
			Verify(err, Equal, nil)
37
			t := strings.Contains(string(content), "127.0.0.1:8080")
38
			Verify(t, Equal, true)
39
		})
40
		Case("update cluster", func() {
41
			config := `{
42
				"name": "server_cluster",
43
				"type": "SIMPLE",
44
				"lb_type": "LB_ROUNDROBIN",
45
				"hosts":[
46
					{"address":"127.0.0.1:8080"},
47
					{"address":"127.0.0.1:8081"}
48
				]
49
			}`
50
			err := m.UpdateConfig(34901, "cluster", config)
51
			Verify(err, Equal, nil)
52
			// wait auto config dump
53
			time.Sleep(4 * time.Second)
54
			mcfg := m.LoadMosnConfig() // read config from files
55
			var c *v2.Cluster
56
			for _, cc := range mcfg.ClusterManager.Clusters {
57
				if cc.Name == "server_cluster" {
58
					c = &cc
59
				}
60
			}
61
			Verify(c, NotNil)
62
			Verify(c.LbType, Equal, v2.LB_ROUNDROBIN)
63
			Verify(len(c.Hosts), Equal, 2)
64
		})
65
		TearDown(func() {
66
			m.Stop()
67
		})
68
	})
69
}
70

71
const clusterConfig = `{
72
	"servers":[
73
		{
74
			"default_log_path":"stdout"
75
		}
76
	],
77
	"cluster_manager": {},
78
	"admin": {
79
		"address": {
80
			"socket_address": {
81
				"address": "127.0.0.1",
82
				"port_value": 34901
83
			}
84
		}
85
	}
86
}`
87

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

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

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

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