github.com/weaviate/weaviate@v1.24.6/modules/qna-transformers/clients/qna_meta_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 clients 13 14 import ( 15 "net/http" 16 "net/http/httptest" 17 "testing" 18 "time" 19 20 "github.com/stretchr/testify/assert" 21 ) 22 23 func TestGetMeta(t *testing.T) { 24 t.Run("when the server is providing meta", func(t *testing.T) { 25 server := httptest.NewServer(&testMetaHandler{t: t}) 26 defer server.Close() 27 c := New(server.URL, 0, nullLogger()) 28 meta, err := c.MetaInfo() 29 30 assert.Nil(t, err) 31 assert.NotNil(t, meta) 32 metaModel := meta["model"] 33 assert.True(t, metaModel != nil) 34 model, modelOK := metaModel.(map[string]interface{}) 35 assert.True(t, modelOK) 36 assert.True(t, model["_name_or_path"] != nil) 37 assert.True(t, model["architectures"] != nil) 38 modelID2label, modelID2labelOK := model["id2label"].(map[string]interface{}) 39 assert.True(t, modelID2labelOK) 40 assert.True(t, modelID2label["0"] != nil) 41 }) 42 } 43 44 type testMetaHandler struct { 45 t *testing.T 46 // the test handler will report as not ready before the time has passed 47 readyTime time.Time 48 } 49 50 func (f *testMetaHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 51 assert.Equal(f.t, "/meta", r.URL.String()) 52 assert.Equal(f.t, http.MethodGet, r.Method) 53 54 if time.Since(f.readyTime) < 0 { 55 w.WriteHeader(http.StatusServiceUnavailable) 56 } 57 58 w.Write([]byte(f.metaInfo())) 59 } 60 61 func (f *testMetaHandler) metaInfo() string { 62 return `{ 63 "model": { 64 "_name_or_path": "bert-large-uncased-whole-word-masking-finetuned-squad", 65 "add_cross_attention": false, 66 "architectures": [ 67 "BertForQuestionAnswering" 68 ], 69 "attention_probs_dropout_prob": 0.1, 70 "bad_words_ids": null, 71 "bos_token_id": null, 72 "chunk_size_feed_forward": 0, 73 "decoder_start_token_id": null, 74 "diversity_penalty": 0.0, 75 "do_sample": false, 76 "early_stopping": false, 77 "encoder_no_repeat_ngram_size": 0, 78 "eos_token_id": null, 79 "finetuning_task": null, 80 "gradient_checkpointing": false, 81 "hidden_act": "gelu", 82 "hidden_dropout_prob": 0.1, 83 "hidden_size": 1024, 84 "id2label": { 85 "0": "LABEL_0", 86 "1": "LABEL_1" 87 }, 88 "initializer_range": 0.02, 89 "intermediate_size": 4096, 90 "is_decoder": false, 91 "is_encoder_decoder": false, 92 "label2id": { 93 "LABEL_0": 0, 94 "LABEL_1": 1 95 }, 96 "layer_norm_eps": 1e-12, 97 "length_penalty": 1.0, 98 "max_length": 20, 99 "max_position_embeddings": 512, 100 "min_length": 0, 101 "model_type": "bert", 102 "no_repeat_ngram_size": 0, 103 "num_attention_heads": 16, 104 "num_beam_groups": 1, 105 "num_beams": 1, 106 "num_hidden_layers": 24, 107 "num_return_sequences": 1, 108 "output_attentions": false, 109 "output_hidden_states": false, 110 "output_scores": false, 111 "pad_token_id": 0, 112 "position_embedding_type": "absolute", 113 "prefix": null, 114 "pruned_heads": {}, 115 "repetition_penalty": 1.0, 116 "return_dict": true, 117 "return_dict_in_generate": false, 118 "sep_token_id": null, 119 "task_specific_params": null, 120 "temperature": 1.0, 121 "tie_encoder_decoder": false, 122 "tie_word_embeddings": true, 123 "tokenizer_class": null, 124 "top_k": 50, 125 "top_p": 1.0, 126 "torchscript": false, 127 "transformers_version": "4.3.2", 128 "type_vocab_size": 2, 129 "use_bfloat16": false, 130 "use_cache": true, 131 "vocab_size": 30522, 132 "xla_device": null 133 } 134 }` 135 }