| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package asset
- import (
- "testing"
- "time"
- "github.com/opencost/opencost/core/pkg/opencost"
- )
- func TestQueryAssetAutocompleteFromSet(t *testing.T) {
- start := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC)
- end := start.Add(24 * time.Hour)
- window := opencost.NewClosedWindow(start, end)
- nodeA := opencost.NewNode("node-a", "cluster-a", "provider-a", start, end, window)
- nodeA.SetLabels(map[string]string{"team": "platform", "app": "api"})
- nodeA.GetProperties().Account = "acct-a"
- nodeA.GetProperties().Category = opencost.ComputeCategory
- nodeB := opencost.NewNode("node-b", "cluster-b", "provider-b", start, end, window)
- nodeB.SetLabels(map[string]string{"team": "data", "app": "db"})
- nodeB.GetProperties().Account = "acct-b"
- nodeB.GetProperties().Category = opencost.ComputeCategory
- assetSet := opencost.NewAssetSet(start, end, nodeA, nodeB)
- resp, err := QueryAssetAutocompleteFromSet(assetSet, AssetAutocompleteRequest{
- TenantID: "opencost",
- Field: "cluster",
- Window: window,
- })
- if err != nil {
- t.Fatalf("unexpected error: %v", err)
- }
- if len(resp.Data) != 2 || resp.Data[0] != "cluster-a" || resp.Data[1] != "cluster-b" {
- t.Fatalf("unexpected cluster autocomplete response: %+v", resp.Data)
- }
- labelResp, err := QueryAssetAutocompleteFromSet(assetSet, AssetAutocompleteRequest{
- TenantID: "opencost",
- Field: "label:team",
- Search: "plat",
- Window: window,
- })
- if err != nil {
- t.Fatalf("unexpected error: %v", err)
- }
- if len(labelResp.Data) != 1 || labelResp.Data[0] != "platform" {
- t.Fatalf("unexpected label autocomplete response: %+v", labelResp.Data)
- }
- _, err = QueryAssetAutocompleteFromSet(assetSet, AssetAutocompleteRequest{
- Field: "cluster",
- })
- if err == nil {
- t.Fatal("expected error when tenant ID is missing")
- }
- if !IsAutocompleteBadRequest(err) {
- t.Fatalf("expected bad request error, got: %v", err)
- }
- _, err = QueryAssetAutocompleteFromSet(assetSet, AssetAutocompleteRequest{
- TenantID: "opencost",
- Field: "labels",
- Window: window,
- })
- if err == nil {
- t.Fatal("expected error for invalid field prefix")
- }
- if !IsAutocompleteBadRequest(err) {
- t.Fatalf("expected bad request error, got: %v", err)
- }
- openWindow := opencost.NewWindow(&start, nil)
- _, err = QueryAssetAutocompleteFromSet(assetSet, AssetAutocompleteRequest{
- TenantID: "opencost",
- Field: "name",
- Window: openWindow,
- })
- if err == nil {
- t.Fatal("expected error for open window")
- }
- if !IsAutocompleteBadRequest(err) {
- t.Fatalf("expected bad request error, got: %v", err)
- }
- }
|