MCPcopy
hub / github.com/prometheus/pushgateway / TestPush

Function TestPush

handler/handler_test.go:114–438  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

112}
113
114func TestPush(t *testing.T) {
115 mms := MockMetricStore{}
116 mmsWithErr := MockMetricStore{err: errors.New("testerror")}
117 // false, true, false → no replace, check consistency, no base64 encoding.
118 handler := Push(&mms, false, true, false, logger)
119 handlerWithErr := Push(&mmsWithErr, false, true, false, logger)
120 handlerBase64 := Push(&mms, false, true, true, logger)
121 req, err := http.NewRequest("POST", "http://example.org/", &bytes.Buffer{})
122 if err != nil {
123 t.Fatal(err)
124 }
125
126 // No job name.
127 w := httptest.NewRecorder()
128 handler(w, req)
129 if expected, got := http.StatusBadRequest, w.Code; expected != got {
130 t.Errorf("Wanted status code %v, got %v.", expected, got)
131 }
132 if !mms.lastWriteRequest.Timestamp.IsZero() {
133 t.Errorf("Write request timestamp unexpectedly set: %#v", mms.lastWriteRequest)
134 }
135
136 // With job name, but no instance name and no content.
137 mms.lastWriteRequest = storage.WriteRequest{}
138 w = httptest.NewRecorder()
139 params := map[string]string{
140 "job": "testjob",
141 }
142
143 handler(w, req.WithContext(ctxWithParams(params, req)))
144 if expected, got := http.StatusOK, w.Code; expected != got {
145 t.Errorf("Wanted status code %v, got %v.", expected, got)
146 }
147 if mms.lastWriteRequest.Timestamp.IsZero() {
148 t.Errorf("Write request timestamp not set: %#v", mms.lastWriteRequest)
149 }
150 if expected, got := "testjob", mms.lastWriteRequest.Labels["job"]; expected != got {
151 t.Errorf("Wanted job %v, got %v.", expected, got)
152 }
153 if expected, got := "", mms.lastWriteRequest.Labels["instance"]; expected != got {
154 t.Errorf("Wanted instance %v, got %v.", expected, got)
155 }
156
157 // With job name and instance name and invalid text content.
158 mms.lastWriteRequest = storage.WriteRequest{}
159 req, err = http.NewRequest(
160 "POST", "http://example.org/",
161 bytes.NewBufferString("blablabla\n"),
162 )
163 if err != nil {
164 t.Fatal(err)
165 }
166 w = httptest.NewRecorder()
167 params = map[string]string{
168 "job": "testjob",
169 "instance": "testinstance",
170 }
171

Callers

nothing calls this directly

Calls 3

PushFunction · 0.85
ctxWithParamsFunction · 0.85
verifyMetricFamilyFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…