Use go-events package
TBD: Queue not converted yet Signed-off-by: Elliot Pahl <elliot.pahl@gmail.com>
This commit is contained in:
parent
2d1126ecc1
commit
800cb95821
25 changed files with 1354 additions and 530 deletions
|
@ -14,6 +14,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/docker/distribution/manifest/schema1"
|
||||
events "github.com/docker/go-events"
|
||||
)
|
||||
|
||||
// TestHTTPSink mocks out an http endpoint and notifies it under a couple of
|
||||
|
@ -68,8 +69,8 @@ func TestHTTPSink(t *testing.T) {
|
|||
&endpointMetricsHTTPStatusListener{safeMetrics: metrics})
|
||||
|
||||
// first make sure that the default transport gives x509 untrusted cert error
|
||||
events := []Event{}
|
||||
err := sink.Write(events...)
|
||||
event := Event{}
|
||||
err := sink.Write(event)
|
||||
if !strings.Contains(err.Error(), "x509") && !strings.Contains(err.Error(), "unknown ca") {
|
||||
t.Fatal("TLS server with default transport should give unknown CA error")
|
||||
}
|
||||
|
@ -83,12 +84,13 @@ func TestHTTPSink(t *testing.T) {
|
|||
}
|
||||
sink = newHTTPSink(server.URL, 0, nil, tr,
|
||||
&endpointMetricsHTTPStatusListener{safeMetrics: metrics})
|
||||
err = sink.Write(events...)
|
||||
err = sink.Write(event)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error writing events: %v", err)
|
||||
t.Fatalf("unexpected error writing event: %v", err)
|
||||
}
|
||||
|
||||
// reset server to standard http server and sink to a basic sink
|
||||
metrics = newSafeMetrics("")
|
||||
server = httptest.NewServer(serverHandler)
|
||||
sink = newHTTPSink(server.URL, 0, nil, nil,
|
||||
&endpointMetricsHTTPStatusListener{safeMetrics: metrics})
|
||||
|
@ -111,46 +113,52 @@ func TestHTTPSink(t *testing.T) {
|
|||
}()
|
||||
|
||||
for _, tc := range []struct {
|
||||
events []Event // events to send
|
||||
event events.Event // events to send
|
||||
url string
|
||||
failure bool // true if there should be a failure.
|
||||
isFailure bool // true if there should be a failure.
|
||||
isError bool // true if the request returns an error
|
||||
statusCode int // if not set, no status code should be incremented.
|
||||
}{
|
||||
{
|
||||
statusCode: http.StatusOK,
|
||||
events: []Event{
|
||||
createTestEvent("push", "library/test", schema1.MediaTypeSignedManifest)},
|
||||
event: createTestEvent("push", "library/test", schema1.MediaTypeSignedManifest),
|
||||
},
|
||||
{
|
||||
statusCode: http.StatusOK,
|
||||
events: []Event{
|
||||
createTestEvent("push", "library/test", schema1.MediaTypeSignedManifest),
|
||||
createTestEvent("push", "library/test", layerMediaType),
|
||||
createTestEvent("push", "library/test", layerMediaType),
|
||||
},
|
||||
event: createTestEvent("push", "library/test", schema1.MediaTypeSignedManifest),
|
||||
},
|
||||
{
|
||||
statusCode: http.StatusOK,
|
||||
event: createTestEvent("push", "library/test", layerMediaType),
|
||||
},
|
||||
{
|
||||
statusCode: http.StatusOK,
|
||||
event: createTestEvent("push", "library/test", layerMediaType),
|
||||
},
|
||||
{
|
||||
statusCode: http.StatusTemporaryRedirect,
|
||||
},
|
||||
{
|
||||
statusCode: http.StatusBadRequest,
|
||||
failure: true,
|
||||
isFailure: true,
|
||||
},
|
||||
{
|
||||
// Case where connection is immediately closed
|
||||
url: closeL.Addr().String(),
|
||||
failure: true,
|
||||
url: "http://" + closeL.Addr().String(),
|
||||
isError: true,
|
||||
},
|
||||
} {
|
||||
|
||||
if tc.failure {
|
||||
expectedMetrics.Failures += len(tc.events)
|
||||
if tc.isFailure {
|
||||
expectedMetrics.Failures++
|
||||
} else if tc.isError {
|
||||
expectedMetrics.Errors++
|
||||
} else {
|
||||
expectedMetrics.Successes += len(tc.events)
|
||||
expectedMetrics.Successes++
|
||||
}
|
||||
|
||||
if tc.statusCode > 0 {
|
||||
expectedMetrics.Statuses[fmt.Sprintf("%d %s", tc.statusCode, http.StatusText(tc.statusCode))] += len(tc.events)
|
||||
expectedMetrics.Statuses[fmt.Sprintf("%d %s", tc.statusCode, http.StatusText(tc.statusCode))]++
|
||||
}
|
||||
|
||||
url := tc.url
|
||||
|
@ -161,11 +169,11 @@ func TestHTTPSink(t *testing.T) {
|
|||
url += fmt.Sprintf("?status=%v", tc.statusCode)
|
||||
sink.url = url
|
||||
|
||||
t.Logf("testcase: %v, fail=%v", url, tc.failure)
|
||||
t.Logf("testcase: %v, fail=%v, error=%v", url, tc.isFailure, tc.isError)
|
||||
// Try a simple event emission.
|
||||
err := sink.Write(tc.events...)
|
||||
err := sink.Write(tc.event)
|
||||
|
||||
if !tc.failure {
|
||||
if !tc.isFailure && !tc.isError {
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error send event: %v", err)
|
||||
}
|
||||
|
@ -173,6 +181,7 @@ func TestHTTPSink(t *testing.T) {
|
|||
if err == nil {
|
||||
t.Fatalf("the endpoint should have rejected the request")
|
||||
}
|
||||
t.Logf("write error: %v", err)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(metrics.EndpointMetrics, expectedMetrics) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue