MCPcopy
hub / github.com/nats-io/nats.go / TestKeyValueSourcing

Function TestKeyValueSourcing

test/kv_test.go:1675–1735  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1673}
1674
1675func TestKeyValueSourcing(t *testing.T) {
1676 s := RunBasicJetStreamServer()
1677 defer shutdownJSServerAndRemoveStorage(t, s)
1678
1679 nc, js := jsClient(t, s)
1680 defer nc.Close()
1681
1682 kvA, err := js.CreateKeyValue(&nats.KeyValueConfig{Bucket: "A"})
1683 if err != nil {
1684 t.Fatalf("Error creating kv: %v", err)
1685 }
1686
1687 _, err = kvA.Create("keyA", []byte("1"))
1688 if err != nil {
1689 t.Fatalf("Error creating key: %v", err)
1690 }
1691
1692 if _, err := kvA.Get("keyA"); err != nil {
1693 t.Fatalf("Got error getting keyA from A: %v", err)
1694 }
1695
1696 kvB, err := js.CreateKeyValue(&nats.KeyValueConfig{Bucket: "B"})
1697 if err != nil {
1698 t.Fatalf("Error creating kv: %v", err)
1699 }
1700
1701 _, err = kvB.Create("keyB", []byte("1"))
1702 if err != nil {
1703 t.Fatalf("Error creating key: %v", err)
1704 }
1705
1706 kvC, err := js.CreateKeyValue(&nats.KeyValueConfig{Bucket: "C", Sources: []*nats.StreamSource{{Name: "A"}, {Name: "B"}}})
1707 if err != nil {
1708 t.Fatalf("Error creating kv: %v", err)
1709 }
1710
1711 i := 0
1712 for {
1713 status, err := kvC.Status()
1714 if err != nil {
1715 t.Fatalf("Error getting bucket status: %v", err)
1716 }
1717 if status.Values() == 2 {
1718 break
1719 } else {
1720 i++
1721 if i > 10 {
1722 t.Fatalf("Error sourcing bucket does not contain the expected number of values")
1723 }
1724 }
1725 time.Sleep(100 * time.Millisecond)
1726 }
1727
1728 if _, err := kvC.Get("keyA"); err != nil {
1729 t.Fatalf("Got error getting keyA from C: %v", err)
1730 }
1731
1732 if _, err := kvC.Get("keyB"); err != nil {

Callers

nothing calls this directly

Calls 10

FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
CreateKeyValueMethod · 0.65
CreateMethod · 0.65
GetMethod · 0.65
StatusMethod · 0.65
ValuesMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected