github.com/s7techlab/cckit@v0.10.5/examples/cpaper_asservice/bin/api/mock/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "io/ioutil" 6 "log" 7 "net" 8 "net/http" 9 "time" 10 11 "github.com/grpc-ecosystem/grpc-gateway/runtime" 12 "google.golang.org/grpc" 13 14 "github.com/s7techlab/cckit/examples/cpaper_asservice" 15 "github.com/s7techlab/cckit/gateway" 16 "github.com/s7techlab/cckit/testing" 17 ) 18 19 const ( 20 chaincodeName = `cpaper` 21 channelName = `cpaper` 22 23 grpcAddress = `:8080` 24 restAddress = `:8081` 25 ) 26 27 func main() { 28 ctx := context.Background() 29 ctx, cancel := context.WithCancel(ctx) 30 defer cancel() 31 32 // Create mock for commercial paper chaincode invocation 33 34 // Commercial paper chaincode instance 35 cc, err := cpaper_asservice.NewCC() 36 if err != nil { 37 log.Fatalln(err) 38 } 39 40 // Mockstub for commercial paper 41 cpaperMock := testing.NewMockStub(chaincodeName, cc) 42 43 // default identity for signing requests to peeer (mocked) 44 apiIdentity, err := testing.IdentityFromFile(`MSP`, `../../../testdata/admin.pem`, ioutil.ReadFile) 45 if err != nil { 46 log.Fatalln(err) 47 } 48 // Generated gateway for access to chaincode from external application 49 cpaperGateway := cpaper_asservice.NewCPaperServiceGateway( 50 // Chaincode invocation service mock. For real network you can use example with hlf-sdk-go 51 testing.NewPeer().WithChannel(channelName, cpaperMock), 52 channelName, 53 chaincodeName, 54 gateway.WithDefaultSigner(apiIdentity)) 55 56 grpcListener, err := net.Listen("tcp", grpcAddress) 57 if err != nil { 58 log.Fatalf("failed to listen grpc: %v", err) 59 } 60 61 // Create gRPC server 62 s := grpc.NewServer() 63 cpaper_asservice.RegisterCPaperServiceServer(s, cpaperGateway) 64 65 // Runs gRPC server in goroutine 66 go func() { 67 log.Printf(`listen gRPC at %s`, grpcAddress) 68 if err := s.Serve(grpcListener); err != nil { 69 log.Fatalf("failed to serve gRPC: %v", err) 70 } 71 }() 72 73 // wait for gRPC service stared 74 time.Sleep(3 * time.Second) 75 76 // Register gRPC server endpoint 77 mux := runtime.NewServeMux() 78 opts := []grpc.DialOption{grpc.WithInsecure()} 79 err = cpaper_asservice.RegisterCPaperServiceHandlerFromEndpoint(ctx, mux, grpcAddress, opts) 80 if err != nil { 81 log.Fatalf("failed to register handler from endpoint %v", err) 82 } 83 84 log.Printf(`listen REST at %s`, restAddress) 85 86 // Start HTTP server (and proxy calls to gRPC server endpoint) 87 if err = http.ListenAndServe(restAddress, mux); err != nil { 88 log.Fatalf("failed to serve REST: %v", err) 89 } 90 }