Skip to content

Commit 6a8f47e

Browse files
committed
[FAB-9231] Add Peer Runner for use in tests
This CR adds the peer runner for use in tests Change-Id: Ib1d0fa9d75b8f375cb549698cab27480b1428534 Signed-off-by: Latitia M Haskins <latitia.haskins@gmail.com> Signed-off-by: William Lahti <wtlahti@us.ibm.com>
1 parent 02963f0 commit 6a8f47e

File tree

8 files changed

+868
-5
lines changed

8 files changed

+868
-5
lines changed

integration/runner/peer.go

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
/*
2+
Copyright IBM Corp All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
package runner
8+
9+
import (
10+
"fmt"
11+
"os/exec"
12+
13+
"github.com/tedsuo/ifrit/ginkgomon"
14+
)
15+
16+
type Peer struct {
17+
Path string
18+
GoPath string
19+
ExecPath string
20+
ConfigDir string
21+
MSPConfigPath string
22+
LogLevel string
23+
}
24+
25+
func (p *Peer) setupEnvironment(cmd *exec.Cmd) {
26+
if p.ConfigDir != "" {
27+
cmd.Env = append(cmd.Env, fmt.Sprintf("FABRIC_CFG_PATH=%s", p.ConfigDir))
28+
}
29+
if p.MSPConfigPath != "" {
30+
cmd.Env = append(cmd.Env, fmt.Sprintf("CORE_PEER_MSPCONFIGPATH=%s", p.MSPConfigPath))
31+
}
32+
if p.GoPath != "" {
33+
cmd.Env = append(cmd.Env, fmt.Sprintf("GOPATH=%s", p.GoPath))
34+
}
35+
if p.ExecPath != "" {
36+
cmd.Env = append(cmd.Env, fmt.Sprintf("PATH=%s", p.ExecPath))
37+
}
38+
if p.LogLevel != "" {
39+
cmd.Env = append(cmd.Env, fmt.Sprintf("CORE_LOGGING_LEVEL=%s", p.LogLevel))
40+
}
41+
}
42+
43+
func (p *Peer) NodeStart() *ginkgomon.Runner {
44+
cmd := exec.Command(p.Path, "node", "start")
45+
p.setupEnvironment(cmd)
46+
47+
r := ginkgomon.New(ginkgomon.Config{
48+
AnsiColorCode: "92m",
49+
Name: "peer",
50+
Command: cmd,
51+
})
52+
53+
return r
54+
}
55+
56+
func (p *Peer) ChaincodeListInstalled() *ginkgomon.Runner {
57+
cmd := exec.Command(p.Path, "chaincode", "list", "--installed")
58+
p.setupEnvironment(cmd)
59+
60+
r := ginkgomon.New(ginkgomon.Config{
61+
AnsiColorCode: "92m",
62+
Command: cmd,
63+
})
64+
65+
return r
66+
}
67+
68+
func (p *Peer) ChaincodeListInstantiated(channel string) *ginkgomon.Runner {
69+
cmd := exec.Command(p.Path, "chaincode", "list", "--instantiated", "-C", channel)
70+
p.setupEnvironment(cmd)
71+
72+
r := ginkgomon.New(ginkgomon.Config{
73+
AnsiColorCode: "92m",
74+
Command: cmd,
75+
})
76+
77+
return r
78+
}
79+
80+
func (p *Peer) CreateChannel(channel string, filename string, orderer string) *ginkgomon.Runner {
81+
cmd := exec.Command(p.Path, "channel", "create", "-c", channel, "-o", orderer, "-f", filename)
82+
p.setupEnvironment(cmd)
83+
84+
r := ginkgomon.New(ginkgomon.Config{
85+
AnsiColorCode: "92m",
86+
Command: cmd,
87+
})
88+
89+
return r
90+
}
91+
92+
func (p *Peer) FetchChannel(channel string, filename string, block string, orderer string) *ginkgomon.Runner {
93+
cmd := exec.Command(p.Path, "channel", "fetch", block, "-c", channel, "-o", orderer, filename)
94+
p.setupEnvironment(cmd)
95+
96+
r := ginkgomon.New(ginkgomon.Config{
97+
AnsiColorCode: "92m",
98+
Command: cmd,
99+
})
100+
101+
return r
102+
}
103+
104+
func (p *Peer) JoinChannel(transactionFile string) *ginkgomon.Runner {
105+
cmd := exec.Command(p.Path, "channel", "join", "-b", transactionFile)
106+
p.setupEnvironment(cmd)
107+
108+
r := ginkgomon.New(ginkgomon.Config{
109+
AnsiColorCode: "92m",
110+
Command: cmd,
111+
})
112+
113+
return r
114+
}
115+
116+
func (p *Peer) UpdateChannel(transactionFile string, channel string, orderer string) *ginkgomon.Runner {
117+
cmd := exec.Command(p.Path, "channel", "update", "-c", channel, "-o", orderer, "-f", transactionFile)
118+
p.setupEnvironment(cmd)
119+
120+
r := ginkgomon.New(ginkgomon.Config{
121+
AnsiColorCode: "92m",
122+
Command: cmd,
123+
})
124+
125+
return r
126+
}
127+
128+
func (p *Peer) InstallChaincode(name string, version string, path string) *ginkgomon.Runner {
129+
cmd := exec.Command(p.Path, "chaincode", "install", "-n", name, "-v", version, "-p", path)
130+
p.setupEnvironment(cmd)
131+
132+
r := ginkgomon.New(ginkgomon.Config{
133+
AnsiColorCode: "92m",
134+
Command: cmd,
135+
})
136+
137+
return r
138+
}
139+
140+
func (p *Peer) InstantiateChaincode(name string, version string, orderer string, channel string, args string, policy string) *ginkgomon.Runner {
141+
cmd := exec.Command(p.Path, "chaincode", "instantiate", "-n", name, "-v", version, "-o", orderer, "-C", channel, "-c", args, "-P", policy)
142+
p.setupEnvironment(cmd)
143+
144+
r := ginkgomon.New(ginkgomon.Config{
145+
AnsiColorCode: "92m",
146+
Command: cmd,
147+
})
148+
149+
return r
150+
}
151+
152+
func (p *Peer) QueryChaincode(name string, channel string, args string) *ginkgomon.Runner {
153+
cmd := exec.Command(p.Path, "chaincode", "query", "-n", name, "-C", channel, "-c", args)
154+
p.setupEnvironment(cmd)
155+
156+
r := ginkgomon.New(ginkgomon.Config{
157+
AnsiColorCode: "92m",
158+
Command: cmd,
159+
})
160+
161+
return r
162+
}
163+
164+
func (p *Peer) InvokeChaincode(name string, channel string, args string, orderer string) *ginkgomon.Runner {
165+
cmd := exec.Command(p.Path, "chaincode", "invoke", "-n", name, "-C", channel, "-c", args, "-o", orderer)
166+
p.setupEnvironment(cmd)
167+
168+
r := ginkgomon.New(ginkgomon.Config{
169+
AnsiColorCode: "92m",
170+
Command: cmd,
171+
})
172+
173+
return r
174+
}

0 commit comments

Comments
 (0)