github.com/weaviate/weaviate@v1.24.6/modules/reranker-transformers/clients/ranker_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 client
    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  	})
    39  }
    40  
    41  type testMetaHandler struct {
    42  	t *testing.T
    43  	// the test handler will report as not ready before the time has passed
    44  	readyTime time.Time
    45  }
    46  
    47  func (f *testMetaHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    48  	assert.Equal(f.t, "/meta", r.URL.String())
    49  	assert.Equal(f.t, http.MethodGet, r.Method)
    50  
    51  	if time.Since(f.readyTime) < 0 {
    52  		w.WriteHeader(http.StatusServiceUnavailable)
    53  	}
    54  
    55  	w.Write([]byte(f.metaInfo()))
    56  }
    57  
    58  func (f *testMetaHandler) metaInfo() string {
    59  	return `{
    60  		"model": {
    61  			"_name_or_path": "dbmdz/bert-large-cased-finetuned-conll03-english",
    62  			"_num_labels": 9,
    63  			"add_cross_attention": false,
    64  			"architectures": [
    65  				"BertForTokenClassification"
    66  			],
    67  			"attention_probs_dropout_prob": 0.1,
    68  			"bad_words_ids": null,
    69  			"bos_token_id": null,
    70  			"chunk_size_feed_forward": 0,
    71  			"decoder_start_token_id": null,
    72  			"directionality": "bidi",
    73  			"diversity_penalty": 0,
    74  			"do_sample": false,
    75  			"early_stopping": false,
    76  			"encoder_no_repeat_ngram_size": 0,
    77  			"eos_token_id": null,
    78  			"finetuning_task": null,
    79  			"forced_bos_token_id": null,
    80  			"forced_eos_token_id": null,
    81  			"gradient_checkpointing": false,
    82  			"hidden_act": "gelu",
    83  			"hidden_dropout_prob": 0.1,
    84  			"hidden_size": 1024,
    85  			"id2label": {
    86  				"0": "O",
    87  				"1": "B-MISC",
    88  				"2": "I-MISC",
    89  				"3": "B-PER",
    90  				"4": "I-PER",
    91  				"5": "B-ORG",
    92  				"6": "I-ORG",
    93  				"7": "B-LOC",
    94  				"8": "I-LOC"
    95  			},
    96  			"initializer_range": 0.02,
    97  			"intermediate_size": 4096,
    98  			"is_decoder": false,
    99  			"is_encoder_decoder": false,
   100  			"label2id": {
   101  				"B-LOC": 7,
   102  				"B-MISC": 1,
   103  				"B-ORG": 5,
   104  				"B-PER": 3,
   105  				"I-LOC": 8,
   106  				"I-MISC": 2,
   107  				"I-ORG": 6,
   108  				"I-PER": 4,
   109  				"O": 0
   110  			},
   111  			"layer_norm_eps": 1e-12,
   112  			"length_penalty": 1,
   113  			"max_length": 20,
   114  			"max_position_embeddings": 512,
   115  			"min_length": 0,
   116  			"model_type": "bert",
   117  			"no_repeat_ngram_size": 0,
   118  			"num_attention_heads": 16,
   119  			"num_beam_groups": 1,
   120  			"num_beams": 1,
   121  			"num_hidden_layers": 24,
   122  			"num_return_sequences": 1,
   123  			"output_attentions": false,
   124  			"output_hidden_states": false,
   125  			"output_scores": false,
   126  			"pad_token_id": 0,
   127  			"pooler_fc_size": 768,
   128  			"pooler_num_attention_heads": 12,
   129  			"pooler_num_fc_layers": 3,
   130  			"pooler_size_per_head": 128,
   131  			"pooler_type": "first_token_transform",
   132  			"position_embedding_type": "absolute",
   133  			"prefix": null,
   134  			"problem_type": null,
   135  			"pruned_heads": {},
   136  			"remove_invalid_values": false,
   137  			"repetition_penalty": 1,
   138  			"return_dict": true,
   139  			"return_dict_in_generate": false,
   140  			"sep_token_id": null,
   141  			"task_specific_params": null,
   142  			"temperature": 1,
   143  			"tie_encoder_decoder": false,
   144  			"tie_word_embeddings": true,
   145  			"tokenizer_class": null,
   146  			"top_k": 50,
   147  			"top_p": 1,
   148  			"torchscript": false,
   149  			"transformers_version": "4.6.1",
   150  			"type_vocab_size": 2,
   151  			"use_bfloat16": false,
   152  			"use_cache": true,
   153  			"vocab_size": 28996
   154  		}
   155  	}`
   156  }