mirror of https://github.com/knative/func.git
92 lines
2.3 KiB
Go
92 lines
2.3 KiB
Go
//go:build oncluster || runtime
|
|
|
|
package oncluster
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"k8s.io/apimachinery/pkg/util/rand"
|
|
common "knative.dev/func/test/common"
|
|
)
|
|
|
|
var runtimeSupportMap = map[string][]string{
|
|
"node": {"pack", "s2i"},
|
|
"go": {"pack"},
|
|
"rust": {"pack"},
|
|
"python": {"pack", "s2i"},
|
|
"quarkus": {"pack", "s2i"},
|
|
"springboot": {"pack"},
|
|
"typescript": {"pack", "s2i"},
|
|
}
|
|
|
|
// TestRuntime will invoke a language runtime test against (by default) to all runtimes.
|
|
// The Environment Variable E2E_RUNTIMES can be used to select the languages/runtimes to be tested
|
|
func TestRuntime(t *testing.T) {
|
|
|
|
var runtimeList = []string{}
|
|
runtimes, present := os.LookupEnv("E2E_RUNTIMES")
|
|
targetBuilder, _ := os.LookupEnv("FUNC_BUILDER")
|
|
|
|
if present {
|
|
if runtimes != "" {
|
|
runtimeList = strings.Split(runtimes, " ")
|
|
}
|
|
} else {
|
|
for k := range runtimeSupportMap {
|
|
runtimeList = append(runtimeList, k)
|
|
}
|
|
}
|
|
|
|
for _, lang := range runtimeList {
|
|
for _, builder := range runtimeSupportMap[lang] {
|
|
if targetBuilder == "" || builder == targetBuilder {
|
|
t.Run(fmt.Sprintf("%v_%v_test", lang, builder), func(t *testing.T) {
|
|
if lang == "python" && os.Getenv("GITHUB_ACTIONS") == "true" {
|
|
t.Skip("skipping python test in GH action because of space requirement")
|
|
}
|
|
runtimeImpl(t, lang, builder)
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
func runtimeImpl(t *testing.T, lang string, builder string) {
|
|
|
|
var gitProjectName = fmt.Sprintf("test-runtime-%v-%v-%v", lang, builder, rand.String(5))
|
|
var gitProjectPath = filepath.Join(t.TempDir(), gitProjectName)
|
|
var funcName = gitProjectName
|
|
var funcPath = gitProjectPath
|
|
|
|
gitServer := common.GetGitServer(t)
|
|
remoteRepo := gitServer.CreateRepository(gitProjectName)
|
|
defer gitServer.DeleteRepository(gitProjectName)
|
|
|
|
knFunc := common.NewKnFuncShellCli(t)
|
|
knFunc.Exec("create", "-l", lang, funcPath)
|
|
defer os.RemoveAll(gitProjectPath)
|
|
|
|
GitInitialCommitAndPush(t, gitProjectPath, remoteRepo.ExternalCloneURL)
|
|
|
|
knFunc.Exec("deploy",
|
|
"--registry", common.GetRegistry(),
|
|
"--path", funcPath,
|
|
"--remote",
|
|
"--verbose",
|
|
"--builder", builder,
|
|
"--git-url", remoteRepo.ClusterCloneURL)
|
|
|
|
defer knFunc.Exec("delete", "-p", funcPath)
|
|
|
|
// -- Assertions --
|
|
result := knFunc.Exec("invoke", "-p", funcPath)
|
|
t.Log(result)
|
|
AssertThatTektonPipelineRunSucceed(t, funcName)
|
|
|
|
}
|