in systemtest/kibana.go [246:300]
func CreateSourceMap(t testing.TB, sourcemap []byte, serviceName, serviceVersion, bundleFilepath string) string {
t.Helper()
var data bytes.Buffer
mw := multipart.NewWriter(&data)
require.NoError(t, mw.WriteField("service_name", serviceName))
require.NoError(t, mw.WriteField("service_version", serviceVersion))
require.NoError(t, mw.WriteField("bundle_filepath", bundleFilepath))
sourcemapFileWriter, err := mw.CreateFormFile("sourcemap", "sourcemap.js.map")
require.NoError(t, err)
sourcemapFileWriter.Write(sourcemap)
require.NoError(t, mw.Close())
apiURL := *KibanaURL
apiURL.Path += "/api/apm/sourcemaps"
req, _ := http.NewRequest("POST", apiURL.String(), &data)
req.Header.Add("Content-Type", mw.FormDataContentType())
req.Header.Set("kbn-xsrf", "1")
resp, err := http.DefaultClient.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
respBody, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.Equal(t, http.StatusOK, resp.StatusCode, string(respBody))
var result struct {
ID string `json:"id"`
}
err = json.Unmarshal(respBody, &result)
require.NoError(t, err)
cleanPath := bundleFilepath
u, err := url.Parse(bundleFilepath)
if err == nil {
u.Fragment = ""
u.RawQuery = ""
u.Path = path.Clean(u.Path)
cleanPath = u.String()
}
id := serviceName + "-" + serviceVersion + "-" + cleanPath
estest.ExpectMinDocs(t, Elasticsearch, 1, ".apm-source-map", espoll.TermQuery{
Field: "_id",
Value: id,
})
t.Cleanup(func() {
DeleteSourceMap(t, result.ID)
})
return result.ID
}