Skip to content

Commit 8b94a56

Browse files
committed
[FAB-10565] Poll for container deletion in test
Also use generated name for zookeeper in the kafka tests. Change-Id: I2e7f42a112fad52fb324d997da072f2091840689 Signed-off-by: Matthew Sykes <sykesmat@us.ibm.com>
1 parent 66be36d commit 8b94a56

File tree

4 files changed

+44
-57
lines changed

4 files changed

+44
-57
lines changed

integration/runner/couchdb_test.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -198,10 +198,7 @@ var _ = Describe("CouchDB Runner", func() {
198198
Eventually(process.Wait()).Should(Receive())
199199
process = nil
200200

201-
Eventually(func() error {
202-
_, err = client.InspectContainer(containerName)
203-
return err
204-
}).Should(MatchError("No such container: " + containerName))
201+
Eventually(ContainerExists(client, containerName)).Should(BeFalse())
205202
})
206203

207204
It("can be started and stopped with ifrit", func() {

integration/runner/kafka_test.go

+22-47
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ var _ = Describe("Kafka Runner", func() {
5252

5353
// Start a zookeeper
5454
zookeeper = &runner.Zookeeper{
55-
Name: "zookeeper0",
55+
Name: runner.UniqueName(),
5656
ZooMyID: 1,
5757
NetworkID: network.ID,
5858
NetworkName: network.Name,
@@ -61,10 +61,9 @@ var _ = Describe("Kafka Runner", func() {
6161
Expect(err).NotTo(HaveOccurred())
6262

6363
kafka = &runner.Kafka{
64-
Name: "kafka1",
6564
ErrorStream: GinkgoWriter,
6665
OutputStream: io.MultiWriter(outBuffer, GinkgoWriter),
67-
ZookeeperConnect: "zookeeper0:2181",
66+
ZookeeperConnect: net.JoinHostPort(zookeeper.Name, "2181"),
6867
BrokerID: 1,
6968
NetworkID: network.ID,
7069
NetworkName: network.Name,
@@ -85,15 +84,18 @@ var _ = Describe("Kafka Runner", func() {
8584
})
8685

8786
It("starts and stops a docker container with the specified image", func() {
87+
By("naming the container")
88+
kafka.Name = "kafka0"
89+
8890
By("starting kafka broker")
8991
process = ifrit.Invoke(kafka)
9092
Eventually(process.Ready(), runner.DefaultStartTimeout).Should(BeClosed())
9193
Consistently(process.Wait()).ShouldNot(Receive())
9294

9395
By("inspecting the container by name")
94-
container, err := client.InspectContainer("kafka1")
96+
container, err := client.InspectContainer("kafka0")
9597
Expect(err).NotTo(HaveOccurred())
96-
Expect(container.Name).To(Equal("/kafka1"))
98+
Expect(container.Name).To(Equal("/kafka0"))
9799
Expect(container.State.Status).To(Equal("running"))
98100
Expect(container.Config).NotTo(BeNil())
99101
Expect(container.Config.Image).To(Equal("hyperledger/fabric-kafka:latest"))
@@ -113,9 +115,9 @@ var _ = Describe("Kafka Runner", func() {
113115
By("terminating the container")
114116
process.Signal(syscall.SIGTERM)
115117
Eventually(process.Wait(), 10*time.Second).Should(Receive())
118+
process = nil
116119

117-
_, err = client.InspectContainer("kafka1")
118-
Expect(err).To(MatchError("No such container: kafka1"))
120+
Eventually(ContainerExists(client, "kafka0")).Should(BeFalse())
119121
})
120122

121123
It("can be started and stopped without ifrit", func() {
@@ -128,8 +130,7 @@ var _ = Describe("Kafka Runner", func() {
128130

129131
It("multiples can be started and stopped", func() {
130132
k1 := &runner.Kafka{
131-
Name: "kafka1",
132-
ZookeeperConnect: "zookeeper0:2181",
133+
ZookeeperConnect: net.JoinHostPort(zookeeper.Name, "2181"),
133134
BrokerID: 1,
134135
MinInsyncReplicas: 2,
135136
DefaultReplicationFactor: 3,
@@ -140,8 +141,7 @@ var _ = Describe("Kafka Runner", func() {
140141
Expect(err).NotTo(HaveOccurred())
141142

142143
k2 := &runner.Kafka{
143-
Name: "kafka2",
144-
ZookeeperConnect: "zookeeper0:2181",
144+
ZookeeperConnect: net.JoinHostPort(zookeeper.Name, "2181"),
145145
BrokerID: 2,
146146
MinInsyncReplicas: 2,
147147
DefaultReplicationFactor: 3,
@@ -152,8 +152,7 @@ var _ = Describe("Kafka Runner", func() {
152152
Expect(err).NotTo(HaveOccurred())
153153

154154
k3 := &runner.Kafka{
155-
Name: "kafka3",
156-
ZookeeperConnect: "zookeeper0:2181",
155+
ZookeeperConnect: net.JoinHostPort(zookeeper.Name, "2181"),
157156
BrokerID: 3,
158157
MinInsyncReplicas: 2,
159158
DefaultReplicationFactor: 3,
@@ -164,8 +163,7 @@ var _ = Describe("Kafka Runner", func() {
164163
Expect(err).NotTo(HaveOccurred())
165164

166165
k4 := &runner.Kafka{
167-
Name: "kafka4",
168-
ZookeeperConnect: "zookeeper0:2181",
166+
ZookeeperConnect: net.JoinHostPort(zookeeper.Name, "2181"),
169167
BrokerID: 4,
170168
MinInsyncReplicas: 2,
171169
DefaultReplicationFactor: 3,
@@ -175,14 +173,15 @@ var _ = Describe("Kafka Runner", func() {
175173
err = k4.Start()
176174
Expect(err).NotTo(HaveOccurred())
177175

178-
err = k1.Stop()
179-
Expect(err).NotTo(HaveOccurred())
180-
err = k2.Stop()
181-
Expect(err).NotTo(HaveOccurred())
182-
err = k3.Stop()
183-
Expect(err).NotTo(HaveOccurred())
184-
err = k4.Stop()
185-
Expect(err).NotTo(HaveOccurred())
176+
Expect(k1.Stop()).To(Succeed())
177+
Expect(k2.Stop()).To(Succeed())
178+
Expect(k3.Stop()).To(Succeed())
179+
Expect(k4.Stop()).To(Succeed())
180+
181+
Eventually(ContainerExists(k1.Client, k1.Name)).Should(BeFalse())
182+
Eventually(ContainerExists(k2.Client, k2.Name)).Should(BeFalse())
183+
Eventually(ContainerExists(k3.Client, k3.Name)).Should(BeFalse())
184+
Eventually(ContainerExists(k4.Client, k4.Name)).Should(BeFalse())
186185
})
187186

188187
Context("when the container has already been stopped", func() {
@@ -197,28 +196,4 @@ var _ = Describe("Kafka Runner", func() {
197196
Expect(err).To(MatchError(fmt.Sprintf("container %s already stopped", containerID)))
198197
})
199198
})
200-
201-
Context("when a name isn't provided", func() {
202-
It("generates a unique name", func() {
203-
k1 := &runner.Kafka{}
204-
err := k1.Start()
205-
Expect(err).To(HaveOccurred())
206-
Expect(k1.Name).ShouldNot(BeEmpty())
207-
Expect(k1.Name).To(HaveLen(26))
208-
209-
k2 := &runner.Kafka{}
210-
err = k2.Start()
211-
Expect(err).To(HaveOccurred())
212-
Expect(k2.Name).ShouldNot(BeEmpty())
213-
Expect(k2.Name).To(HaveLen(26))
214-
215-
Expect(k1.Name).NotTo(Equal(k2.Name))
216-
217-
err = k1.Stop()
218-
Expect(err).To(HaveOccurred())
219-
220-
err = k2.Stop()
221-
Expect(err).To(HaveOccurred())
222-
})
223-
})
224199
})

integration/runner/runner_suite_test.go

+12
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"encoding/json"
1111
"time"
1212

13+
docker "github.com/fsouza/go-dockerclient"
1314
"github.com/hyperledger/fabric/integration/world"
1415
. "github.com/onsi/ginkgo"
1516
. "github.com/onsi/gomega"
@@ -45,6 +46,17 @@ var _ = SynchronizedAfterSuite(func() {
4546
components.Cleanup()
4647
})
4748

49+
func ContainerExists(client *docker.Client, name string) func() bool {
50+
return func() bool {
51+
_, err := client.InspectContainer(name)
52+
if err != nil {
53+
_, ok := err.(*docker.NoSuchContainer)
54+
return !ok
55+
}
56+
return false
57+
}
58+
}
59+
4860
func execute(r ifrit.Runner) error {
4961
var err error
5062
p := ifrit.Invoke(r)

integration/runner/zookeeper_test.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ var _ = Describe("Zookeeper Runner", func() {
8585
By("terminating the container")
8686
err = zookeeper.Stop()
8787
Expect(err).NotTo(HaveOccurred())
88+
89+
Eventually(ContainerExists(zookeeper.Client, "zookeeper0")).Should(BeFalse())
8890
})
8991

9092
It("starts and stops multiple zookeepers", func() {
@@ -129,11 +131,12 @@ var _ = Describe("Zookeeper Runner", func() {
129131
Expect(container.Config.Env).To(ContainElement(ContainSubstring("ZOO_MY_ID=3")))
130132
Expect(container.Config.Env).To(ContainElement(ContainSubstring("ZOO_SERVERS=server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888")))
131133

132-
err = zk3.Stop()
133-
Expect(err).NotTo(HaveOccurred())
134-
err = zk2.Stop()
135-
Expect(err).NotTo(HaveOccurred())
136-
err = zk1.Stop()
137-
Expect(err).NotTo(HaveOccurred())
134+
Expect(zk3.Stop()).To(Succeed())
135+
Expect(zk2.Stop()).To(Succeed())
136+
Expect(zk1.Stop()).To(Succeed())
137+
138+
Eventually(ContainerExists(zk1.Client, "zookeeper1")).Should(BeFalse())
139+
Eventually(ContainerExists(zk2.Client, "zookeeper2")).Should(BeFalse())
140+
Eventually(ContainerExists(zk3.Client, "zookeeper3")).Should(BeFalse())
138141
})
139142
})

0 commit comments

Comments
 (0)