in codegen/template_bundle/template_files.go [965:1073]
func Test{{title $testFixture.HandleID}}{{title $testFixture.TestName}}OKResponse(t *testing.T) {
confFiles := util.DefaultConfigFiles("{{$testFixture.TestServiceName}}")
staticConf := config.NewRuntimeConfigOrDie(confFiles, map[string]interface{}{})
var alternateServiceDetail config.AlternateServiceDetail
if staticConf.ContainsKey("clients.{{$clientName}}.alternates") {
staticConf.MustGetStruct("clients.{{$clientName}}.alternates", &alternateServiceDetail)
}
var backends []*testbackend.TestTChannelBackend
for serviceName := range alternateServiceDetail.ServicesDetailMap {
if serviceName == "nomatch" {
continue
}
backend, err := testbackend.CreateTChannelBackend(int32(0), serviceName)
assert.NoError(t, err)
err = backend.Bootstrap()
assert.NoError(t, err)
backends = append(backends, backend)
}
gateway, err := testGateway.CreateGateway(t, map[string]interface{}{
{{/* the serviceName here is service discovery name, therefore is ok to be arbitrary */ -}}
"clients.{{$clientName}}.serviceName": "{{$clientName}}Service",
}, &testGateway.Options{
KnownTChannelBackends: []string{"{{$clientName}}"},
TestBinary: util.DefaultMainFile("{{$testFixture.TestServiceName}}"),
ConfigFiles: confFiles,
Backends: backends,
})
if !assert.NoError(t, err, "got bootstrap err") {
return
}
defer gateway.Close()
{{range $clientCallName, $clientCallFixture := $testFixture.ClientTestFixtures}}
{{$clientFunc := printf "fake%s" (title $clientCallFixture.ClientMethod) -}}
{{$clientFunc}} := func(
ctx context.Context,
reqHeaders map[string]string,
{{if $clientMethod.RequestType -}}
args {{$clientMethodRequestType}},
{{end -}}
) ({{- if $clientMethod.ResponseType -}}{{$clientMethodResponseType}}, {{- end -}}map[string]string, error) {
{{range $k, $v := $clientCallFixture.ClientReqHeaders -}}
assert.Equal(
t,
"{{$v}}",
reqHeaders["{{$k}}"])
{{end -}}
var resHeaders map[string]string
{{if (len $clientCallFixture.ClientResHeaders) -}}
resHeaders = map[string]string{}
{{end -}}
{{range $k, $v := $clientCallFixture.ClientResHeaders -}}
resHeaders["{{$k}}"] = "{{$v}}"
{{end}}
{{if $clientMethod.ResponseType -}}
var res {{unref $clientMethod.ResponseType}}
clientResponse := []byte({{printf "` + "`" + `%s` + "`" + `" $clientCallFixture.ClientResponse.Body}})
err := json.Unmarshal(clientResponse, &res)
if err!= nil {
t.Fatal("cant't unmarshal client response json to client response struct")
return nil, resHeaders, err
}
return &res, resHeaders, nil
{{else -}}
return resHeaders, nil
{{end -}}
}
headers := map[string]string{}
err = gateway.TChannelBackends()["{{$clientName}}"].Register(
"{{$testFixture.EndpointID}}", "{{$testFixture.HandleID}}", "{{$thriftService}}::{{$clientMethodName}}",
{{$clientPackage}}.New{{$thriftService}}{{title $clientMethodName}}Handler({{$clientFunc}}),
)
assert.NoError(t, err)
makeRequestAndValidate{{title $testFixture.HandleID}}{{title $testFixture.TestName}}(t, gateway, headers)
isSet := true
i := 1
for serviceName := range alternateServiceDetail.ServicesDetailMap {
headers := map[string]string{}
if serviceName == "nomatch" {
headers["x-container"] = "randomstr"
headers["x-test-Env"] = "randomstr"
} else {
if isSet {
headers["x-container"] = "sandbox"
isSet = false
} else {
headers["x-test-Env"] = "test1"
}
err = gateway.TChannelBackends()["{{$clientName}}:"+strconv.Itoa(i)].Register(
"{{$testFixture.EndpointID}}", "{{$testFixture.HandleID}}", "{{$thriftService}}::{{$clientMethodName}}",
{{$clientPackage}}.New{{$thriftService}}{{title $clientMethodName}}Handler({{$clientFunc}}),
)
assert.NoError(t, err)
i++
}
makeRequestAndValidate{{title $testFixture.HandleID}}{{title $testFixture.TestName}}(t, gateway, headers)
}
{{end}}
}