Skip to content

Commit 60e5492

Browse files
Merge pull request #2841 from openSUSE/ginkgo-unit
Update registrar unit tests to match them of cri-o
2 parents d86729e + 88b0e74 commit 60e5492

File tree

3 files changed

+269
-114
lines changed

3 files changed

+269
-114
lines changed

Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ BASHINSTALLDIR=${PREFIX}/share/bash-completion/completions
3030
ZSHINSTALLDIR=${PREFIX}/share/zsh/site-functions
3131

3232
SELINUXOPT ?= $(shell test -x /usr/sbin/selinuxenabled && selinuxenabled && echo -Z)
33-
PACKAGES ?= $(shell $(GO) list -tags "${BUILDTAGS}" ./... | grep -v github.com/containers/libpod/vendor | grep -v e2e | grep -v system )
3433

3534
COMMIT_NO ?= $(shell git rev-parse HEAD 2> /dev/null || true)
3635
GIT_COMMIT ?= $(if $(shell git status --porcelain --untracked-files=no),${COMMIT_NO}-dirty,${COMMIT_NO})
@@ -172,7 +171,13 @@ testunit: libpodimage ## Run unittest on the built image
172171
${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e TESTFLAGS -e CGROUP_MANAGER=cgroupfs -e OCI_RUNTIME -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} make localunit
173172

174173
localunit: test/goecho/goecho varlink_generate
175-
$(GO) test -tags "$(BUILDTAGS)" -cover $(PACKAGES)
174+
ginkgo \
175+
-r \
176+
--skipPackage test/e2e,pkg/apparmor \
177+
--cover \
178+
--covermode atomic \
179+
--tags "$(BUILDTAGS)" \
180+
--succinct
176181
$(MAKE) -C contrib/cirrus/packer test
177182

178183
ginkgo:

pkg/registrar/registrar_test.go

Lines changed: 206 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -1,119 +1,213 @@
1-
package registrar
1+
package registrar_test
22

33
import (
4-
"reflect"
54
"testing"
6-
)
7-
8-
func TestReserve(t *testing.T) {
9-
r := NewRegistrar()
10-
11-
obj := "test1"
12-
if err := r.Reserve("test", obj); err != nil {
13-
t.Fatal(err)
14-
}
15-
16-
if err := r.Reserve("test", obj); err != nil {
17-
t.Fatal(err)
18-
}
19-
20-
obj2 := "test2"
21-
err := r.Reserve("test", obj2)
22-
if err == nil {
23-
t.Fatalf("expected error when reserving an already reserved name to another object")
24-
}
25-
if err != ErrNameReserved {
26-
t.Fatal("expected `ErrNameReserved` error when attempting to reserve an already reserved name")
27-
}
28-
}
29-
30-
func TestRelease(t *testing.T) {
31-
r := NewRegistrar()
32-
obj := "testing"
33-
34-
if err := r.Reserve("test", obj); err != nil {
35-
t.Fatal(err)
36-
}
37-
r.Release("test")
38-
r.Release("test") // Ensure there is no panic here
395

40-
if err := r.Reserve("test", obj); err != nil {
41-
t.Fatal(err)
42-
}
43-
}
44-
45-
func TestGetNames(t *testing.T) {
46-
r := NewRegistrar()
47-
obj := "testing"
48-
names := []string{"test1", "test2"}
49-
50-
for _, name := range names {
51-
if err := r.Reserve(name, obj); err != nil {
52-
t.Fatal(err)
53-
}
54-
}
55-
r.Reserve("test3", "other")
56-
57-
names2, err := r.GetNames(obj)
58-
if err != nil {
59-
t.Fatal(err)
60-
}
61-
62-
if !reflect.DeepEqual(names, names2) {
63-
t.Fatalf("Exepected: %v, Got: %v", names, names2)
64-
}
65-
}
6+
"github.com/containers/libpod/pkg/registrar"
7+
. "github.com/containers/libpod/test/framework"
8+
. "github.com/onsi/ginkgo"
9+
. "github.com/onsi/gomega"
10+
)
6611

67-
func TestDelete(t *testing.T) {
68-
r := NewRegistrar()
69-
obj := "testing"
70-
names := []string{"test1", "test2"}
71-
for _, name := range names {
72-
if err := r.Reserve(name, obj); err != nil {
73-
t.Fatal(err)
74-
}
75-
}
76-
77-
r.Reserve("test3", "other")
78-
r.Delete(obj)
79-
80-
_, err := r.GetNames(obj)
81-
if err == nil {
82-
t.Fatal("expected error getting names for deleted key")
83-
}
84-
85-
if err != ErrNoSuchKey {
86-
t.Fatal("expected `ErrNoSuchKey`")
87-
}
12+
// TestRegistrar runs the created specs
13+
func TestRegistrar(t *testing.T) {
14+
RegisterFailHandler(Fail)
15+
RunSpecs(t, "Registrar")
8816
}
8917

90-
func TestGet(t *testing.T) {
91-
r := NewRegistrar()
92-
obj := "testing"
93-
name := "test"
94-
95-
_, err := r.Get(name)
96-
if err == nil {
97-
t.Fatal("expected error when key does not exist")
98-
}
99-
if err != ErrNameNotReserved {
100-
t.Fatal(err)
101-
}
102-
103-
if err := r.Reserve(name, obj); err != nil {
104-
t.Fatal(err)
105-
}
106-
107-
if _, err = r.Get(name); err != nil {
108-
t.Fatal(err)
109-
}
110-
111-
r.Delete(obj)
112-
_, err = r.Get(name)
113-
if err == nil {
114-
t.Fatal("expected error when key does not exist")
115-
}
116-
if err != ErrNameNotReserved {
117-
t.Fatal(err)
118-
}
119-
}
18+
// nolint: gochecknoglobals
19+
var t *TestFramework
20+
21+
var _ = BeforeSuite(func() {
22+
t = NewTestFramework(NilFunc, NilFunc)
23+
t.Setup()
24+
})
25+
26+
var _ = AfterSuite(func() {
27+
t.Teardown()
28+
})
29+
30+
// The actual test suite
31+
var _ = t.Describe("Registrar", func() {
32+
// Constant test data needed by some tests
33+
const (
34+
testKey = "testKey"
35+
testName = "testName"
36+
anotherKey = "anotherKey"
37+
)
38+
39+
// The system under test
40+
var sut *registrar.Registrar
41+
42+
// Prepare the system under test and register a test name and key before
43+
// each test
44+
BeforeEach(func() {
45+
sut = registrar.NewRegistrar()
46+
Expect(sut.Reserve(testName, testKey)).To(BeNil())
47+
})
48+
49+
t.Describe("Reserve", func() {
50+
It("should succeed to reserve a new registrar", func() {
51+
// Given
52+
// When
53+
err := sut.Reserve("name", "key")
54+
55+
// Then
56+
Expect(err).To(BeNil())
57+
})
58+
59+
It("should succeed to reserve a registrar twice", func() {
60+
// Given
61+
// When
62+
err := sut.Reserve(testName, testKey)
63+
64+
// Then
65+
Expect(err).To(BeNil())
66+
})
67+
68+
It("should fail to reserve an already reserved registrar", func() {
69+
// Given
70+
// When
71+
err := sut.Reserve(testName, anotherKey)
72+
73+
// Then
74+
Expect(err).NotTo(BeNil())
75+
Expect(err).To(Equal(registrar.ErrNameReserved))
76+
})
77+
})
78+
79+
t.Describe("Release", func() {
80+
It("should succeed to release a registered registrar multiple times", func() {
81+
// Given
82+
// When
83+
// Then
84+
sut.Release(testName)
85+
sut.Release(testName)
86+
})
87+
88+
It("should succeed to release a unknown registrar multiple times", func() {
89+
// Given
90+
// When
91+
// Then
92+
sut.Release(anotherKey)
93+
sut.Release(anotherKey)
94+
})
95+
96+
It("should succeed to release and re-register a registrar", func() {
97+
// Given
98+
// When
99+
sut.Release(testName)
100+
err := sut.Reserve(testName, testKey)
101+
102+
// Then
103+
Expect(err).To(BeNil())
104+
})
105+
})
106+
107+
t.Describe("GetNames", func() {
108+
It("should succeed to retrieve a single name for a registrar", func() {
109+
// Given
110+
// When
111+
names, err := sut.GetNames(testKey)
112+
113+
// Then
114+
Expect(err).To(BeNil())
115+
Expect(len(names)).To(Equal(1))
116+
Expect(names[0]).To(Equal(testName))
117+
})
118+
119+
It("should succeed to retrieve all names for a registrar", func() {
120+
// Given
121+
testNames := []string{"test1", "test2"}
122+
for _, name := range testNames {
123+
Expect(sut.Reserve(name, anotherKey)).To(BeNil())
124+
}
125+
126+
// When
127+
names, err := sut.GetNames(anotherKey)
128+
129+
// Then
130+
Expect(err).To(BeNil())
131+
Expect(len(names)).To(Equal(2))
132+
Expect(names).To(Equal(testNames))
133+
})
134+
})
135+
136+
t.Describe("GetNames", func() {
137+
It("should succeed to retrieve a single name for a registrar", func() {
138+
// Given
139+
// When
140+
names, err := sut.GetNames(testKey)
141+
142+
// Then
143+
Expect(err).To(BeNil())
144+
Expect(len(names)).To(Equal(1))
145+
Expect(names[0]).To(Equal(testName))
146+
})
147+
148+
It("should succeed to retrieve all names for a registrar", func() {
149+
// Given
150+
anotherKey := "anotherKey"
151+
testNames := []string{"test1", "test2"}
152+
for _, name := range testNames {
153+
Expect(sut.Reserve(name, anotherKey)).To(BeNil())
154+
}
155+
156+
// When
157+
names, err := sut.GetNames(anotherKey)
158+
159+
// Then
160+
Expect(err).To(BeNil())
161+
Expect(len(names)).To(Equal(2))
162+
Expect(names).To(Equal(testNames))
163+
})
164+
})
165+
166+
t.Describe("Delete", func() {
167+
It("should succeed to delete a registrar", func() {
168+
// Given
169+
// When
170+
sut.Delete(testKey)
171+
172+
// Then
173+
names, err := sut.GetNames(testKey)
174+
Expect(len(names)).To(BeZero())
175+
Expect(err).To(Equal(registrar.ErrNoSuchKey))
176+
})
177+
})
178+
179+
t.Describe("Get", func() {
180+
It("should succeed to get a key for a registrar", func() {
181+
// Given
182+
// When
183+
key, err := sut.Get(testName)
184+
185+
// Then
186+
Expect(err).To(BeNil())
187+
Expect(key).To(Equal(testKey))
188+
})
189+
190+
It("should fail to get a key for a not existing registrar", func() {
191+
// Given
192+
// When
193+
key, err := sut.Get("notExistingName")
194+
195+
// Then
196+
Expect(key).To(BeEmpty())
197+
Expect(err).To(Equal(registrar.ErrNameNotReserved))
198+
})
199+
})
200+
201+
t.Describe("GetAll", func() {
202+
It("should succeed to get all names", func() {
203+
// Given
204+
// When
205+
names := sut.GetAll()
206+
207+
// Then
208+
Expect(len(names)).To(Equal(1))
209+
Expect(len(names[testKey])).To(Equal(1))
210+
Expect(names[testKey][0]).To(Equal(testName))
211+
})
212+
})
213+
})

0 commit comments

Comments
 (0)