forked from nats-io/jsm.go
/
template_test.go
83 lines (61 loc) · 2.36 KB
/
template_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package jsm_test
import (
"testing"
"github.com/nats-io/jsm.go"
)
func TestNewStreamTemplate(t *testing.T) {
srv, _, mgr := startJSServer(t)
defer srv.Shutdown()
_, err := mgr.NewStreamTemplate("orders_templ", 1, jsm.DefaultStream, jsm.FileStorage(), jsm.Subjects("ORDERS.*"))
checkErr(t, err, "new stream template failed")
templ, err := mgr.LoadStreamTemplate("orders_templ")
checkErr(t, err, "load stream template failed")
if templ.Name() != "orders_templ" {
t.Fatalf("expected name==orders_templ got %q", templ.Name())
}
}
func TestNewOrLoadStreamTemplate(t *testing.T) {
srv, _, mgr := startJSServer(t)
defer srv.Shutdown()
first, err := mgr.NewStreamTemplate("orders_templ", 1, jsm.DefaultStream, jsm.FileStorage(), jsm.Subjects("ORDERS.*"))
checkErr(t, err, "new stream template failed")
second, err := mgr.LoadOrNewStreamTemplate("orders_templ", 1, jsm.DefaultStream, jsm.FileStorage(), jsm.Subjects("ORDERS.*"))
checkErr(t, err, "load or new stream template failed")
if first.Name() != second.Name() {
t.Fatalf("got wrong template, expected %q got %q", first.Name(), second.Name())
}
}
func TestStreamTemplate_Delete(t *testing.T) {
srv, _, mgr := startJSServer(t)
defer srv.Shutdown()
templ, err := mgr.NewStreamTemplate("orders_templ", 1, jsm.DefaultStream, jsm.FileStorage(), jsm.Subjects("ORDERS.*"))
checkErr(t, err, "new stream template failed")
names, err := mgr.StreamTemplateNames()
checkErr(t, err, "names failed")
if len(names) != 1 || names[0] != "orders_templ" {
t.Fatalf("expected [orders_templ] got %q", names)
}
err = templ.Delete()
checkErr(t, err, "delete failed")
names, err = mgr.StreamTemplateNames()
checkErr(t, err, "names failed")
if len(names) != 0 {
t.Fatalf("expected [] got %q", names)
}
}
func TestStreamTemplate_Reset(t *testing.T) {
srv, nc, mgr := startJSServer(t)
defer srv.Shutdown()
templ, err := mgr.NewStreamTemplate("orders_templ", 1, jsm.DefaultStream, jsm.FileStorage(), jsm.Subjects("ORDERS.*"))
checkErr(t, err, "new stream template failed")
if len(templ.Streams()) != 0 {
t.Fatalf("expected no streams got %q", templ.Streams())
}
err = nc.Publish("ORDERS.1", []byte("hello"))
checkErr(t, err, "publish failed")
err = templ.Reset()
checkErr(t, err, "reset failed")
if len(templ.Streams()) != 1 || templ.Streams()[0] != "ORDERS_1" {
t.Fatalf("expected [ORDERS_1] got %q", templ.Streams())
}
}