gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/store/cloudflare/cloudflare_test.go (about)

     1  package cloudflare
     2  
     3  import (
     4  	"math/rand"
     5  	"os"
     6  	"strconv"
     7  	"testing"
     8  	"time"
     9  
    10  	"gitee.com/liuxuezhan/go-micro-v1.18.0/store"
    11  )
    12  
    13  func TestCloudflare(t *testing.T) {
    14  	apiToken, accountID := os.Getenv("CF_API_TOKEN"), os.Getenv("CF_ACCOUNT_ID")
    15  	kvID := os.Getenv("KV_NAMESPACE_ID")
    16  	if len(apiToken) == 0 || len(accountID) == 0 || len(kvID) == 0 {
    17  		t.Skip("No Cloudflare API keys available, skipping test")
    18  	}
    19  	rand.Seed(time.Now().UnixNano())
    20  	randomK := strconv.Itoa(rand.Int())
    21  	randomV := strconv.Itoa(rand.Int())
    22  
    23  	wkv := NewStore(
    24  		Token(apiToken),
    25  		Account(accountID),
    26  		Namespace(kvID),
    27  	)
    28  
    29  	records, err := wkv.List()
    30  	if err != nil {
    31  		t.Fatalf("List: %s\n", err.Error())
    32  	} else {
    33  		t.Log("Listed " + strconv.Itoa(len(records)) + " records")
    34  	}
    35  
    36  	err = wkv.Write(
    37  		&store.Record{
    38  			Key:   randomK,
    39  			Value: []byte(randomV),
    40  		},
    41  		&store.Record{
    42  			Key:    "expirationtest",
    43  			Value:  []byte("This message will self destruct"),
    44  			Expiry: 75 * time.Second,
    45  		},
    46  	)
    47  	if err != nil {
    48  		t.Errorf("Write: %s", err.Error())
    49  	}
    50  
    51  	// This might be needed for cloudflare eventual consistency
    52  	time.Sleep(1 * time.Minute)
    53  
    54  	r, err := wkv.Read(randomK)
    55  	if err != nil {
    56  		t.Errorf("Read: %s\n", err.Error())
    57  	}
    58  	if len(r) != 1 {
    59  		t.Errorf("Expected to read 1 key, got %d keys\n", len(r))
    60  	}
    61  	if string(r[0].Value) != randomV {
    62  		t.Errorf("Read: expected %s, got %s\n", randomK, string(r[0].Value))
    63  	}
    64  
    65  	r, err = wkv.Read("expirationtest")
    66  	if err != nil {
    67  		t.Errorf("Read: expirationtest should still exist")
    68  	}
    69  	if r[0].Expiry == 0 {
    70  		t.Error("Expected r to have an expiry")
    71  	} else {
    72  		t.Log(r[0].Expiry)
    73  	}
    74  
    75  	time.Sleep(20 * time.Second)
    76  	r, err = wkv.Read("expirationtest")
    77  	if err == nil && len(r) != 0 {
    78  		t.Error("Read: Managed to read expirationtest, but it should have expired")
    79  		t.Log(err, r[0].Key, string(r[0].Value), r[0].Expiry, len(r))
    80  	}
    81  
    82  	err = wkv.Delete(randomK)
    83  	if err != nil {
    84  		t.Errorf("Delete: %s\n", err.Error())
    85  	}
    86  
    87  }