github.com/weaviate/weaviate@v1.24.6/test/modules/text2vec-contextionary/cluster_nodes_api_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 "os" 16 "testing" 17 18 "github.com/stretchr/testify/assert" 19 "github.com/stretchr/testify/require" 20 "github.com/weaviate/weaviate/client/nodes" 21 "github.com/weaviate/weaviate/entities/models" 22 "github.com/weaviate/weaviate/entities/verbosity" 23 "github.com/weaviate/weaviate/test/helper" 24 "github.com/weaviate/weaviate/test/helper/sample-schema/books" 25 "github.com/weaviate/weaviate/test/helper/sample-schema/multishard" 26 ) 27 28 func Test_WeaviateCluster_NodesAPI(t *testing.T) { 29 helper.SetupClient(os.Getenv(weaviateNode1Endpoint)) 30 booksClass := books.ClassContextionaryVectorizer() 31 multiShardClass := multishard.ClassContextionaryVectorizer() 32 helper.CreateClass(t, booksClass) 33 helper.CreateClass(t, multiShardClass) 34 defer helper.DeleteClass(t, booksClass.Class) 35 defer helper.DeleteClass(t, multiShardClass.Class) 36 37 t.Run("import data", func(t *testing.T) { 38 for _, book := range books.Objects() { 39 helper.CreateObject(t, book) 40 helper.AssertGetObjectEventually(t, book.Class, book.ID) 41 } 42 for _, multishard := range multishard.Objects() { 43 helper.CreateObject(t, multishard) 44 helper.AssertGetObjectEventually(t, multishard.Class, multishard.ID) 45 } 46 }) 47 48 t.Run("check nodes api", func(t *testing.T) { 49 for _, endpoint := range []string{weaviateNode1Endpoint, weaviateNode2Endpoint} { 50 t.Run(endpoint, func(t *testing.T) { 51 helper.SetupClient(os.Getenv(endpoint)) 52 verbose := verbosity.OutputVerbose 53 params := nodes.NewNodesGetParams().WithOutput(&verbose) 54 resp, err := helper.Client(t).Nodes.NodesGet(params, nil) 55 require.Nil(t, err) 56 57 nodeStatusResp := resp.GetPayload() 58 require.NotNil(t, nodeStatusResp) 59 60 nodes := nodeStatusResp.Nodes 61 require.NotNil(t, nodes) 62 require.Len(t, nodes, 2) 63 64 assert.Equal(t, "node1", nodes[0].Name) 65 assert.Equal(t, "node2", nodes[1].Name) 66 67 for i, nodeStatus := range nodes { 68 require.NotNil(t, nodeStatus) 69 assert.Equal(t, models.NodeStatusStatusHEALTHY, *nodeStatus.Status) 70 if i == 0 { 71 assert.Equal(t, "node1", nodeStatus.Name) 72 } else { 73 assert.Equal(t, "node2", nodeStatus.Name) 74 } 75 assert.True(t, nodeStatus.GitHash != "" && nodeStatus.GitHash != "unknown") 76 assert.Len(t, nodeStatus.Shards, 2) 77 var objectCount int64 78 var shardCount int64 79 for _, shard := range nodeStatus.Shards { 80 assert.True(t, len(shard.Name) > 0) 81 assert.True(t, shard.Class == multiShardClass.Class || shard.Class == booksClass.Class) 82 assert.GreaterOrEqual(t, shard.ObjectCount, int64(0)) 83 assert.GreaterOrEqual(t, shard.VectorQueueLength, int64(0)) 84 objectCount += shard.ObjectCount 85 shardCount++ 86 } 87 require.NotNil(t, nodeStatus.Stats) 88 assert.Equal(t, objectCount, nodeStatus.Stats.ObjectCount) 89 assert.Equal(t, shardCount, nodeStatus.Stats.ShardCount) 90 } 91 }) 92 } 93 }) 94 }