Skip to content

Commit 45fb62e

Browse files
Fix IRB container package
- implement docker API changes Signed-off-by: Marcus Brandenburger <bur@zurich.ibm.com>
1 parent 805e428 commit 45fb62e

File tree

10 files changed

+643
-401
lines changed

10 files changed

+643
-401
lines changed

samples/demos/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ include $(TOP)/build.mk
88

99
DEMOS = irb
1010

11-
build clean:
11+
build test clean:
1212
$(foreach DIR, $(DEMOS), $(MAKE) -C $(DIR) $@ || exit;)
1313

samples/demos/irb/.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
cmd/**
1+
cmd/
22
users/**
33
pkg/protos/**

samples/demos/irb/Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ include $(TOP)/build.mk
77

88
COMPONENTS = protos chaincode experimenter
99

10-
all: pull-images ercc build test
10+
all: ercc build test
1111

1212
pull-images:
1313
$(DOCKER) pull redis:latest
@@ -23,11 +23,11 @@ ercc:
2323
build: ercc
2424
$(foreach DIR, $(COMPONENTS), $(MAKE) -C $(DIR) $@ || exit;)
2525

26-
test:
27-
$(GO) test -v ./...
26+
test: pull-images
27+
$(GO) test -v -failfast ./...
2828

2929
run:
30-
$(GO) test -v .
30+
$(GO) test -v -failfast .
3131

3232
clean:
3333
$(GO) clean

samples/demos/irb/experimenter/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ run: build
1717
$(MAKE) -C worker stop-docker run-docker
1818

1919
test:
20-
$(GO) test -v ./...
20+
$(GO) test -v -failfast ./...

samples/demos/irb/experimenter/test/worker_test.go

Lines changed: 50 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,24 @@ package test
88

99
import (
1010
"bytes"
11+
"context"
1112
"fmt"
1213
"io"
1314
"net/http"
1415
"testing"
15-
"time"
1616

17-
"github.com/hyperledger/fabric-private-chaincode/samples/demos/irb/pkg/container"
1817
"github.com/hyperledger/fabric-private-chaincode/samples/demos/irb/pkg/crypto"
1918
pb "github.com/hyperledger/fabric-private-chaincode/samples/demos/irb/pkg/protos"
2019
"github.com/hyperledger/fabric-private-chaincode/samples/demos/irb/pkg/storage"
21-
"github.com/hyperledger/fabric-private-chaincode/samples/demos/irb/pkg/utils"
2220
"github.com/pkg/errors"
21+
"github.com/stretchr/testify/require"
22+
"github.com/testcontainers/testcontainers-go"
23+
"github.com/testcontainers/testcontainers-go/network"
24+
"github.com/testcontainers/testcontainers-go/wait"
2325
"google.golang.org/protobuf/proto"
2426
)
2527

2628
func requestAttestation() ([]byte, error) {
27-
2829
resp, err := http.Get("http://localhost:5000/attestation")
2930
if err != nil {
3031
return nil, err
@@ -57,7 +58,6 @@ func requestAttestation() ([]byte, error) {
5758
}
5859

5960
func submitEvaluationPack(pk []byte, req *pb.RegisterDataRequest) error {
60-
6161
epm := &pb.EvaluationPackMessage{}
6262
epm.RegisteredData = []*pb.RegisterDataRequest{req}
6363

@@ -134,7 +134,7 @@ func upload() (*pb.RegisterDataRequest, error) {
134134
PublicKey: []byte("some verification key"),
135135
}
136136

137-
//build request
137+
// build request
138138
registerDataRequest := &pb.RegisterDataRequest{
139139
Participant: &userIdentity,
140140
DecryptionKey: sk,
@@ -148,70 +148,57 @@ func upload() (*pb.RegisterDataRequest, error) {
148148
const networkID = "mytestnetwork"
149149

150150
func TestWorker(t *testing.T) {
151-
152-
network := &container.Network{Name: networkID}
153-
err := network.Create()
154-
defer network.Remove()
155-
if err != nil {
156-
panic(err)
157-
}
158-
159-
// setup redis
160-
redis := &container.Container{
161-
Image: "redis",
162-
Name: "redis-container",
163-
HostIP: "localhost",
164-
HostPort: "6379",
165-
Network: networkID,
166-
}
167-
err = redis.Start()
168-
defer redis.Stop()
169-
if err != nil {
170-
panic(err)
171-
}
172-
173-
// setup experiment container
174-
experiment := &container.Container{
175-
Image: "irb-experimenter-worker",
176-
Name: "experiment-container",
177-
HostIP: "localhost",
178-
HostPort: "5000",
179-
Env: []string{"REDIS_HOST=redis-container"},
180-
Network: networkID,
181-
}
182-
err = experiment.Start()
183-
defer experiment.Stop()
184-
if err != nil {
185-
panic(err)
186-
}
187-
188-
// let's wait until experiment service is up an running
189-
err = utils.Retry(func() bool {
190-
resp, err := http.Get("http://localhost:5000/info")
191-
if err != nil {
192-
return false
193-
}
194-
return resp.StatusCode == 200
195-
}, 5, 60*time.Second, 2*time.Second)
196-
if err != nil {
197-
panic(err)
198-
}
151+
ctx := context.Background()
152+
153+
// network
154+
net, err := network.New(ctx)
155+
require.NoError(t, err)
156+
testcontainers.CleanupNetwork(t, net)
157+
networkName := net.Name
158+
159+
// redis
160+
redisImageName := "redis"
161+
redis, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
162+
ContainerRequest: testcontainers.ContainerRequest{
163+
Image: redisImageName,
164+
ExposedPorts: []string{fmt.Sprintf("%d/tcp", storage.DefaultRedisPort)},
165+
Networks: []string{networkName},
166+
WaitingFor: wait.ForLog("* Ready to accept connections"),
167+
},
168+
Started: true,
169+
})
170+
require.NoError(t, err)
171+
testcontainers.CleanupContainer(t, redis)
172+
173+
redisHost, err := redis.Host(ctx)
174+
require.NoError(t, err)
175+
176+
// experiment
177+
experimentImageName := "irb-experimenter-worker"
178+
experimentPort := "5000/tcp"
179+
experiment, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
180+
ContainerRequest: testcontainers.ContainerRequest{
181+
Image: experimentImageName,
182+
ExposedPorts: []string{experimentPort},
183+
Networks: []string{networkName},
184+
Env: map[string]string{"REDIS_HOST": redisHost},
185+
WaitingFor: wait.ForExposedPort(),
186+
},
187+
Started: true,
188+
})
189+
require.NoError(t, err)
190+
testcontainers.CleanupContainer(t, experiment)
199191

200192
req, err := upload()
201-
if err != nil {
202-
panic(err)
203-
}
193+
require.NoError(t, err)
204194

205195
fmt.Println("Testing attestation...")
206196
pk, err := requestAttestation()
207-
if err != nil {
208-
panic(err)
209-
}
197+
require.NoError(t, err)
210198

211199
fmt.Println("Testing evaluation pack...")
212-
if err := submitEvaluationPack(pk, req); err != nil {
213-
panic(err)
214-
}
200+
err = submitEvaluationPack(pk, req)
201+
require.NoError(t, err)
215202

216203
fmt.Println("Test done.")
217204
}

0 commit comments

Comments
 (0)