github.com/weaviate/weaviate@v1.24.6/modules/sum-transformers/client/sum_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  }