Skip to content

Commit

Permalink
update integration test cases
Browse files Browse the repository at this point in the history
remove tls array list

Signed-off-by: SamYuan1990 <[email protected]>
  • Loading branch information
SamYuan1990 authored and guoger committed Nov 6, 2020
1 parent b4d66f6 commit d331da6
Show file tree
Hide file tree
Showing 12 changed files with 150 additions and 71 deletions.
12 changes: 7 additions & 5 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ trigger:
pool:
vmImage: 'ubuntu-latest'

jobs:
jobs:
- job:
displayName: build
steps:
Expand Down Expand Up @@ -44,8 +44,10 @@ jobs:
arguments: '-v ./... -cover'
workingDirectory: '$(System.DefaultWorkingDirectory)'
- job:
displayName: integration-test
displayName: integration-test-org1-and-org2
steps:
- script: ./integration-test.sh


- script: ./test/integration-test.sh
- job:
displayName: integration-test-org1
steps:
- script: ./test/integration-test.sh ORLogic
6 changes: 3 additions & 3 deletions cmd/stupid/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ func main() {
go assember.StartIntegrator(processed, envs, done)
}

proposor := infra.CreateProposers(config.NumOfConn, config.ClientPerConn, config.Endorsers, crypto, logger)
proposor := infra.CreateProposers(config.NumOfConn, config.ClientPerConn, config.Endorsers, logger)
proposor.Start(signed, processed, done, config)

broadcaster := infra.CreateBroadcasters(config.NumOfConn, config.Orderer.Addr, crypto, logger)
broadcaster := infra.CreateBroadcasters(config.NumOfConn, config.Orderer, logger)
broadcaster.Start(envs, done)

observer := infra.CreateObserver(config.Committer.Addr, config.Channel, crypto, logger)
observer := infra.CreateObserver(config.Channel, config.Committer, crypto, logger)

start := time.Now()
go observer.Start(N, start)
Expand Down
14 changes: 0 additions & 14 deletions integration-test.sh

This file was deleted.

18 changes: 11 additions & 7 deletions pkg/infra/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ import (
"github.com/hyperledger/fabric/core/comm"
)

func CreateGRPCClient(certs [][]byte) (*comm.GRPCClient, error) {
func CreateGRPCClient(cert []byte) (*comm.GRPCClient, error) {
var certs [][]byte
if cert != nil {
certs = append(certs, cert)
}
config := comm.ClientConfig{}
config.Timeout = 5 * time.Second
config.SecOpts = comm.SecureOptions{
Expand All @@ -31,8 +35,8 @@ func CreateGRPCClient(certs [][]byte) (*comm.GRPCClient, error) {
return grpcClient, nil
}

func CreateEndorserClient(addr string, tlscacerts [][]byte) (peer.EndorserClient, error) {
gRPCClient, err := CreateGRPCClient(tlscacerts)
func CreateEndorserClient(addr string, tlscacert []byte) (peer.EndorserClient, error) {
gRPCClient, err := CreateGRPCClient(tlscacert)
if err != nil {
return nil, err
}
Expand All @@ -45,8 +49,8 @@ func CreateEndorserClient(addr string, tlscacerts [][]byte) (peer.EndorserClient
return peer.NewEndorserClient(conn), nil
}

func CreateBroadcastClient(addr string, tlscacerts [][]byte) (orderer.AtomicBroadcast_BroadcastClient, error) {
gRPCClient, err := CreateGRPCClient(tlscacerts)
func CreateBroadcastClient(addr string, tlscacert []byte) (orderer.AtomicBroadcast_BroadcastClient, error) {
gRPCClient, err := CreateGRPCClient(tlscacert)
if err != nil {
return nil, err
}
Expand All @@ -59,8 +63,8 @@ func CreateBroadcastClient(addr string, tlscacerts [][]byte) (orderer.AtomicBroa
return orderer.NewAtomicBroadcastClient(conn).Broadcast(context.Background())
}

func CreateDeliverFilteredClient(addr string, tlscacerts [][]byte) (peer.Deliver_DeliverFilteredClient, error) {
gRPCClient, err := CreateGRPCClient(tlscacerts)
func CreateDeliverFilteredClient(addr string, tlscacert []byte) (peer.Deliver_DeliverFilteredClient, error) {
gRPCClient, err := CreateGRPCClient(tlscacert)
if err != nil {
return nil, err
}
Expand Down
25 changes: 13 additions & 12 deletions pkg/infra/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,9 @@ func (c Config) LoadCrypto() *Crypto {
allcerts = append(allcerts, c.Orderer.TLSCACert)

conf := CryptoConfig{
MSPID: c.MSPID,
PrivKey: c.PrivateKey,
SignCert: c.SignCert,
TLSCACerts: allcerts,
MSPID: c.MSPID,
PrivKey: c.PrivateKey,
SignCert: c.SignCert,
}

priv, err := GetPrivateKey(conf.PrivKey)
Expand All @@ -76,15 +75,17 @@ func (c Config) LoadCrypto() *Crypto {
panic(err)
}

certs, err := GetTLSCACerts(conf.TLSCACerts)
if err != nil {
panic(err)
return &Crypto{
Creator: name,
PrivKey: priv,
SignCert: cert,
}
}

return &Crypto{
Creator: name,
PrivKey: priv,
SignCert: cert,
TLSCACerts: certs,
func GetTLSCACerts(file string) ([]byte, error) {
in, err := ioutil.ReadFile(file)
if err != nil {
return nil, err
}
return in, nil
}
21 changes: 3 additions & 18 deletions pkg/infra/crypto.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,9 @@ type ECDSASignature struct {
}

type Crypto struct {
Creator []byte
PrivKey *ecdsa.PrivateKey
SignCert *x509.Certificate
TLSCACerts [][]byte
Creator []byte
PrivKey *ecdsa.PrivateKey
SignCert *x509.Certificate
}

func (s *Crypto) Sign(message []byte) ([]byte, error) {
Expand Down Expand Up @@ -69,20 +68,6 @@ func (s *Crypto) NewSignatureHeader() (*common.SignatureHeader, error) {
}, nil
}

func GetTLSCACerts(files []string) ([][]byte, error) {
var certs [][]byte
for _, f := range files {
in, err := ioutil.ReadFile(f)
if err != nil {
return nil, err
}

certs = append(certs, in)
}

return certs, nil
}

func digest(in []byte) []byte {
h := sha256.New()
h.Write(in)
Expand Down
8 changes: 6 additions & 2 deletions pkg/infra/observer.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ type Observer struct {
signal chan error
}

func CreateObserver(addr, channel string, crypto *Crypto, logger *log.Logger) *Observer {
deliverer, err := CreateDeliverFilteredClient(addr, crypto.TLSCACerts)
func CreateObserver(channel string, node Node, crypto *Crypto, logger *log.Logger) *Observer {
TLSCACert, err := GetTLSCACerts(node.TLSCACert)
if err != nil {
panic(err)
}
deliverer, err := CreateDeliverFilteredClient(node.Addr, TLSCACert)
if err != nil {
panic(err)
}
Expand Down
24 changes: 16 additions & 8 deletions pkg/infra/proposer.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,17 @@ type Proposers struct {
logger *log.Logger
}

func CreateProposers(conn, client int, nodes []Node, crypto *Crypto, logger *log.Logger) *Proposers {
func CreateProposers(conn, client int, nodes []Node, logger *log.Logger) *Proposers {
var ps [][]*Proposer
//one proposer per connection per peer
for _, node := range nodes {
row := make([]*Proposer, conn)
TLSCACert, err := GetTLSCACerts(node.TLSCACert)
if err != nil {
panic(err)
}
for j := 0; j < conn; j++ {
row[j] = CreateProposer(node.Addr, crypto, logger)
row[j] = CreateProposer(node.Addr, TLSCACert, logger)
}
ps = append(ps, row)
}
Expand All @@ -46,8 +50,8 @@ type Proposer struct {
logger *log.Logger
}

func CreateProposer(addr string, crypto *Crypto, logger *log.Logger) *Proposer {
endorser, err := CreateEndorserClient(addr, crypto.TLSCACerts)
func CreateProposer(addr string, TLSCACert []byte, logger *log.Logger) *Proposer {
endorser, err := CreateEndorserClient(addr, TLSCACert)
if err != nil {
panic(err)
}
Expand Down Expand Up @@ -84,10 +88,14 @@ func (p *Proposer) Start(signed, processed chan *Elements, done <-chan struct{},

type Broadcasters []*Broadcaster

func CreateBroadcasters(conn int, addr string, crypto *Crypto, logger *log.Logger) Broadcasters {
func CreateBroadcasters(conn int, orderer Node, logger *log.Logger) Broadcasters {
bs := make(Broadcasters, conn)
TLSCACert, err := GetTLSCACerts(orderer.TLSCACert)
if err != nil {
panic(err)
}
for i := 0; i < conn; i++ {
bs[i] = CreateBroadcaster(addr, crypto, logger)
bs[i] = CreateBroadcaster(orderer.Addr, TLSCACert, logger)
}

return bs
Expand All @@ -105,8 +113,8 @@ type Broadcaster struct {
logger *log.Logger
}

func CreateBroadcaster(addr string, crypto *Crypto, logger *log.Logger) *Broadcaster {
client, err := CreateBroadcastClient(addr, crypto.TLSCACerts)
func CreateBroadcaster(addr string, tlscacert []byte, logger *log.Logger) *Broadcaster {
client, err := CreateBroadcastClient(addr, tlscacert)
if err != nil {
panic(err)
}
Expand Down
6 changes: 4 additions & 2 deletions pkg/infra/proposer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@ var _ = Describe("Proposer", func() {

Context("CreateProposer", func() {
It("successfully creates a proposer", func() {
Proposer := infra.CreateProposer(addr, &infra.Crypto{}, nil)
var dummy []byte
Proposer := infra.CreateProposer(addr, dummy, nil)
Expect(Proposer.Addr).To(Equal(addr))
})

It("error happen creates a proposer", func() {
var dummy []byte
Expect(func() {
infra.CreateProposer("invalid_addr", &infra.Crypto{}, nil)
infra.CreateProposer("invalid_addr", dummy, nil)
}).To(Panic())
})
})
Expand Down
33 changes: 33 additions & 0 deletions test/configorg1andorg2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Definition of nodes
peer1: &peer1
addr: localhost:7051
tls_ca_cert: ./organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem

peer2: &peer2
addr: localhost:9051
tls_ca_cert: ./organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem

orderer1: &orderer1
addr: localhost:7050
tls_ca_cert: ./organizations/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem

# Nodes to interact with
endorsers:
- *peer1
- *peer2
# we might support multi-committer in the future for more complex test scenario,
# i.e. consider tx committed only if it's done on >50% of nodes. But for now,
# it seems sufficient to support single committer.
committer: *peer2
orderer: *orderer1

# Invocation configs
channel: mychannel
chaincode: basic
args:
- GetAllAssets
mspid: Org1MSP
private_key: ./organizations/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/priv_sk
sign_cert: ./organizations/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/[email protected]
num_of_conn: 10
client_per_conn: 10
32 changes: 32 additions & 0 deletions test/configselectendorser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Definition of nodes
peer1: &peer1
addr: localhost:7051
tls_ca_cert: ./organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem

peer2: &peer2
addr: localhost:9051
tls_ca_cert: ./organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem

orderer1: &orderer1
addr: localhost:7050
tls_ca_cert: ./organizations/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem

# Nodes to interact with
endorsers:
- *peer1
# we might support multi-committer in the future for more complex test scenario,
# i.e. consider tx committed only if it's done on >50% of nodes. But for now,
# it seems sufficient to support single committer.
committer: *peer2
orderer: *orderer1

# Invocation configs
channel: mychannel
chaincode: basic
args:
- GetAllAssets
mspid: Org1MSP
private_key: ./organizations/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/priv_sk
sign_cert: ./organizations/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/[email protected]
num_of_conn: 10
client_per_conn: 10
22 changes: 22 additions & 0 deletions test/integration-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
set -ex

DIR=$PWD
go build ./cmd/stupid
curl -vsS https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash

cd ./fabric-samples/test-network
echo y | ./network.sh down
echo y | ./network.sh up createChannel
cp -r organizations "$DIR"

CONFIG_FILE=./test/configorg1andorg2.yaml

if [ $1 == "ORLogic" ]; then
CONFIG_FILE=./test/configselectendorser.yaml
ARGS=(-ccep "OR('Org1.member','Org2.member')")
fi

echo y | ./network.sh deployCC "${ARGS[@]}"
cd "$DIR"
STUPID_LOGLEVEL=debug ./stupid $CONFIG_FILE 100

0 comments on commit d331da6

Please sign in to comment.