This is an automated email from the ASF dual-hosted git repository.

cmorris pushed a commit to branch splitroles-blockchain
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git

commit af4d0dbc8b85183e5e2e4bbb0754c375f86dd00a
Author: Christopher Morris <[email protected]>
AuthorDate: Wed Sep 25 12:48:44 2019 +0100

    Crypto De/Encapsulate Fix
---
 cmd/service/__debug_bin         | Bin 51651284 -> 51655380 bytes
 cmd/service/main.go             |   2 +-
 cmd/servicetester/block_test.sh | 249 +++++++++++++++++++++++++++++++++++++++-
 libs/documents/crypto.go        |  22 +++-
 pkg/defaultservice/fulfill.go   |   7 +-
 pkg/defaultservice/order.go     |   8 +-
 pkg/tendermint/json.go          |   5 +
 pkg/tendermint/tendermint.go    |  13 ++-
 pkg/tendermint/websockets.go    |   9 +-
 r1                              |   5 +
 r2                              |   5 +
 r3                              |   5 +
 12 files changed, 310 insertions(+), 20 deletions(-)

diff --git a/cmd/service/__debug_bin b/cmd/service/__debug_bin
index 3a3cf1b..583f2a3 100755
Binary files a/cmd/service/__debug_bin and b/cmd/service/__debug_bin differ
diff --git a/cmd/service/main.go b/cmd/service/main.go
index 920fc46..944d373 100644
--- a/cmd/service/main.go
+++ b/cmd/service/main.go
@@ -146,7 +146,7 @@ func startDaemon(args []string) error {
                return errors.Wrap(err, "init logger")
        }
 
-       go tendermint.Subscribe(logger, cfg.Node.NodeID)
+       go tendermint.Subscribe(logger, cfg.Node.NodeID, cfg.HTTP.ListenAddr)
        if err != nil {
                return errors.Wrap(err, "init Tendermint Blockchain")
        }
diff --git a/cmd/servicetester/block_test.sh b/cmd/servicetester/block_test.sh
index 304490a..c6674e8 100755
--- a/cmd/servicetester/block_test.sh
+++ b/cmd/servicetester/block_test.sh
@@ -1 +1,248 @@
-curl -s -X POST "127.0.0.1:5556/v1/order1" -H "accept: */*" -H "Content-Type: 
application/json" -d 
"{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}"
\ No newline at end of file
+#!/bin/bash
+#End to End Test of Services using curl/bash
+
+apiVersion="v1"
+defaultURL="http://localhost:5556";
+apiURL="${1:-$defaultURL}"
+
+
+status () {
+  #Determine if an extension is running
+  statusOutput=$(curl -s -X GET "$apiURL/$apiVersion/status" -H "accept: */*" 
-H "Content-Type: application/json")
+
+echo "$apiURL/$apiVersion/status"
+
+  identity=$(echo $statusOutput | jq .nodeCID)
+  extensionVendor=$(echo $statusOutput | jq -r .extensionVendor)
+  plugin=$(echo $statusOutput | jq -r .plugin)
+  echo "Plugin $plugin"
+
+  if [ -z "${extensionVendor}" ]; then
+      echo "Server Not Running"
+      exit 1
+  fi
+}
+
+###############################################################################################################################
+
+execute_bitcoin () {
+  # #Run 4 Tests against the Bitcoin Extension
+  echo "Bitcoin Plugin Tests [4 Tests]"
+  output1=$(curl -s -X POST "$apiURL/$apiVersion/order" -H "accept: */*" -H 
"Content-Type: application/json" -d 
"{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}")
+  #echo $output1
+  op1=$(echo $output1 | jq .orderReference)
+  commitment1=$(echo $output1 | jq .commitment)
+  address1=$(echo $output1 | jq .extension.address)
+  output2=$(curl -s -X POST "$apiURL/$apiVersion/order/secret" -H "accept: 
*/*" -H "Content-Type: application/json" -d 
"{\"orderReference\":$op1,\"beneficiaryIDDocumentCID\":$identity}")
+  address2=$(echo $output2 | jq .extension.address)
+  commitment2=$(echo $output2 | jq .commitment)
+
+  echo "Committment1 $commitment1 $address1"
+  echo "Committment2 $commitment2 $address2"
+
+  if [ -z $commitment2 ]; then
+      echo "Failed Commitment is empty"
+      exit 1
+  fi
+
+  if [ $commitment1 == $commitment2 ]; then
+    echo "Pass - Id, Order & OrderSecret(Beneficiary)"
+  else
+    echo "Fail"
+    exit 1
+  fi
+
+
+  output3=$(curl -s -X POST "$apiURL/$apiVersion/order" -H "accept: */*" -H 
"Content-Type: application/json" -d 
"{\"beneficiaryIDDocumentCID\":$identity,\"extension\":{\"coin\":\"0\"}}")
+
+  op3=$(echo $output3 | jq .orderReference)
+  commitment3=$(echo $output3 | jq .commitment)
+  address3=$(echo $output3 | jq .extension.address)
+  output4=$(curl -s -X POST "$apiURL/$apiVersion/order/secret" -H "accept: 
*/*" -H "Content-Type: application/json" -d "{\"orderReference\":$op3}")
+  commitment4=$(echo $output4 | jq .commitment)
+  address4=$(echo $output4 | jq .extension.address)
+  orderReference=$(echo $output4 | jq .orderReference)
+  orderIndex=1
+
+  echo "Committment3 $commitment3 $address3"
+  echo "Committment4 $commitment4 $address4"
+
+  if [ -z $commitment4 ]; then
+      echo "Failed Commitment is empty"
+      exit 1
+  fi
+
+  if [ $commitment3 == $commitment4 ]; then
+    echo "Pass - Id, Order(Beneficiary) & OrderSecret"
+  else
+      echo "Fail"
+      exit 1
+  fi
+
+
+   #make another BeneficiaryID
+   output5=$(curl -s -X POST "http://localhost:5556/$apiVersion/identity"; -H 
"accept: */*" -H       "Content-Type: application/json" -d "{\"Name\":\"AA\"}")
+   benid=$(echo $output5 | jq -r .idDocumentCID)
+
+
+
+   #Tests against the Bitcoin Extension - different befificary
+   output6=$(curl -s -X POST "http://localhost:5556/$apiVersion/order"; -H 
"accept: */*" -H "Content-Type: application/json" -d 
"{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}")
+   #echo $output6
+   op6=$(echo $output6 | jq .orderReference)
+   commitment6=$(echo $output6 | jq .commitment)
+   address6=$(echo $output6 | jq .extension.address)
+
+   output7=$(curl -s -X POST "http://localhost:5556/$apiVersion/order/secret"; 
-H "accept: */*" -H "Content-Type: application/json" -d 
"{\"orderReference\":$op6,\"beneficiaryIDDocumentCID\":\"$benid\"}")
+   address7=$(echo $output7 | jq .extension.address)
+   commitment7=$(echo $output7 | jq .commitment)
+
+   echo "Committment5 $commitment6 $address6"
+   echo "Committment6 $commitment7 $address7"
+
+   if [ -z $commitment7 ]; then
+       echo "Failed Commitment is empty"
+       exit 1
+   fi
+
+   if [ $commitment6 == $commitment7 ]; then
+     echo "Pass - Id, Order & OrderSecret(Beneficiary)"
+   else
+     echo "Fail"
+     exit 1
+   fi
+
+  output8=$(curl -s -X POST "http://localhost:5556/$apiVersion/order"; -H 
"accept: */*" -H "Content-Type: application/json" -d 
"{\"beneficiaryIDDocumentCID\":\"$benid\",\"extension\":{\"coin\":\"0\"}}")
+  op8=$(echo $output8 | jq .orderReference)
+  commitment8=$(echo $output8 | jq .commitment)
+  address8=$(echo $output8 | jq .extension.address)
+
+
+  output9=$(curl -s -X POST "http://localhost:5556/$apiVersion/order/secret"; 
-H "accept: */*" -H "Content-Type: application/json" -d 
"{\"orderReference\":$op8}")
+  commitment9=$(echo $output9 | jq .commitment)
+  address9=$(echo $output9 | jq .extension.address)
+  orderReference=$(echo $output9 | jq .orderReference)
+  orderIndex=1
+
+  echo "Committment7 $commitment8 $address8"
+  echo "Committment8 $commitment9 $address9"
+
+  if [ -z $commitment9 ]; then
+      echo "Failed Commitment is empty"
+      exit 1
+  fi
+
+  if [ $commitment8 == $commitment9 ]; then
+    echo "Pass - Id, Order(Beneficiary) & OrderSecret"
+  else
+      echo "Fail"
+      exit 1
+  fi
+
+}
+
+
+###############################################################################################################################
+
+execute_safeguardsecret () {
+  inputString="This is some random test text 1234567890!"
+  echo "Encrypt a String [1 Test]"
+  echo $output1
+  output1=$(curl -s -X POST "$apiURL/$apiVersion/order" -H "accept: */*" -H 
"Content-Type: application/json" -d 
"{\"beneficiaryIDDocumentCID\":$identity,\"extension\":{\"plainText\":\"$inputString\"}}")
+  echo $output1
+  op1=$(echo $output1 | jq .orderReference)
+  cipherText=$(echo $output1 | jq .extension.cypherText)
+  tvalue=$(echo $output1 | jq .extension.t)
+  vvalue=$(echo $output1 | jq .extension.v)
+  commitment1=$(echo $output1 | jq .commitment)
+  output2=$(curl -s -X POST "$apiURL/$apiVersion/order/secret" -H "accept: 
*/*" -H "Content-Type: application/json" -d 
"{\"orderReference\":$op1,\"beneficiaryIDDocumentCID\":$identity,\"extension\":{\"cypherText\":$cipherText,\"t\":$tvalue,\"v\":$vvalue}}")
+  result=$(echo $output2 | jq -r .extension.plainText)
+
+  orderReference=$(echo $output2 | jq .orderReference)
+  orderIndex=0
+
+
+  if [ "$inputString" == "$result" ]; then
+    echo "Pass"
+  else
+    echo "Fail"
+    exit 1
+  fi
+}
+
+# #############################################################################
+
+
+execute_milagro () {
+  echo "Milagro Tests [1 Test]"
+  output1=$(curl -s -X POST "$apiURL/$apiVersion/order" -H "accept: */*" -H 
"Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":$identity}")
+  echo $output1
+  op1=$(echo $output1 | jq .orderReference)
+
+
+  commitment1=$(echo $output1 | jq .commitment)
+  output2=$(curl -s -X POST "$apiURL/$apiVersion/order/secret" -H "accept: 
*/*" -H "Content-Type: application/json" -d 
"{\"orderReference\":$op1,\"beneficiaryIDDocumentCID\":$identity}")
+  commitment2=$(echo $output2 | jq .commitment)
+
+  orderReference=$(echo $output2 | jq .orderReference)
+  orderIndex=0
+
+
+  echo "Committment1 $commitment1"
+  echo "Committment2 $commitment2"
+
+  if [ -z $commitment2 ]; then
+      echo "Failed Commitment is empty"
+      exit 1
+  fi
+
+  if [ $commitment1 == $commitment2 ]; then
+    echo "Order Create/Retrieve Pass"
+  else
+    echo "Order Create/Retrieve Fail"
+    exit 1
+  fi
+}
+
+
+
+
+
+
+# #############################################################################
+
+execute_orderlist () {
+  echo "Milagro Tests [1 Test]"
+  commitment2=$(echo $output2 | jq .commitment)
+  outputList=$(curl -s -X GET 
"$apiURL/$apiVersion/order?page=0&perPage=2&sortBy=dateCreatedDsc" -H "accept: 
*/*")
+  orderReference=$(echo $outputList | jq -r ".orderReference | .[$orderIndex]")
+  outputOrder=$(curl -s -X GET "$apiURL/$apiVersion/order/$orderReference" -H 
"accept: */*")
+
+  #A simple smoke test to ensure some sort of order is returned
+  hasSecret=`echo $outputOrder | grep "Secret"`
+
+  if [ -z $hasSecret ]; then
+      echo "Failed Order has error"
+      exit 1
+  else
+     echo "Passed orderList & get"
+  fi
+}
+
+# #############################################################################
+
+status
+
+if [ $plugin == "bitcoinwallet" ]; then
+   execute_bitcoin
+fi
+
+if [ $plugin == "milagro"  ]; then
+   execute_milagro
+fi
+
+if [ $plugin == "safeguardsecret" ]; then
+    execute_safeguardsecret
+fi
+execute_orderlist
+
diff --git a/libs/documents/crypto.go b/libs/documents/crypto.go
index f504ec0..8861e0e 100644
--- a/libs/documents/crypto.go
+++ b/libs/documents/crypto.go
@@ -48,7 +48,17 @@ func decapsulateWithRecipient(recipient Recipient, sikeSK 
[]byte) ([]byte, error
        encapsulatedKey := recipient.EncapsulatedKey
        encapIV := recipient.IV
 
-       rc, recreatedAesKey := crypto.DecapsulateDecrypt(cipherText, encapIV, 
sikeSK, encapsulatedKey)
+       cipherTextTemp := make([]byte, len(cipherText))
+       encapIVTemp := make([]byte, len(encapIV))
+       sikeSKTemp := make([]byte, len(sikeSK))
+       encapsulatedKeyTemp := make([]byte, len(encapsulatedKey))
+
+       copy(cipherTextTemp, cipherText)
+       copy(encapIVTemp, encapIV)
+       copy(sikeSKTemp, sikeSK)
+       copy(encapsulatedKeyTemp, encapsulatedKey)
+
+       rc, recreatedAesKey := crypto.DecapsulateDecrypt(cipherTextTemp, 
encapIVTemp, sikeSKTemp, encapsulatedKeyTemp)
 
        if rc != 0 {
                return nil, errFailedDecapsulation
@@ -67,7 +77,15 @@ func encapsulateKeyForRecipient(recipientsIDDocs 
map[string]IDDoc, secret []byte
                r.IV = iv
                sikePK := idDocument.SikePublicKey
 
-               rc, cipherText, encapsulatedKey := 
crypto.EncapsulateEncrypt(secret, iv, sikePK)
+               //Make Copies of EncapsulateEncrypt's input params as its 
destructive
+               secretTemp := make([]byte, len(secret))
+               ivTemp := make([]byte, len(iv))
+               sikePKtemp := make([]byte, len(sikePK))
+               copy(secretTemp, secret)
+               copy(ivTemp, iv)
+               copy(sikePKtemp, sikePK)
+
+               rc, cipherText, encapsulatedKey := 
crypto.EncapsulateEncrypt(secretTemp, ivTemp, sikePKtemp)
 
                if rc != 0 {
                        return nil, errFailedToGenerateAESKey
diff --git a/pkg/defaultservice/fulfill.go b/pkg/defaultservice/fulfill.go
index 8b1b87b..28eb3e4 100644
--- a/pkg/defaultservice/fulfill.go
+++ b/pkg/defaultservice/fulfill.go
@@ -47,7 +47,7 @@ func (s *Service) FulfillOrder(req *api.FulfillOrderRequest) 
(string, error) {
                return "", err
        }
 
-       recipientList, err := common.BuildRecipientList(s.Ipfs, nodeID, nodeID)
+       recipientList, err := common.BuildRecipientList(s.Ipfs, 
order.PrincipalCID, nodeID)
        if err != nil {
                return "", err
        }
@@ -80,10 +80,9 @@ func (s *Service) FulfillOrder(req *api.FulfillOrderRequest) 
(string, error) {
        chainTX := &api.BlockChainTX{
                Processor:   api.TXFulfillResponse,
                SenderID:    nodeID,
-               RecipientID: []string{s.MasterFiduciaryNodeID()},
+               RecipientID: []string{order.PrincipalCID},
                Payload:     marshaledRequest,
        }
-       //curl --data-binary 
'{"jsonrpc":"2.0","id":"anything","method":"broadcast_tx_commit","params": 
{"tx": "YWFhcT1hYWFxCg=="}}' -H 'content-type:text/plain;' 
http://localhost:26657
        return tendermint.PostToChain(chainTX, "FulfillOrder")
 
 }
@@ -146,7 +145,5 @@ func (s *Service) FulfillOrderSecret(req 
*api.FulfillOrderSecretRequest) (string
                RecipientID: []string{s.MasterFiduciaryNodeID()},
                Payload:     marshaledRequest,
        }
-       //curl --data-binary 
'{"jsonrpc":"2.0","id":"anything","method":"broadcast_tx_commit","params": 
{"tx": "YWFhcT1hYWFxCg=="}}' -H 'content-type:text/plain;' 
http://localhost:26657
        return tendermint.PostToChain(chainTX, "FulfillOrderSecret")
-
 }
diff --git a/pkg/defaultservice/order.go b/pkg/defaultservice/order.go
index 8ab714d..fbd339d 100644
--- a/pkg/defaultservice/order.go
+++ b/pkg/defaultservice/order.go
@@ -332,7 +332,7 @@ func (s *Service) Order1(req *api.OrderRequest) (string, 
error) {
        chainTX := &api.BlockChainTX{
                Processor:   api.TXFulfillRequest,
                SenderID:    nodeID,
-               RecipientID: []string{s.MasterFiduciaryNodeID(), nodeID},
+               RecipientID: []string{s.MasterFiduciaryNodeID()},
                Payload:     marshaledRequest,
        }
        //curl --data-binary 
'{"jsonrpc":"2.0","id":"anything","method":"broadcast_tx_commit","params": 
{"tx": "YWFhcT1hYWFxCg=="}}' -H 'content-type:text/plain;' 
http://localhost:26657
@@ -430,7 +430,7 @@ func (s *Service) Order2(req *api.FulfillOrderResponse) 
(string, error) {
        chainTX := &api.BlockChainTX{
                Processor:   api.TXOrderSecretResponse,
                SenderID:    nodeID,
-               RecipientID: []string{s.MasterFiduciaryNodeID(), nodeID},
+               RecipientID: []string{s.MasterFiduciaryNodeID()},
                Payload:     marshaledRequest,
                Tags:        map[string]string{"reference": 
updatedOrder.Reference},
        }
@@ -501,7 +501,7 @@ func (s *Service) OrderSecret1(req *api.OrderSecretRequest) 
(string, error) {
        chainTX := &api.BlockChainTX{
                Processor:   api.TXFulfillOrderSecretRequest,
                SenderID:    nodeID,
-               RecipientID: []string{s.MasterFiduciaryNodeID(), nodeID},
+               RecipientID: []string{s.MasterFiduciaryNodeID()},
                Payload:     marshaledRequest,
        }
        //curl --data-binary 
'{"jsonrpc":"2.0","id":"anything","method":"broadcast_tx_commit","params": 
{"tx": "YWFhcT1hYWFxCg=="}}' -H 'content-type:text/plain;' 
http://localhost:26657
@@ -556,7 +556,7 @@ func (s *Service) OrderSecret2(req 
*api.FulfillOrderSecretResponse) (string, err
        chainTX := &api.BlockChainTX{
                Processor:   api.TXOrderSecretResponse,
                SenderID:    nodeID,
-               RecipientID: []string{s.MasterFiduciaryNodeID(), nodeID},
+               RecipientID: []string{s.MasterFiduciaryNodeID()},
                Payload:     marshaledRequest,
        }
        //curl --data-binary 
'{"jsonrpc":"2.0","id":"anything","method":"broadcast_tx_commit","params": 
{"tx": "YWFhcT1hYWFxCg=="}}' -H 'content-type:text/plain;' 
http://localhost:26657
diff --git a/pkg/tendermint/json.go b/pkg/tendermint/json.go
index 8270db5..d5e56e7 100644
--- a/pkg/tendermint/json.go
+++ b/pkg/tendermint/json.go
@@ -8,26 +8,31 @@ package tendermint
 
 import "encoding/json"
 
+//UnmarshalChainQuery -
 func UnmarshalChainQuery(data []byte) (ChainQuery, error) {
        var r ChainQuery
        err := json.Unmarshal(data, &r)
        return r, err
 }
 
+//Marshal -
 func (r *ChainQuery) Marshal() ([]byte, error) {
        return json.Marshal(r)
 }
 
+//ChainQuery -
 type ChainQuery struct {
        Jsonrpc string `json:"jsonrpc"`
        ID      string `json:"id"`
        Result  Result `json:"result"`
 }
 
+//Result -
 type Result struct {
        Response Response `json:"response"`
 }
 
+//Response -
 type Response struct {
        Log   string `json:"log"`
        Key   string `json:"key"`
diff --git a/pkg/tendermint/tendermint.go b/pkg/tendermint/tendermint.go
index 3d34f36..ab162bf 100644
--- a/pkg/tendermint/tendermint.go
+++ b/pkg/tendermint/tendermint.go
@@ -67,7 +67,7 @@ func PostToChain(tx *api.BlockChainTX, method string) 
(string, error) {
                return "", err
        }
        defer resp.Body.Close()
-       fmt.Printf("POST TO CHAIN: METHOD:%s CALLS:%s  - TXID:%s", method, 
tx.Processor, TXIDhex)
+       fmt.Printf("POST TO CHAIN: METHOD:%s CALLS:%s  - TXID:%s\n", method, 
tx.Processor, TXIDhex)
        return TXIDhex, nil
 }
 
@@ -77,7 +77,8 @@ func HandleChainTX(myID string, tx string) error {
        if err != nil {
                return err
        }
-       err = callNextTX(blockChainTX)
+       panic(nil)
+       err = callNextTX(blockChainTX, "5556")
        if err != nil {
                return err
        }
@@ -111,7 +112,7 @@ func decodeTX(payload string) (*api.BlockChainTX, string, 
error) {
        return tx, hash, nil
 }
 
-func callNextTX(tx *api.BlockChainTX) error {
+func callNextTX(tx *api.BlockChainTX, listenPort string) error {
        // recipient := tx.RecipientID
        // sender := tx.SenderID
        //payloadJSON := tx.Payload
@@ -122,7 +123,7 @@ func callNextTX(tx *api.BlockChainTX) error {
                return nil
        }
 
-       desintationURL := fmt.Sprintf("http://localhost:5556/%s";, tx.Processor)
+       desintationURL := fmt.Sprintf("http://localhost"+listenPort+"/%s";, 
tx.Processor)
 
        body := strings.NewReader(payloadString)
        req, err := http.NewRequest("POST", os.ExpandEnv(desintationURL), body)
@@ -147,7 +148,7 @@ func callNextTX(tx *api.BlockChainTX) error {
        return nil
 }
 
-//Decode the Payload into JSON and displays the entire Blockchain TX unencoded
+//DumpTX - Decode the Payload into JSON and displays the entire Blockchain TX 
unencoded
 func DumpTX(bctx *api.BlockChainTX) {
        f := colorjson.NewFormatter()
        f.Indent = 4
@@ -162,6 +163,7 @@ func DumpTX(bctx *api.BlockChainTX) {
        fmt.Println(string(s))
 }
 
+//DumpTXID -
 func DumpTXID(txid string) {
        value, raw := QueryChain(txid)
        println(value)
@@ -170,6 +172,7 @@ func DumpTXID(txid string) {
        println()
 }
 
+//ProcessTransactionID -
 func ProcessTransactionID(txid string) {
        _, payload := QueryChain((txid))
        err := HandleChainTX("", payload)
diff --git a/pkg/tendermint/websockets.go b/pkg/tendermint/websockets.go
index 145374e..1e21a12 100644
--- a/pkg/tendermint/websockets.go
+++ b/pkg/tendermint/websockets.go
@@ -15,7 +15,7 @@ import (
 )
 
 //Subscribe - Connect to the Tendermint websocket to collect events
-func Subscribe(logger *logger.Logger, nodeID string) error {
+func Subscribe(logger *logger.Logger, nodeID string, listenPort string) error {
 
        //tmlogger := log2.NewTMLogger(log.NewSyncWriter(os.Stdout))
 
@@ -53,6 +53,11 @@ func Subscribe(logger *logger.Logger, nodeID string) error {
                                break
                        }
 
+                       //check if this node is Sender
+                       if payload.SenderID == nodeID {
+                               break
+                       }
+
                        //check is receipient
                        isRecipient := false
                        for _, v := range payload.RecipientID {
@@ -74,7 +79,7 @@ func Subscribe(logger *logger.Logger, nodeID string) error {
                        if payload.Processor == "NONE" {
                                DumpTX(&payload)
                        } else {
-                               callNextTX(&payload)
+                               callNextTX(&payload, listenPort)
                        }
 
                        //print(blockchainTX)
diff --git a/r1 b/r1
new file mode 100755
index 0000000..44fe3ff
--- /dev/null
+++ b/r1
@@ -0,0 +1,5 @@
+GO111MODULE=on go build -o target/milagro 
github.com/apache/incubator-milagro-dta/cmd/service
+export MILAGRO_HOME=~/.milagro1
+target/milagro daemon
+
+
diff --git a/r2 b/r2
new file mode 100755
index 0000000..a619211
--- /dev/null
+++ b/r2
@@ -0,0 +1,5 @@
+GO111MODULE=on go build -o target/milagro 
github.com/apache/incubator-milagro-dta/cmd/service
+export MILAGRO_HOME=~/.milagro2
+target/milagro daemon
+
+
diff --git a/r3 b/r3
new file mode 100755
index 0000000..350d822
--- /dev/null
+++ b/r3
@@ -0,0 +1,5 @@
+GO111MODULE=on go build -o target/milagro 
github.com/apache/incubator-milagro-dta/cmd/service
+export MILAGRO_HOME=~/.milagro3
+target/milagro daemon
+
+

Reply via email to