(t *testing.T)
| 112 | } |
| 113 | |
| 114 | func 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 |
nothing calls this directly
no test coverage detected
searching dependent graphs…