github.com/weaviate/weaviate@v1.24.6/test/acceptance/vector_distances/setup_test.go (about)

     1  //                           _       _
     2  // __      _____  __ ___   ___  __ _| |_ ___
     3  // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
     4  //  \ V  V /  __/ (_| |\ V /| | (_| | ||  __/
     5  //   \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
     6  //
     7  //  Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
     8  //
     9  //  CONTACT: hello@weaviate.io
    10  //
    11  
    12  package test
    13  
    14  import (
    15  	"testing"
    16  
    17  	"github.com/weaviate/weaviate/client/objects"
    18  	"github.com/weaviate/weaviate/client/schema"
    19  	"github.com/weaviate/weaviate/entities/models"
    20  	"github.com/weaviate/weaviate/test/helper"
    21  )
    22  
    23  func Test_GraphQL(t *testing.T) {
    24  	t.Run("setup test schema (cosine only)", addTestSchemaCosine)
    25  	// at this point only cosine is present, so we can evaluate both Get and
    26  	// Explore
    27  	t.Run("import cosine test data ", addTestDataCosine)
    28  	t.Run("test cosine distance", testCosine)
    29  
    30  	// import rest of the schema meaning, we can only test Get, Explore is now
    31  	// impossible
    32  	t.Run("setup test schema (all)", addTestSchemaOther)
    33  	t.Run("import dot test data ", addTestDataDot)
    34  	t.Run("test dot distance", testDot)
    35  	t.Run("import l2 test data ", addTestDataL2)
    36  	t.Run("test l2 distance", testL2)
    37  	t.Run("import manhattan test data", addTestDataManhattan)
    38  	t.Run("test manhattan distance", testManhattan)
    39  	t.Run("import hamming test data", addTestDataHamming)
    40  	t.Run("test hamming distance", testHamming)
    41  
    42  	// tear down what we no longer need
    43  	deleteObjectClass(t, "Cosine_Class")
    44  	deleteObjectClass(t, "Dot_Class")
    45  	deleteObjectClass(t, "Manhattan_Class")
    46  	deleteObjectClass(t, "Hamming_Class")
    47  
    48  	// now only l2 is left so we can test explore with L2
    49  	t.Run("explore across multiple non-cosine classes", testExplore)
    50  
    51  	// tear down remaining classes
    52  	deleteObjectClass(t, "L2Squared_Class")
    53  }
    54  
    55  func createObjectClass(t *testing.T, class *models.Class) {
    56  	params := schema.NewSchemaObjectsCreateParams().WithObjectClass(class)
    57  	resp, err := helper.Client(t).Schema.SchemaObjectsCreate(params, nil)
    58  	helper.AssertRequestOk(t, resp, err, nil)
    59  }
    60  
    61  func createObject(t *testing.T, object *models.Object) {
    62  	params := objects.NewObjectsCreateParams().WithBody(object)
    63  	resp, err := helper.Client(t).Objects.ObjectsCreate(params, nil)
    64  	helper.AssertRequestOk(t, resp, err, nil)
    65  }
    66  
    67  func deleteObjectClass(t *testing.T, class string) {
    68  	delParams := schema.NewSchemaObjectsDeleteParams().WithClassName(class)
    69  	delRes, err := helper.Client(t).Schema.SchemaObjectsDelete(delParams, nil)
    70  	helper.AssertRequestOk(t, delRes, err, nil)
    71  }