isula-build/patch/0050-data-and-run-root-set-unit-test.patch
DCCooper b3c544dea6 isula-build: sync patches from upstream
reason: updates are showing as follow:
- fix data and run root not effective when setting configuration.toml
- enhancement on go tests
- set user's uid and gid for containers
- make isula-build client side static so that which can be run in containers environment

Signed-off-by: DCCooper <1866858@gmail.com>
2021-06-02 14:45:19 +08:00

134 lines
3.4 KiB
Diff

From d6c6c205122386b66ef82adc4af16c3c2eb86b18 Mon Sep 17 00:00:00 2001
From: xingweizheng <xingweizheng@huawei.com>
Date: Mon, 31 May 2021 00:46:16 +0800
Subject: [PATCH 2/5] data and run root set unit test
---
cmd/daemon/main_test.go | 103 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 103 insertions(+)
diff --git a/cmd/daemon/main_test.go b/cmd/daemon/main_test.go
index 790fdfc..d98ea83 100644
--- a/cmd/daemon/main_test.go
+++ b/cmd/daemon/main_test.go
@@ -18,9 +18,12 @@ import (
"os"
"testing"
+ "gotest.tools/v3/assert"
"gotest.tools/v3/fs"
constant "isula.org/isula-build"
+ "isula.org/isula-build/cmd/daemon/config"
+ "isula.org/isula-build/store"
)
func TestSetupWorkingDirectories(t *testing.T) {
@@ -104,3 +107,103 @@ func TestSetupWorkingDirectories(t *testing.T) {
})
}
}
+
+func TestRunAndDataRootSet(t *testing.T) {
+ dataRoot := fs.NewDir(t, t.Name())
+ runRoot := fs.NewDir(t, t.Name())
+
+ conf := config.TomlConfig{
+ Debug: true,
+ Group: "isula",
+ LogLevel: "debug",
+ Runtime: "",
+ RunRoot: "",
+ DataRoot: "",
+ }
+ cmd := newDaemonCommand()
+
+ result := store.DaemonStoreOptions{
+ DataRoot: dataRoot.Join("storage"),
+ RunRoot: runRoot.Join("storage"),
+ }
+
+ setStorage := func(content string) func() {
+ return func() {
+ if err := mergeConfig(conf, cmd); err != nil {
+ t.Fatalf("mrege config failed with error: %v", err)
+ }
+
+ fileName := "storage.toml"
+ tmpDir := fs.NewDir(t, t.Name(), fs.WithFile(fileName, content))
+ defer tmpDir.Remove()
+
+ filePath := tmpDir.Join(fileName)
+ store.SetDefaultConfigFilePath(filePath)
+ option, err := store.GetDefaultStoreOptions(true)
+ if err != nil {
+ t.Fatalf("get default store options failed with error: %v", err)
+ }
+
+ var storeOpt store.DaemonStoreOptions
+ storeOpt.RunRoot = option.RunRoot
+ storeOpt.DataRoot = option.GraphRoot
+ store.SetDefaultStoreOptions(storeOpt)
+ }
+
+ }
+
+ testcases := []struct {
+ name string
+ setF func()
+ expectation store.DaemonStoreOptions
+ }{
+ {
+ name: "TC1 - cmd set, configuration and storage not set",
+ setF: func() {
+ cmd.PersistentFlags().Set("runroot", runRoot.Path())
+ cmd.PersistentFlags().Set("dataroot", dataRoot.Path())
+ checkAndValidateConfig(cmd)
+ },
+ expectation: result,
+ },
+ {
+ name: "TC2 - cmd and storage not set, configuration set",
+ setF: func() {
+ conf.DataRoot = dataRoot.Path()
+ conf.RunRoot = runRoot.Path()
+ checkAndValidateConfig(cmd)
+ },
+ expectation: result,
+ },
+ {
+ name: "TC3 - all not set",
+ setF: setStorage("[storage]"),
+ expectation: store.DaemonStoreOptions{
+ DataRoot: "/var/lib/containers/storage",
+ RunRoot: "/var/run/containers/storage",
+ },
+ },
+ {
+ name: "TC4 - cmd and configuration not set, storage set",
+ setF: func() {
+ config := "[storage]\nrunroot = \"" + runRoot.Join("storage") + "\"\ngraphroot = \"" + dataRoot.Join("storage") + "\""
+ sT := setStorage(config)
+ sT()
+ },
+ expectation: result,
+ },
+ }
+
+ for _, tc := range testcases {
+ t.Run(tc.name, func(t *testing.T) {
+ tc.setF()
+ storeOptions, err := store.GetDefaultStoreOptions(false)
+ if err != nil {
+ t.Fatalf("get default store options failed with error: %v", err)
+ }
+ assert.Equal(t, tc.expectation.DataRoot, storeOptions.GraphRoot)
+ assert.Equal(t, tc.expectation.RunRoot, storeOptions.RunRoot)
+ })
+
+ }
+}
--
1.8.3.1