0
我對travis和Go非常陌生。我對https服務器進行了測試,運行良好,我在本地計算機上運行了go test -v ./...
,但在嘗試連接到服務器時,由於getsocketopt: connection refused
錯誤,Travis的大部分時間都會失敗。它應該在https://localhost:8081
上收聽。我的.travis.yml
中有什麼可以阻止這種情況發生?Travis CI在嘗試測試Golang HTTP Server時失敗
這裏是我的.travis.yml
language: go
go:
- 1.6
- tip
matrix:
allow_failures:
- go: tip
before_install:
- go get -v github.com/golang/lint/golint
install:
- go get -v -d -t ./...
這裏是我的服務器創建代碼:
func (webserver *WebServer) Start(keyLocation string, certLocation string) <-chan error {
errors := make(chan error, 1)
go func() {
defer close(errors)
errors <- http.ListenAndServeTLS(fmt.Sprintf(":%v", webserver.config.WebServerPort), certLocation, keyLocation, nil)
}()
return errors
}
而且客戶端代碼:與客戶
func createHTTPClient(t *testing.T) *http.Client {
t.Log("Creating a test client...")
tr := &http.Transport {
TLSClientConfig: &tls.Config {InsecureSkipVerify: true},
}
t.Log("Created a test client")
return &http.Client {Transport: tr}
}
樣品要求
request, _ := http.NewRequest(httpmethod, fmt.Sprintf("https://localhost:%d/token", port), nil)
client.Do(request)
樣品啓動服務器在測試
errors := server.Start(testKeyLocation, testCertLocation)
//Handle errors from server
go func() {
select {
case err := <-errors:
if err != nil {
t.Fatalf("Error with server: %s", err.Error())
}
}
}()
您是否在嘗試啓動服務器時檢查錯誤? – JimB
是的,它被設置爲在執行'http.ListenAndServeTLS'命令時產生的任何錯誤都無法通過測試。雖然創建測試客戶端嘗試連接到服務器時發生故障。 – cphelps
您需要先展示如何創建服務器和客戶端。這並不一定與Travis有關。 – JimB