Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package helper | |
import ( | |
"strings" | |
"testing" | |
"github.com/go-openapi/strfmt" | |
"github.com/stretchr/testify/assert" | |
"github.com/weaviate/weaviate/client/batch" | |
"github.com/weaviate/weaviate/client/meta" | |
"github.com/weaviate/weaviate/client/objects" | |
"github.com/weaviate/weaviate/client/schema" | |
"github.com/weaviate/weaviate/entities/models" | |
"github.com/weaviate/weaviate/entities/schema/crossref" | |
"github.com/weaviate/weaviate/usecases/replica" | |
) | |
func SetupClient(uri string) { | |
host, port := "", "" | |
res := strings.Split(uri, ":") | |
if len(res) == 2 { | |
host, port = res[0], res[1] | |
} | |
ServerHost = host | |
ServerPort = port | |
} | |
func CreateClass(t *testing.T, class *models.Class) { | |
params := schema.NewSchemaObjectsCreateParams().WithObjectClass(class) | |
resp, err := Client(t).Schema.SchemaObjectsCreate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func GetClass(t *testing.T, class string) *models.Class { | |
params := schema.NewSchemaObjectsGetParams().WithClassName(class) | |
resp, err := Client(t).Schema.SchemaObjectsGet(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
return resp.Payload | |
} | |
func UpdateClass(t *testing.T, class *models.Class) { | |
params := schema.NewSchemaObjectsUpdateParams(). | |
WithObjectClass(class).WithClassName(class.Class) | |
resp, err := Client(t).Schema.SchemaObjectsUpdate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func CreateObject(t *testing.T, object *models.Object) { | |
params := objects.NewObjectsCreateParams().WithBody(object) | |
resp, err := Client(t).Objects.ObjectsCreate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func CreateObjectCL(t *testing.T, object *models.Object, cl replica.ConsistencyLevel) { | |
cls := string(cl) | |
params := objects.NewObjectsCreateParams().WithBody(object).WithConsistencyLevel(&cls) | |
resp, err := Client(t).Objects.ObjectsCreate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func CreateObjectsBatch(t *testing.T, objects []*models.Object) { | |
params := batch.NewBatchObjectsCreateParams(). | |
WithBody(batch.BatchObjectsCreateBody{ | |
Objects: objects, | |
}) | |
resp, err := Client(t).Batch.BatchObjectsCreate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
CheckObjectsBatchResponse(t, resp.Payload, err) | |
} | |
func CheckObjectsBatchResponse(t *testing.T, resp []*models.ObjectsGetResponse, err error) { | |
AssertRequestOk(t, resp, err, nil) | |
for _, elem := range resp { | |
if !assert.Nil(t, elem.Result.Errors) { | |
t.Logf("expected nil, got: %v", | |
elem.Result.Errors.Error[0].Message) | |
} | |
} | |
} | |
func UpdateObject(t *testing.T, object *models.Object) { | |
params := objects.NewObjectsUpdateParams().WithID(object.ID).WithBody(object) | |
resp, err := Client(t).Objects.ObjectsUpdate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func UpdateObjectCL(t *testing.T, object *models.Object, cl replica.ConsistencyLevel) { | |
cls := string(cl) | |
params := objects.NewObjectsClassPutParams().WithClassName(object.Class). | |
WithID(object.ID).WithBody(object).WithConsistencyLevel(&cls) | |
resp, err := Client(t).Objects.ObjectsClassPut(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func PatchObject(t *testing.T, object *models.Object) { | |
params := objects.NewObjectsPatchParams().WithID(object.ID).WithBody(object) | |
resp, err := Client(t).Objects.ObjectsPatch(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func DeleteClass(t *testing.T, class string) { | |
delParams := schema.NewSchemaObjectsDeleteParams().WithClassName(class) | |
delRes, err := Client(t).Schema.SchemaObjectsDelete(delParams, nil) | |
AssertRequestOk(t, delRes, err, nil) | |
} | |
func DeleteObject(t *testing.T, object *models.Object) { | |
params := objects.NewObjectsClassDeleteParams(). | |
WithClassName(object.Class).WithID(object.ID) | |
resp, err := Client(t).Objects.ObjectsClassDelete(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func DeleteObjectsBatch(t *testing.T, body *models.BatchDelete) { | |
params := batch.NewBatchObjectsDeleteParams().WithBody(body) | |
resp, err := Client(t).Batch.BatchObjectsDelete(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func DeleteTenantObjectsBatch(t *testing.T, body *models.BatchDelete, | |
tenant string, | |
) (*models.BatchDeleteResponse, error) { | |
params := batch.NewBatchObjectsDeleteParams(). | |
WithBody(body).WithTenant(&tenant) | |
resp, err := Client(t).Batch.BatchObjectsDelete(params, nil) | |
if err != nil { | |
return nil, err | |
} | |
return resp.Payload, nil | |
} | |
func AddReferences(t *testing.T, refs []*models.BatchReference) ([]*models.BatchReferenceResponse, error) { | |
params := batch.NewBatchReferencesCreateParams().WithBody(refs) | |
resp, err := Client(t).Batch.BatchReferencesCreate(params, nil) | |
if err != nil { | |
return nil, err | |
} | |
return resp.Payload, nil | |
} | |
func CheckReferencesBatchResponse(t *testing.T, resp []*models.BatchReferenceResponse, err error) { | |
AssertRequestOk(t, resp, err, nil) | |
for _, elem := range resp { | |
if !assert.Nil(t, elem.Result.Errors) { | |
t.Logf("expected nil, got: %v", | |
elem.Result.Errors.Error[0].Message) | |
} | |
} | |
} | |
func AddReference(t *testing.T, object *models.Object, ref *models.SingleRef, prop string) { | |
params := objects.NewObjectsClassReferencesCreateParams(). | |
WithClassName(object.Class).WithID(object.ID).WithBody(ref).WithPropertyName(prop) | |
resp, err := Client(t).Objects.ObjectsClassReferencesCreate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func AddReferenceTenant(t *testing.T, object *models.Object, ref *models.SingleRef, prop string, tenant string) { | |
params := objects.NewObjectsClassReferencesCreateParams(). | |
WithClassName(object.Class).WithID(object.ID).WithBody(ref).WithPropertyName(prop).WithTenant(&tenant) | |
resp, err := Client(t).Objects.ObjectsClassReferencesCreate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func DeleteReference(t *testing.T, object *models.Object, ref *models.SingleRef, prop string) { | |
params := objects.NewObjectsClassReferencesDeleteParams(). | |
WithClassName(object.Class).WithID(object.ID).WithBody(ref).WithPropertyName(prop) | |
resp, err := Client(t).Objects.ObjectsClassReferencesDelete(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func DeleteReferenceTenant(t *testing.T, object *models.Object, ref *models.SingleRef, prop string, tenant string) { | |
params := objects.NewObjectsClassReferencesDeleteParams(). | |
WithClassName(object.Class).WithID(object.ID).WithBody(ref).WithPropertyName(prop).WithTenant(&tenant) | |
resp, err := Client(t).Objects.ObjectsClassReferencesDelete(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func UpdateReferenceTenant(t *testing.T, object *models.Object, ref models.MultipleRef, prop string, tenant string) { | |
params := objects.NewObjectsClassReferencesPutParams(). | |
WithClassName(object.Class).WithID(object.ID).WithBody(ref).WithPropertyName(prop).WithTenant(&tenant) | |
resp, err := Client(t).Objects.ObjectsClassReferencesPut(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func CreateTenants(t *testing.T, class string, tenants []*models.Tenant) { | |
params := schema.NewTenantsCreateParams().WithClassName(class).WithBody(tenants) | |
resp, err := Client(t).Schema.TenantsCreate(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
} | |
func CreateTenantsReturnError(t *testing.T, class string, tenants []*models.Tenant) error { | |
params := schema.NewTenantsCreateParams().WithClassName(class).WithBody(tenants) | |
_, err := Client(t).Schema.TenantsCreate(params, nil) | |
return err | |
} | |
func GetTenants(t *testing.T, class string) (*schema.TenantsGetOK, error) { | |
params := schema.NewTenantsGetParams().WithClassName(class) | |
resp, err := Client(t).Schema.TenantsGet(params, nil) | |
return resp, err | |
} | |
func DeleteTenants(t *testing.T, class string, tenants []string) error { | |
params := schema.NewTenantsDeleteParams().WithClassName(class).WithTenants(tenants) | |
_, err := Client(t).Schema.TenantsDelete(params, nil) | |
return err | |
} | |
func NewBeacon(className string, id strfmt.UUID) strfmt.URI { | |
return crossref.New("localhost", className, id).SingleRef().Beacon | |
} | |
func GetMeta(t *testing.T) *models.Meta { | |
params := meta.NewMetaGetParams() | |
resp, err := Client(t).Meta.MetaGet(params, nil) | |
AssertRequestOk(t, resp, err, nil) | |
return resp.Payload | |
} | |