func assertMetrics(a *assert.Assertions, s *service.Service, expected expectedValues) { httpClient := &http.Client{} u := fmt.Sprintf("http://%s%s", s.WebServer().GetAddr(), defaultMetricsEndpoint) request, err := http.NewRequest(http.MethodGet, u, nil) a.NoError(err) response, err := httpClient.Do(request) a.NoError(err) defer response.Body.Close() a.Equal(http.StatusOK, response.StatusCode) bodyBytes, err := ioutil.ReadAll(response.Body) a.NoError(err) logger.WithField("body", string(bodyBytes)).Debug("metrics response") mFCM := &fcmMetrics{} err = json.Unmarshal(bodyBytes, mFCM) a.NoError(err) a.Equal(0, mFCM.TotalSentMessageErrors) a.Equal(expected.MessageCount, mFCM.TotalSentMessages) a.Equal(0, mFCM.Minute.CurrentErrorsCount) a.Equal(expected.MessageCount, mFCM.Minute.CurrentMessagesCount) a.Equal(0, mFCM.Minute.CurrentErrorsTotalLatencies) a.Equal(expected.ZeroLatencies, mFCM.Minute.CurrentMessagesTotalLatencies == 0) a.Equal(0, mFCM.Hour.CurrentErrorsCount) a.Equal(expected.MessageCount, mFCM.Hour.CurrentMessagesCount) a.Equal(0, mFCM.Hour.CurrentErrorsTotalLatencies) a.Equal(expected.ZeroLatencies, mFCM.Hour.CurrentMessagesTotalLatencies == 0) a.Equal(0, mFCM.Day.CurrentErrorsCount) a.Equal(expected.MessageCount, mFCM.Day.CurrentMessagesCount) a.Equal(0, mFCM.Day.CurrentErrorsTotalLatencies) a.Equal(expected.ZeroLatencies, mFCM.Day.CurrentMessagesTotalLatencies == 0) mRouter := &routerMetrics{} err = json.Unmarshal(bodyBytes, mRouter) a.NoError(err) a.Equal(expected.CurrentRoutes, mRouter.CurrentRoutes) a.Equal(expected.CurrentSubscriptions, mRouter.CurrentSubscriptions) }
func subscriptionSetUp(t *testing.T, service *service.Service) { a := assert.New(t) urlFormat := fmt.Sprintf("http://%s/fcm/%%d/gcmId%%d/%%s", service.WebServer().GetAddr()) // create GCM subscription response, errPost := http.Post( fmt.Sprintf(urlFormat, 1, 1, strings.TrimPrefix(testTopic, "/")), "text/plain", bytes.NewBufferString(""), ) a.NoError(errPost) a.Equal(response.StatusCode, 200) body, errReadAll := ioutil.ReadAll(response.Body) a.NoError(errReadAll) a.Equal(fmt.Sprintf(`{"subscribed":"%s"}`, testTopic), string(body)) }
func subscribeMultipleClients(t *testing.T, service *service.Service, noOfClients int) { a := assert.New(t) // create FCM subscription for topic for i := 0; i < noOfClients; i++ { urlFormat := fmt.Sprintf("http://%s/fcm/gcmId%%d/user%%d/%%s", service.WebServer().GetAddr()) url := fmt.Sprintf(urlFormat, i, i, strings.TrimPrefix(testTopic, "/")) response, errPost := http.Post( url, "text/plain", bytes.NewBufferString(""), ) logger.WithField("url", url).Debug("subscribe") a.NoError(errPost) a.Equal(response.StatusCode, 200) body, errReadAll := ioutil.ReadAll(response.Body) a.NoError(errReadAll) a.Equal(fmt.Sprintf(`{"subscribed":"%s"}`, testTopic), string(body)) } }
func clientSetUp(t *testing.T, service *service.Service) client.Client { wsURL := "ws://" + service.WebServer().GetAddr() + "/stream/user/user01" c, err := client.Open(wsURL, "http://localhost/", 1000, false) assert.NoError(t, err) return c }