本文整理汇总了Golang中github.com/tsuru/tsuru/api.RunServer函数的典型用法代码示例。如果您正苦于以下问题:Golang RunServer函数的具体用法?Golang RunServer怎么用?Golang RunServer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了RunServer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestHealingHistoryHandlerFilterNode
func (s *HandlersSuite) TestHealingHistoryHandlerFilterNode(c *check.C) {
evt1, err := newHealingEvent(cluster.Node{Address: "addr1"})
c.Assert(err, check.IsNil)
evt1.update(cluster.Node{Address: "addr2"}, nil)
evt2, err := newHealingEvent(cluster.Node{Address: "addr3"})
evt2.update(cluster.Node{}, errors.New("some error"))
evt3, err := newHealingEvent(container{ID: "1234"})
evt3.update(container{ID: "9876"}, nil)
recorder := httptest.NewRecorder()
request, err := http.NewRequest("GET", "/docker/healing?filter=node", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
body := recorder.Body.Bytes()
healings := []healingEvent{}
err = json.Unmarshal(body, &healings)
c.Assert(err, check.IsNil)
c.Assert(healings, check.HasLen, 2)
c.Assert(healings[0].Action, check.Equals, "node-healing")
c.Assert(healings[0].ID, check.Equals, evt2.ID)
c.Assert(healings[1].Action, check.Equals, "node-healing")
c.Assert(healings[1].ID, check.Equals, evt1.ID)
}
示例2: TestAutoScaleListRulesWithDBConfig
func (s *HandlersSuite) TestAutoScaleListRulesWithDBConfig(c *check.C) {
config.Set("docker:auto-scale:scale-down-ratio", 2.0)
defer config.Unset("docker:auto-scale:max-container-count")
config.Set("docker:scheduler:total-memory-metadata", "maxmemory")
defer config.Unset("docker:scheduler:total-memory-metadata")
rules := []autoScaleRule{
{MetadataFilter: "", Enabled: true, MaxContainerCount: 10, ScaleDownRatio: 1.2},
{MetadataFilter: "pool1", Enabled: true, ScaleDownRatio: 1.1, MaxMemoryRatio: 2.0},
}
for _, r := range rules {
err := r.update()
c.Assert(err, check.IsNil)
}
recorder := httptest.NewRecorder()
request, err := http.NewRequest("GET", "/docker/autoscale/rules", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
var reqRules []autoScaleRule
err = json.Unmarshal(recorder.Body.Bytes(), &reqRules)
c.Assert(err, check.IsNil)
c.Assert(reqRules, check.DeepEquals, rules)
}
示例3: TestAutoScaleRunHandler
func (s *HandlersSuite) TestAutoScaleRunHandler(c *check.C) {
mainDockerProvisioner.cluster, _ = cluster.New(&segregatedScheduler{}, &cluster.MapStorage{},
cluster.Node{Address: "localhost:1999", Metadata: map[string]string{
"pool": "pool1",
}},
)
config.Set("docker:auto-scale:enabled", true)
defer config.Unset("docker:auto-scale:enabled")
config.Set("docker:auto-scale:max-container-count", 2)
defer config.Unset("docker:auto-scale:max-container-count")
recorder := httptest.NewRecorder()
request, err := http.NewRequest("POST", "/docker/autoscale/run", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
c.Assert(recorder.Header().Get("Content-Type"), check.Equals, "application/x-json-stream")
body := recorder.Body.String()
parts := strings.Split(body, "\n")
c.Assert(parts, check.DeepEquals, []string{
`{"Message":"running scaler *docker.countScaler for \"pool\": \"pool1\"\n"}`,
`{"Message":"nothing to do for \"pool\": \"pool1\"\n"}`,
``,
})
c.Assert(eventtest.EventDesc{
Target: event.Target{Type: event.TargetTypePool},
Owner: s.token.GetUserName(),
Kind: "node.autoscale.update.run",
}, eventtest.HasEvent)
}
示例4: TestMoveContainersHandler
func (s *HandlersSuite) TestMoveContainersHandler(c *check.C) {
recorder := httptest.NewRecorder()
v := url.Values{}
v.Set("from", "localhost")
v.Set("to", "127.0.0.1")
b := strings.NewReader(v.Encode())
request, err := http.NewRequest("POST", "/docker/containers/move", b)
c.Assert(err, check.IsNil)
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
mainDockerProvisioner.Cluster().Register(cluster.Node{Address: "http://localhost:2375"})
mainDockerProvisioner.Cluster().Register(cluster.Node{Address: "http://127.0.0.1:2375"})
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
c.Assert(recorder.Header().Get("Content-Type"), check.Equals, "application/x-json-stream")
validJson := fmt.Sprintf("[%s]", strings.Replace(strings.Trim(recorder.Body.String(), "\n "), "\n", ",", -1))
var result []tsuruIo.SimpleJsonMessage
err = json.Unmarshal([]byte(validJson), &result)
c.Assert(err, check.IsNil)
c.Assert(result, check.DeepEquals, []tsuruIo.SimpleJsonMessage{
{Message: "No units to move in localhost\n"},
{Message: "Containers moved successfully!\n"},
})
c.Assert(eventtest.EventDesc{
Target: event.Target{Type: event.TargetTypeNode, Value: "localhost"},
Owner: s.token.GetUserName(),
Kind: "node.update.move.containers",
StartCustomData: []map[string]interface{}{
{"name": "from", "value": "localhost"},
{"name": "to", "value": "127.0.0.1"},
},
}, eventtest.HasEvent)
}
示例5: TestUpdateNodeHandler
func (s *HandlersSuite) TestUpdateNodeHandler(c *check.C) {
mainDockerProvisioner.cluster, _ = cluster.New(&segregatedScheduler{}, &cluster.MapStorage{},
cluster.Node{Address: "localhost:1999", Metadata: map[string]string{
"m1": "v1",
"m2": "v2",
}},
)
opts := provision.AddPoolOptions{Name: "pool1"}
err := provision.AddPool(opts)
defer provision.RemovePool("pool1")
json := `{"address": "localhost:1999", "m1": "", "m2": "v9", "m3": "v8"}`
b := bytes.NewBufferString(json)
recorder := httptest.NewRecorder()
request, err := http.NewRequest("PUT", "/docker/node", b)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
nodes, err := mainDockerProvisioner.getCluster().Nodes()
c.Assert(err, check.IsNil)
c.Assert(nodes, check.HasLen, 1)
c.Assert(nodes[0].Metadata, check.DeepEquals, map[string]string{
"m2": "v9",
"m3": "v8",
})
}
示例6: TestAutoScaleRunHandler
func (s *HandlersSuite) TestAutoScaleRunHandler(c *check.C) {
mainDockerProvisioner.cluster, _ = cluster.New(&segregatedScheduler{}, &cluster.MapStorage{},
cluster.Node{Address: "localhost:1999", Metadata: map[string]string{
"pool": "pool1",
}},
)
config.Set("docker:auto-scale:group-by-metadata", "pool")
config.Set("docker:auto-scale:max-container-count", 2)
defer config.Unset("docker:auto-scale:max-container-count")
defer config.Unset("docker:auto-scale:group-by-metadata")
recorder := httptest.NewRecorder()
request, err := http.NewRequest("POST", "/docker/autoscale/run", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
body := recorder.Body.String()
parts := strings.Split(body, "\n")
c.Assert(parts, check.DeepEquals, []string{
`{"Message":"[node autoscale] running scaler *docker.countScaler for \"pool\": \"pool1\"\n"}`,
`{"Message":"[node autoscale] nothing to do for \"pool\": \"pool1\"\n"}`,
``,
})
}
示例7: TestDockerLogsInfoHandler
func (s *HandlersSuite) TestDockerLogsInfoHandler(c *check.C) {
recorder := httptest.NewRecorder()
request, err := http.NewRequest("GET", "/docker/logs", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
c.Assert(recorder.Header().Get("Content-Type"), check.Equals, "application/json")
var conf map[string]container.DockerLogConfig
err = json.Unmarshal(recorder.Body.Bytes(), &conf)
c.Assert(err, check.IsNil)
c.Assert(conf, check.DeepEquals, map[string]container.DockerLogConfig{
"": {},
})
newConf := container.DockerLogConfig{Driver: "syslog"}
err = newConf.Save("p1")
c.Assert(err, check.IsNil)
request, err = http.NewRequest("GET", "/docker/logs", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
recorder = httptest.NewRecorder()
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
var conf2 map[string]container.DockerLogConfig
err = json.Unmarshal(recorder.Body.Bytes(), &conf2)
c.Assert(err, check.IsNil)
c.Assert(conf2, check.DeepEquals, map[string]container.DockerLogConfig{
"": {},
"p1": {Driver: "syslog", LogOpts: map[string]string{}},
})
}
示例8: TestAutoScaleListRulesWithLegacyConfig
func (s *HandlersSuite) TestAutoScaleListRulesWithLegacyConfig(c *check.C) {
config.Set("docker:auto-scale:metadata-filter", "mypool")
config.Set("docker:auto-scale:max-container-count", 4)
config.Set("docker:auto-scale:scale-down-ratio", 1.5)
config.Set("docker:auto-scale:prevent-rebalance", true)
config.Set("docker:scheduler:max-used-memory", 0.9)
defer config.Unset("docker:auto-scale:metadata-filter")
defer config.Unset("docker:auto-scale:max-container-count")
defer config.Unset("docker:auto-scale:scale-down-ratio")
defer config.Unset("docker:auto-scale:prevent-rebalance")
defer config.Unset("docker:scheduler:max-used-memory")
recorder := httptest.NewRecorder()
request, err := http.NewRequest("GET", "/docker/autoscale/rules", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
var rules []autoScaleRule
err = json.Unmarshal(recorder.Body.Bytes(), &rules)
c.Assert(err, check.IsNil)
c.Assert(rules, check.DeepEquals, []autoScaleRule{
{MetadataFilter: "mypool", Enabled: true, MaxContainerCount: 4, ScaleDownRatio: 1.5, PreventRebalance: true, MaxMemoryRatio: 0.9},
})
}
示例9: TestAutoScaleSetRuleInvalidRule
func (s *HandlersSuite) TestAutoScaleSetRuleInvalidRule(c *check.C) {
rule := autoScaleRule{MetadataFilter: "pool1", Enabled: true, ScaleDownRatio: 0.9, MaxMemoryRatio: 2.0}
v, err := form.EncodeToValues(&rule)
c.Assert(err, check.IsNil)
body := strings.NewReader(v.Encode())
recorder := httptest.NewRecorder()
request, err := http.NewRequest("POST", "/docker/autoscale/rules", body)
c.Assert(err, check.IsNil)
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusInternalServerError)
c.Assert(recorder.Body.String(), check.Matches, "(?s).*invalid rule, scale down ratio needs to be greater than 1.0, got 0.9.*")
c.Assert(eventtest.EventDesc{
Target: event.Target{Type: event.TargetTypePool, Value: "pool1"},
Owner: s.token.GetUserName(),
Kind: "node.autoscale.update",
StartCustomData: []map[string]interface{}{
{"name": "MetadataFilter", "value": "pool1"},
{"name": "Enabled", "value": "true"},
{"name": "ScaleDownRatio", "value": "0.9"},
{"name": "MaxMemoryRatio", "value": "2"},
},
ErrorMatches: `.*invalid rule, scale down ratio needs to be greater than 1.0, got 0.9.*`,
}, eventtest.HasEvent)
}
示例10: TestRebalanceContainersDryBodyHandler
func (s *S) TestRebalanceContainersDryBodyHandler(c *check.C) {
p, err := s.startMultipleServersCluster()
c.Assert(err, check.IsNil)
mainDockerProvisioner = p
defer s.stopMultipleServersCluster(p)
err = s.newFakeImage(p, "tsuru/app-myapp", nil)
c.Assert(err, check.IsNil)
appInstance := provisiontest.NewFakeApp("myapp", "python", 0)
defer p.Destroy(appInstance)
p.Provision(appInstance)
coll := p.collection()
defer coll.Close()
coll.Insert(container{ID: "container-id", AppName: appInstance.GetName(), Version: "container-version", Image: "tsuru/python", ProcessName: "web"})
defer coll.RemoveAll(bson.M{"appname": appInstance.GetName()})
imageId, err := appCurrentImageName(appInstance.GetName())
c.Assert(err, check.IsNil)
units, err := addContainersWithHost(&changeUnitsPipelineArgs{
toHost: "localhost",
toAdd: map[string]*containersToAdd{"web": {Quantity: 5}},
app: appInstance,
imageId: imageId,
provisioner: p,
})
c.Assert(err, check.IsNil)
conn, err := db.Conn()
c.Assert(err, check.IsNil)
defer conn.Close()
appStruct := &app.App{
Name: appInstance.GetName(),
Platform: appInstance.GetPlatform(),
}
err = conn.Apps().Insert(appStruct)
c.Assert(err, check.IsNil)
defer conn.Apps().Remove(bson.M{"name": appStruct.Name})
err = conn.Apps().Update(
bson.M{"name": appStruct.Name},
bson.M{"$set": bson.M{"units": units}},
)
c.Assert(err, check.IsNil)
recorder := httptest.NewRecorder()
b := bytes.NewBufferString(`{"dry": "true"}`)
request, err := http.NewRequest("POST", "/docker/containers/rebalance", b)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
body, err := ioutil.ReadAll(recorder.Body)
c.Assert(err, check.IsNil)
validJson := fmt.Sprintf("[%s]", strings.Replace(strings.Trim(string(body), "\n "), "\n", ",", -1))
var result []tsuruIo.SimpleJsonMessage
err = json.Unmarshal([]byte(validJson), &result)
c.Assert(err, check.IsNil)
c.Assert(len(result), check.Equals, 8)
c.Assert(result[0].Message, check.Equals, "Rebalancing 6 units...\n")
c.Assert(result[1].Message, check.Matches, "(?s)Would move unit .*")
c.Assert(result[7].Message, check.Equals, "Containers rebalanced successfully!\n")
}
示例11: TestHealingHistoryHandler
func (s *HandlersSuite) TestHealingHistoryHandler(c *check.C) {
evt1, err := event.NewInternal(&event.Opts{
Target: event.Target{Type: event.TargetTypeNode, Value: "addr1"},
InternalKind: "healer",
CustomData: map[string]interface{}{"node": cluster.Node{Address: "addr1"}},
Allowed: event.Allowed(permission.PermPool),
})
c.Assert(err, check.IsNil)
evt1.DoneCustomData(nil, cluster.Node{Address: "addr2"})
time.Sleep(10 * time.Millisecond)
evt2, err := event.NewInternal(&event.Opts{
Target: event.Target{Type: event.TargetTypeNode, Value: "addr3"},
InternalKind: "healer",
CustomData: map[string]interface{}{"node": cluster.Node{Address: "addr3"}},
Allowed: event.Allowed(permission.PermPool),
})
c.Assert(err, check.IsNil)
evt2.DoneCustomData(errors.New("some error"), cluster.Node{})
time.Sleep(10 * time.Millisecond)
evt3, err := event.NewInternal(&event.Opts{
Target: event.Target{Type: event.TargetTypeContainer, Value: "1234"},
InternalKind: "healer",
CustomData: container.Container{ID: "1234"},
Allowed: event.Allowed(permission.PermApp),
})
c.Assert(err, check.IsNil)
evt3.DoneCustomData(nil, container.Container{ID: "9876"})
recorder := httptest.NewRecorder()
request, err := http.NewRequest("GET", "/docker/healing", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
c.Assert(recorder.Header().Get("Content-Type"), check.Equals, "application/json")
body := recorder.Body.Bytes()
var healings []healer.HealingEvent
err = json.Unmarshal(body, &healings)
c.Assert(err, check.IsNil)
c.Assert(healings, check.HasLen, 3)
c.Assert(healings[2].StartTime.UTC().Format(time.Stamp), check.Equals, evt1.StartTime.UTC().Format(time.Stamp))
c.Assert(healings[2].EndTime.UTC().Format(time.Stamp), check.Equals, evt1.EndTime.UTC().Format(time.Stamp))
c.Assert(healings[2].FailingNode.Address, check.Equals, "addr1")
c.Assert(healings[2].CreatedNode.Address, check.Equals, "addr2")
c.Assert(healings[2].Error, check.Equals, "")
c.Assert(healings[2].Successful, check.Equals, true)
c.Assert(healings[2].Action, check.Equals, "node-healing")
c.Assert(healings[1].FailingNode.Address, check.Equals, "addr3")
c.Assert(healings[1].CreatedNode.Address, check.Equals, "")
c.Assert(healings[1].Error, check.Equals, "some error")
c.Assert(healings[1].Successful, check.Equals, false)
c.Assert(healings[1].Action, check.Equals, "node-healing")
c.Assert(healings[0].FailingContainer.ID, check.Equals, "1234")
c.Assert(healings[0].CreatedContainer.ID, check.Equals, "9876")
c.Assert(healings[0].Successful, check.Equals, true)
c.Assert(healings[0].Error, check.Equals, "")
c.Assert(healings[0].Action, check.Equals, "container-healing")
}
示例12: TestAutoScaleHistoryNoContent
func (s *HandlersSuite) TestAutoScaleHistoryNoContent(c *check.C) {
recorder := httptest.NewRecorder()
request, err := http.NewRequest("GET", "/docker/autoscale", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusNoContent)
}
示例13: TestMoveContainersEmptyBodyHandler
func (s *HandlersSuite) TestMoveContainersEmptyBodyHandler(c *check.C) {
recorder := httptest.NewRecorder()
request, err := http.NewRequest("POST", "/docker/containers/move", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusBadRequest)
}
示例14: Run
func (c *apiCmd) Run(context *cmd.Context, client *cmd.Client) error {
err := config.Check([]config.Checker{CheckProvisioner, CheckBeanstalkd})
if err != nil {
return err
}
if c.checkOnly {
return nil
}
api.RunServer(c.dry)
return nil
}
示例15: TestBsEnvSetHandlerUpdateExisting
func (s *HandlersSuite) TestBsEnvSetHandlerUpdateExisting(c *check.C) {
coll, err := bsCollection()
c.Assert(err, check.IsNil)
defer coll.Close()
err = coll.Insert(bsConfig{ID: bsUniqueID,
Image: "myimg",
Envs: []bsEnv{
{Name: "VAR1", Value: "VAL1"},
{Name: "VAR2", Value: "VAL2"},
},
Pools: []bsPoolEnvs{
{
Name: "POOL1",
Envs: []bsEnv{
{Name: "VAR3", Value: "VAL3"},
{Name: "VAR4", Value: "VAL4"},
},
},
},
})
c.Assert(err, check.IsNil)
recorder := httptest.NewRecorder()
json := `{
"image": "ignored",
"envs": [
{"name": "VAR1", "value": ""},
{"name": "VAR3", "value": "VAL3"}
],
"pools": [
{
"name": "POOL1",
"envs": [
{"name": "VAR3", "value": ""}
]
}
]
}`
body := bytes.NewBufferString(json)
request, err := http.NewRequest("POST", "/docker/bs/env", body)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
server := api.RunServer(true)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusNoContent)
conf, err := loadBsConfig()
c.Assert(err, check.IsNil)
c.Assert(conf.Image, check.Equals, "myimg")
sort.Sort(bsEnvList(conf.Envs))
c.Assert(conf.Envs, check.DeepEquals, []bsEnv{{Name: "VAR2", Value: "VAL2"}, {Name: "VAR3", Value: "VAL3"}})
c.Assert(conf.Pools, check.DeepEquals, []bsPoolEnvs{
{Name: "POOL1", Envs: []bsEnv{{Name: "VAR4", Value: "VAL4"}}},
})
}