Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package helper | |
import ( | |
"net/http" | |
"testing" | |
"github.com/go-openapi/strfmt" | |
"github.com/weaviate/weaviate/client/objects" | |
"github.com/weaviate/weaviate/client/schema" | |
"github.com/weaviate/weaviate/entities/models" | |
"github.com/weaviate/weaviate/usecases/replica" | |
) | |
func AssertCreateObject(t *testing.T, className string, schema map[string]interface{}) strfmt.UUID { | |
t.Helper() | |
params := objects.NewObjectsCreateParams().WithBody( | |
&models.Object{ | |
Class: className, | |
Properties: schema, | |
}) | |
resp, err := Client(t).Objects.ObjectsCreate(params, nil) | |
var objectID strfmt.UUID | |
// Ensure that the response is OK | |
AssertRequestOk(t, resp, err, func() { | |
objectID = resp.Payload.ID | |
}) | |
return objectID | |
} | |
func AssertGetObject(t *testing.T, class string, uuid strfmt.UUID, include ...string) *models.Object { | |
t.Helper() | |
obj, err := GetObject(t, class, uuid, include...) | |
AssertRequestOk(t, obj, err, nil) | |
return obj | |
} | |
func AssertGetObjectEventually(t *testing.T, class string, uuid strfmt.UUID) *models.Object { | |
var ( | |
resp *objects.ObjectsClassGetOK | |
err error | |
) | |
checkThunk := func() interface{} { | |
resp, err = Client(t).Objects.ObjectsClassGet(objects.NewObjectsClassGetParams().WithClassName(class).WithID(uuid), nil) | |
return err == nil | |
} | |
AssertEventuallyEqual(t, true, checkThunk) | |
var object *models.Object | |
AssertRequestOk(t, resp, err, func() { | |
object = resp.Payload | |
}) | |
return object | |
} | |
func AssertGetObjectFailsEventually(t *testing.T, class string, uuid strfmt.UUID) error { | |
var err error | |
checkThunk := func() interface{} { | |
_, err = Client(t).Objects.ObjectsClassGet(objects.NewObjectsClassGetParams().WithClassName(class).WithID(uuid), nil) | |
return err != nil | |
} | |
AssertEventuallyEqual(t, true, checkThunk) | |
return err | |
} | |
func AssertCreateObjectClass(t *testing.T, class *models.Class) { | |
t.Helper() | |
params := schema.NewSchemaObjectsCreateParams().WithObjectClass(class) | |
resp, err := Client(t).Schema.SchemaObjectsCreate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func AssertDeleteObjectClass(t *testing.T, class string) { | |
delRes, err := DeleteClassObject(t, class) | |
AssertRequestOk(t, delRes, err, nil) | |
} | |
func GetObject(t *testing.T, class string, uuid strfmt.UUID, include ...string) (*models.Object, error) { | |
req := objects.NewObjectsClassGetParams().WithID(uuid) | |
if class != "" { | |
req.WithClassName(class) | |
} | |
if len(include) > 0 { | |
req.WithInclude(&include[0]) | |
} | |
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil) | |
if err != nil { | |
return nil, err | |
} | |
return getResp.Payload, nil | |
} | |
func TenantObject(t *testing.T, class string, id strfmt.UUID, tenant string) (*models.Object, error) { | |
req := objects.NewObjectsClassGetParams(). | |
WithClassName(class).WithID(id).WithTenant(&tenant) | |
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil) | |
if err != nil { | |
return nil, err | |
} | |
return getResp.Payload, nil | |
} | |
func TenantObjectWithInclude(t *testing.T, class string, id strfmt.UUID, tenant string, includes string) (*models.Object, error) { | |
req := objects.NewObjectsClassGetParams(). | |
WithClassName(class).WithID(id).WithTenant(&tenant).WithInclude(&includes) | |
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil) | |
if err != nil { | |
return nil, err | |
} | |
return getResp.Payload, nil | |
} | |
func GetObjectCL(t *testing.T, class string, uuid strfmt.UUID, | |
cl replica.ConsistencyLevel, include ...string, | |
) (*models.Object, error) { | |
req := objects.NewObjectsClassGetParams().WithID(uuid) | |
if class != "" { | |
req.WithClassName(class) | |
} | |
if len(include) > 0 { | |
req.WithInclude(&include[0]) | |
} | |
cls := string(cl) | |
req.ConsistencyLevel = &cls | |
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil) | |
if err != nil { | |
return nil, err | |
} | |
return getResp.Payload, nil | |
} | |
func ObjectExistsCL(t *testing.T, class string, id strfmt.UUID, cl replica.ConsistencyLevel) (bool, error) { | |
cls := string(cl) | |
req := objects.NewObjectsClassHeadParams(). | |
WithClassName(class).WithID(id).WithConsistencyLevel(&cls) | |
resp, err := Client(t).Objects.ObjectsClassHead(req, nil) | |
if err != nil { | |
return false, err | |
} | |
return resp.IsCode(http.StatusNoContent), nil | |
} | |
func TenantObjectExists(t *testing.T, class string, id strfmt.UUID, tenant string) (bool, error) { | |
req := objects.NewObjectsClassHeadParams(). | |
WithClassName(class).WithID(id).WithTenant(&tenant) | |
resp, err := Client(t).Objects.ObjectsClassHead(req, nil) | |
if err != nil { | |
return false, err | |
} | |
return resp.IsCode(http.StatusNoContent), nil | |
} | |
func GetObjectFromNode(t *testing.T, class string, uuid strfmt.UUID, nodename string) (*models.Object, error) { | |
req := objects.NewObjectsClassGetParams().WithID(uuid) | |
if class != "" { | |
req.WithClassName(class) | |
} | |
if nodename != "" { | |
req.WithNodeName(&nodename) | |
} | |
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil) | |
if err != nil { | |
return nil, err | |
} | |
return getResp.Payload, nil | |
} | |
func GetTenantObjectFromNode(t *testing.T, class string, uuid strfmt.UUID, nodename, tenant string) (*models.Object, error) { | |
req := objects.NewObjectsClassGetParams().WithID(uuid). | |
WithClassName(class). | |
WithNodeName(&nodename). | |
WithTenant(&tenant) | |
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil) | |
if err != nil { | |
return nil, err | |
} | |
return getResp.Payload, nil | |
} | |
func DeleteClassObject(t *testing.T, class string) (*schema.SchemaObjectsDeleteOK, error) { | |
delParams := schema.NewSchemaObjectsDeleteParams().WithClassName(class) | |
return Client(t).Schema.SchemaObjectsDelete(delParams, nil) | |
} | |
func DeleteTenantObject(t *testing.T, class string, id strfmt.UUID, tenant string) { | |
params := objects.NewObjectsClassDeleteParams(). | |
WithClassName(class).WithID(id).WithTenant(&tenant) | |
resp, err := Client(t).Objects.ObjectsClassDelete(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func ListObjects(t *testing.T, class string) (*models.ObjectsListResponse, error) { | |
params := objects.NewObjectsListParams() | |
if class != "" { | |
params.WithClass(&class) | |
} | |
resp, err := Client(t).Objects.ObjectsList(params, nil) | |
if err != nil { | |
return nil, err | |
} | |
return resp.Payload, nil | |
} | |
func TenantListObjects(t *testing.T, class string, tenant string) (*models.ObjectsListResponse, error) { | |
params := objects.NewObjectsListParams().WithTenant(&tenant) | |
if class != "" { | |
params.WithClass(&class) | |
} | |
resp, err := Client(t).Objects.ObjectsList(params, nil) | |
if err != nil { | |
return nil, err | |
} | |
return resp.Payload, nil | |
} | |