github.com/cantara/gober@v0.18.8/persistentbigdata/base_test.go (about)

     1  package persistentbigmap
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	log "github.com/cantara/bragi/sbragi"
     7  	"github.com/cantara/gober/stream"
     8  	"github.com/cantara/gober/stream/event/store/inmemory"
     9  	"github.com/cantara/gober/webserver"
    10  	"github.com/gofrs/uuid"
    11  	"os"
    12  	"testing"
    13  	"time"
    14  )
    15  
    16  var s stream.Stream
    17  var ed EventMap[dd, dd]
    18  var ctxGlobal context.Context
    19  var ctxGlobalCancel context.CancelFunc
    20  var testCryptKey = log.RedactedString("aPSIX6K3yw6cAWDQHGPjmhuOswuRibjyLLnd91ojdK0=")
    21  
    22  var STREAM_NAME = "TestServiceStoreAndStream_" + uuid.Must(uuid.NewV7()).String()
    23  
    24  type dd struct {
    25  	Id   int    `json:"id"`
    26  	Name string `json:"name"`
    27  }
    28  
    29  func cryptKeyProvider(_ string) log.RedactedString {
    30  	return testCryptKey
    31  }
    32  
    33  func TestPre(t *testing.T) {
    34  	os.RemoveAll("./eventmap/testdata")
    35  	os.RemoveAll("./extraserver/eventmap/testdata")
    36  }
    37  
    38  func TestInit(t *testing.T) {
    39  	ctxGlobal, ctxGlobalCancel = context.WithCancel(context.Background())
    40  	var err error
    41  	s, err = inmemory.Init(STREAM_NAME, ctxGlobal)
    42  	if err != nil {
    43  		t.Error(err)
    44  		return
    45  	}
    46  	serv, err := webserver.Init(1231, true)
    47  	if err != nil {
    48  		t.Error(err)
    49  		return
    50  	}
    51  	edt, err := Init[dd, dd](serv, s, "testdata", "1.0.0", cryptKeyProvider, func(d dd) string { return fmt.Sprintf("%d_%s", d.Id, d.Name) }, ctxGlobal)
    52  	if err != nil {
    53  		t.Error(err)
    54  		return
    55  	}
    56  	ed = edt
    57  	go serv.Run()
    58  	time.Sleep(10 * time.Second)
    59  	return
    60  }
    61  
    62  func TestStore(t *testing.T) {
    63  	data := dd{
    64  		Id:   1,
    65  		Name: "test",
    66  	}
    67  	err := ed.Set(data, data)
    68  	if err != nil {
    69  		t.Error(err)
    70  		return
    71  	}
    72  	return
    73  }
    74  
    75  func TestGet(t *testing.T) {
    76  	data, err := ed.Get("1_test")
    77  	fmt.Println(data)
    78  	if err != nil {
    79  		t.Error(err)
    80  		return
    81  	}
    82  	if data.Id != 1 {
    83  		t.Error(fmt.Errorf("missmatch data id"))
    84  		return
    85  	}
    86  	if data.Name != "test" {
    87  		t.Error(fmt.Errorf("missmatch data name"))
    88  		return
    89  	}
    90  }
    91  
    92  func TestExtraServer(t *testing.T) {
    93  	err := os.Chdir("extraserver")
    94  	if err != nil {
    95  		t.Error(err)
    96  		return
    97  	}
    98  	serv, err := webserver.Init(1232, true)
    99  	if err != nil {
   100  		t.Error(err)
   101  		return
   102  	}
   103  	edt, err := Init[dd, dd](serv, s, "testdata", "1.0.0", cryptKeyProvider, func(d dd) string { return fmt.Sprintf("%d_%s", d.Id, d.Name) }, ctxGlobal)
   104  	if err != nil {
   105  		t.Error(err)
   106  		return
   107  	}
   108  	time.Sleep(10 * time.Second)
   109  	data, err := edt.Get("1_test")
   110  	fmt.Println(data)
   111  	if err != nil {
   112  		t.Error(err)
   113  		return
   114  	}
   115  	if data.Id != 1 {
   116  		t.Error(fmt.Errorf("missmatch data id"))
   117  		return
   118  	}
   119  	if data.Name != "test" {
   120  		t.Error(fmt.Errorf("missmatch data name"))
   121  		return
   122  	}
   123  }
   124  
   125  func TestTairdown(t *testing.T) {
   126  	ctxGlobalCancel()
   127  }