mirror of https://github.com/knative/func.git
57 lines
1.7 KiB
Go
57 lines
1.7 KiB
Go
package e2e
|
|
|
|
import (
|
|
"context"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
"k8s.io/client-go/dynamic"
|
|
"knative.dev/kn-plugin-func/k8s"
|
|
|
|
"testing"
|
|
)
|
|
|
|
// RetrieveKnativeServiceResource wraps the logic to query knative serving resources in current namespace
|
|
func RetrieveKnativeServiceResource(t *testing.T, serviceName string) *unstructured.Unstructured {
|
|
// create k8s dynamic client
|
|
config, err := k8s.GetClientConfig().ClientConfig()
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
dynClient, err := dynamic.NewForConfig(config)
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
|
|
knativeServiceResource := schema.GroupVersionResource{
|
|
Group: "serving.knative.dev",
|
|
Version: "v1",
|
|
Resource: "services",
|
|
}
|
|
namespace, _, _ := k8s.GetClientConfig().Namespace()
|
|
resource, err := dynClient.Resource(knativeServiceResource).Namespace(namespace).Get(context.Background(), serviceName, metav1.GetOptions{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
return resource
|
|
}
|
|
|
|
// GetCurrentServiceRevision retrieves current revision name for the deployed function
|
|
func GetCurrentServiceRevision(t *testing.T, serviceName string) string {
|
|
resource := RetrieveKnativeServiceResource(t, serviceName)
|
|
rootMap := resource.UnstructuredContent()
|
|
statusMap := rootMap["status"].(map[string]interface{})
|
|
latestReadyRevision := statusMap["latestReadyRevisionName"].(string)
|
|
return latestReadyRevision
|
|
}
|
|
|
|
func GetKnativeServiceUrl(t *testing.T, functionName string) string {
|
|
resource := RetrieveKnativeServiceResource(t, functionName)
|
|
rootMap := resource.UnstructuredContent()
|
|
statusMap := rootMap["status"].(map[string]interface{})
|
|
url := statusMap["url"].(string)
|
|
return url
|
|
}
|