mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 05:02:35 +08:00
CLI: Reduce memory usage for plugin installation (#19639)
* grafana-cli: use tmp file when downloading plugin install file
This commit is contained in:

committed by
Arve Knudsen

parent
46a4118461
commit
b4712ec4b9
@ -2,7 +2,7 @@ package commands
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"io"
|
||||
"os"
|
||||
"runtime"
|
||||
"testing"
|
||||
@ -52,10 +52,8 @@ func TestExtractFiles(t *testing.T) {
|
||||
pluginDir, del := setupFakePluginsDir(t)
|
||||
defer del()
|
||||
|
||||
body, err := ioutil.ReadFile("testdata/grafana-simple-json-datasource-ec18fa4da8096a952608a7e4c7782b4260b41bcf.zip")
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = extractFiles(body, "grafana-simple-json-datasource", pluginDir, false)
|
||||
archive := "testdata/grafana-simple-json-datasource-ec18fa4da8096a952608a7e4c7782b4260b41bcf.zip"
|
||||
err := extractFiles(archive, "grafana-simple-json-datasource", pluginDir, false)
|
||||
assert.Nil(t, err)
|
||||
|
||||
//File in zip has permissions 755
|
||||
@ -83,10 +81,7 @@ func TestExtractFiles(t *testing.T) {
|
||||
pluginDir, del := setupFakePluginsDir(t)
|
||||
defer del()
|
||||
|
||||
body, err := ioutil.ReadFile("testdata/plugin-with-symlink.zip")
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = extractFiles(body, "plugin-with-symlink", pluginDir, false)
|
||||
err := extractFiles("testdata/plugin-with-symlink.zip", "plugin-with-symlink", pluginDir, false)
|
||||
assert.Nil(t, err)
|
||||
|
||||
_, err = os.Stat(pluginDir + "/plugin-with-symlink/text.txt")
|
||||
@ -100,10 +95,7 @@ func TestExtractFiles(t *testing.T) {
|
||||
pluginDir, del := setupFakePluginsDir(t)
|
||||
defer del()
|
||||
|
||||
body, err := ioutil.ReadFile("testdata/plugin-with-symlink.zip")
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = extractFiles(body, "plugin-with-symlink", pluginDir, true)
|
||||
err := extractFiles("testdata/plugin-with-symlink.zip", "plugin-with-symlink", pluginDir, true)
|
||||
assert.Nil(t, err)
|
||||
|
||||
_, err = os.Stat(pluginDir + "/plugin-with-symlink/symlink_to_txt")
|
||||
@ -228,13 +220,15 @@ func setupPluginInstallCmd(t *testing.T, pluginDir string) utils.CommandLine {
|
||||
return plugin, nil
|
||||
}
|
||||
|
||||
client.DownloadFileFunc = func(pluginName, filePath, url string, checksum string) (content []byte, err error) {
|
||||
client.DownloadFileFunc = func(pluginName string, tmpFile *os.File, url string, checksum string) (err error) {
|
||||
assert.Equal(t, "test-plugin-panel", pluginName)
|
||||
assert.Equal(t, "/test-plugin-panel/versions/1.0.0/download", url)
|
||||
assert.Equal(t, "test", checksum)
|
||||
body, err := ioutil.ReadFile("testdata/grafana-simple-json-datasource-ec18fa4da8096a952608a7e4c7782b4260b41bcf.zip")
|
||||
f, err := os.Open("testdata/grafana-simple-json-datasource-ec18fa4da8096a952608a7e4c7782b4260b41bcf.zip")
|
||||
assert.Nil(t, err)
|
||||
return body, nil
|
||||
_, err = io.Copy(tmpFile, f)
|
||||
assert.Nil(t, err)
|
||||
return nil
|
||||
}
|
||||
|
||||
cmd.Client = client
|
||||
|
Reference in New Issue
Block a user