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 }