@@ -17,6 +17,7 @@ limitations under the License.
17
17
package bddtests
18
18
19
19
import (
20
+ "errors"
20
21
"fmt"
21
22
"strconv"
22
23
"time"
@@ -25,13 +26,49 @@ import (
25
26
26
27
"github.com/DATA-DOG/godog"
27
28
"github.com/DATA-DOG/godog/gherkin"
29
+ "github.com/hyperledger/fabric/core/chaincode/platforms"
30
+ "github.com/hyperledger/fabric/core/container"
28
31
"github.com/hyperledger/fabric/core/util"
29
32
pb "github.com/hyperledger/fabric/protos/peer"
30
33
"github.com/hyperledger/fabric/protos/utils"
31
34
"golang.org/x/net/context"
32
35
"google.golang.org/grpc"
33
36
)
34
37
38
+ // checkSpec to see if chaincode resides within current package capture for language.
39
+ func (* BDDContext ) checkSpec (spec * pb.ChaincodeSpec ) error {
40
+ // Don't allow nil value
41
+ if spec == nil {
42
+ return errors .New ("Expected chaincode specification, nil received" )
43
+ }
44
+
45
+ platform , err := platforms .Find (spec .Type )
46
+ if err != nil {
47
+ return fmt .Errorf ("Failed to determine platform type: %s" , err )
48
+ }
49
+
50
+ return platform .ValidateSpec (spec )
51
+ }
52
+
53
+ // Build builds the supplied chaincode image
54
+ func (b * BDDContext ) build (spec * pb.ChaincodeSpec ) (* pb.ChaincodeDeploymentSpec , error ) {
55
+ var codePackageBytes []byte
56
+ if err := b .checkSpec (spec ); err != nil {
57
+ return nil , err
58
+ }
59
+
60
+ vm , err := container .NewVM ()
61
+ if err != nil {
62
+ return nil , fmt .Errorf ("Error getting vm" )
63
+ }
64
+
65
+ codePackageBytes , err = vm .BuildChaincodeContainer (spec )
66
+ if err != nil {
67
+ return nil , err
68
+ }
69
+ chaincodeDeploymentSpec := & pb.ChaincodeDeploymentSpec {ChaincodeSpec : spec , CodePackage : codePackageBytes }
70
+ return chaincodeDeploymentSpec , nil
71
+ }
35
72
func (b * BDDContext ) weCompose (composeFiles string ) error {
36
73
if b .composition != nil {
37
74
return fmt .Errorf ("Already have composition in BDD context (%s)" , b .composition .projectName )
@@ -118,6 +155,7 @@ func (b *BDDContext) userCreatesADeploymentSpecUsingChaincodeSpecAndDevopsOnPeer
118
155
return errRetFunc ()
119
156
}
120
157
158
+ /****** Let us get the deployment spec directly from this machine like SDK would
121
159
// Now use the devops client to create the deployment spec
122
160
var grpcClient *grpc.ClientConn
123
161
if grpcClient, err = b.getGrpcClientForComposeService(devopsPeerComposeService); err != nil {
@@ -129,6 +167,11 @@ func (b *BDDContext) userCreatesADeploymentSpecUsingChaincodeSpecAndDevopsOnPeer
129
167
if ccDeploymentSpec, err = devopsClient.Build(context.Background(), ccSpec); err != nil {
130
168
return errRetFunc()
131
169
}
170
+ ********/
171
+ var ccDeploymentSpec * pb.ChaincodeDeploymentSpec
172
+ if ccDeploymentSpec , err = b .build (ccSpec ); err != nil {
173
+ return errRetFunc ()
174
+ }
132
175
// Now store the chaincode deployment spec
133
176
if _ , err = userRegistration .SetTagValue (ccDeploymentSpecAlias , ccDeploymentSpec ); err != nil {
134
177
return errRetFunc ()
0 commit comments