Commit 786a2ed7 authored by vipwzw's avatar vipwzw Committed by 33cn

update

parent 4bf72cdd
...@@ -376,8 +376,8 @@ func init() { ...@@ -376,8 +376,8 @@ func init() {
import ( import (
log "github.com/inconshreveable/log15" log "github.com/inconshreveable/log15"
drivers "gitlab.33.cn/chain33/chain33/system/dapp" drivers "github.com/33cn/chain33/system/dapp"
"gitlab.33.cn/chain33/chain33/types" "github.com/33cn/chain33/types"
) )
var clog = log.New("module", "execs.${EXECNAME}") var clog = log.New("module", "execs.${EXECNAME}")
...@@ -453,7 +453,7 @@ message ${ACTIONNAME}None { ...@@ -453,7 +453,7 @@ message ${ACTIONNAME}None {
CpftDappTypefile = `package types CpftDappTypefile = `package types
import ( import (
"gitlab.33.cn/chain33/chain33/types" "github.com/33cn/chain33/types"
) )
var ( var (
......
...@@ -1229,7 +1229,7 @@ func TestChain33_CreateTransaction(t *testing.T) { ...@@ -1229,7 +1229,7 @@ func TestChain33_CreateTransaction(t *testing.T) {
in := &rpctypes.CreateTxIn{Execer: "notExist", ActionName: "x", Payload: []byte("x")} in := &rpctypes.CreateTxIn{Execer: "notExist", ActionName: "x", Payload: []byte("x")}
err = client.CreateTransaction(in, &result) err = client.CreateTransaction(in, &result)
assert.Equal(t, types.ErrNotSupport, err) assert.Equal(t, types.ErrExecNotFound, err)
in = &rpctypes.CreateTxIn{Execer: types.ExecName("coins"), ActionName: "notExist", Payload: []byte("x")} in = &rpctypes.CreateTxIn{Execer: types.ExecName("coins"), ActionName: "notExist", Payload: []byte("x")}
err = client.CreateTransaction(in, &result) err = client.CreateTransaction(in, &result)
......
...@@ -70,7 +70,7 @@ func (client *JSONClient) Call(method string, params, resp interface{}) error { ...@@ -70,7 +70,7 @@ func (client *JSONClient) Call(method string, params, resp interface{}) error {
req := &clientRequest{} req := &clientRequest{}
req.Method = method req.Method = method
req.Params[0] = params req.Params[0] = params
data, err := json.MarshalIndent(req, "", "\t") data, err := json.Marshal(req)
if err != nil { if err != nil {
return err return err
} }
...@@ -116,5 +116,4 @@ func (client *JSONClient) Call(method string, params, resp interface{}) error { ...@@ -116,5 +116,4 @@ func (client *JSONClient) Call(method string, params, resp interface{}) error {
return types.JSONToPB(b, msg) return types.JSONToPB(b, msg)
} }
return json.Unmarshal(*cresp.Result, resp) return json.Unmarshal(*cresp.Result, resp)
} }
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package rpc_test package rpc_test
import ( import (
"fmt"
"testing" "testing"
"github.com/33cn/chain33/common" "github.com/33cn/chain33/common"
...@@ -113,3 +114,23 @@ func TestGetAllExecBalance(t *testing.T) { ...@@ -113,3 +114,23 @@ func TestGetAllExecBalance(t *testing.T) {
assert.Nil(t, res.ExecAccount) assert.Nil(t, res.ExecAccount)
assert.Equal(t, 0, len(res.ExecAccount)) assert.Equal(t, 0, len(res.ExecAccount))
} }
func TestCreateTransactionUserWrite(t *testing.T) {
mocker := testnode.New("--free--", nil)
defer mocker.Close()
mocker.Listen()
jrpcClient := getRPCClient(t, mocker)
req := &rpctypes.CreateTxIn{
Execer: "user.write",
ActionName: "write",
Payload: []byte(`{"key":"value"}`),
}
var res string
err := jrpcClient.Call("Chain33.CreateTransaction", req, &res)
assert.Nil(t, err)
tx := getTx(t, res)
assert.NotNil(t, tx)
fmt.Println(string(tx.Payload))
assert.Nil(t, err)
assert.Equal(t, `{"key":"value"}`, string(tx.Payload))
}
...@@ -59,6 +59,7 @@ var ( ...@@ -59,6 +59,7 @@ var (
ErrEmpty = errors.New("ErrEmpty") ErrEmpty = errors.New("ErrEmpty")
ErrSendSameToRecv = errors.New("ErrSendSameToRecv") ErrSendSameToRecv = errors.New("ErrSendSameToRecv")
ErrExecNameNotAllow = errors.New("ErrExecNameNotAllow") ErrExecNameNotAllow = errors.New("ErrExecNameNotAllow")
ErrExecNotFound = errors.New("ErrExecNotFound")
ErrLocalDBPerfix = errors.New("ErrLocalDBPerfix") ErrLocalDBPerfix = errors.New("ErrLocalDBPerfix")
ErrTimeout = errors.New("ErrTimeout") ErrTimeout = errors.New("ErrTimeout")
ErrBlockHeaderDifficulty = errors.New("ErrBlockHeaderDifficulty") ErrBlockHeaderDifficulty = errors.New("ErrBlockHeaderDifficulty")
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package types package types
import ( import (
"bytes"
"encoding/json" "encoding/json"
"math/rand" "math/rand"
"reflect" "reflect"
...@@ -137,8 +138,14 @@ func CallCreateTx(execName, action string, param Message) ([]byte, error) { ...@@ -137,8 +138,14 @@ func CallCreateTx(execName, action string, param Message) ([]byte, error) {
func CallCreateTxJSON(execName, action string, param json.RawMessage) ([]byte, error) { func CallCreateTxJSON(execName, action string, param json.RawMessage) ([]byte, error) {
exec := LoadExecutorType(execName) exec := LoadExecutorType(execName)
if exec == nil { if exec == nil {
execer := GetParaExecName([]byte(execName))
//找不到执行器,并且是user.xxx 的情况下
if bytes.HasPrefix(execer, UserKey) {
tx := &Transaction{Payload: param}
return FormatTxEncode(execName, tx)
}
tlog.Error("CallCreateTxJSON", "Error", "exec not found") tlog.Error("CallCreateTxJSON", "Error", "exec not found")
return nil, ErrNotSupport return nil, ErrExecNotFound
} }
// param is interface{type, var-nil}, check with nil always fail // param is interface{type, var-nil}, check with nil always fail
if param == nil { if param == nil {
......
...@@ -142,7 +142,8 @@ func GetParaExec(execer []byte) []byte { ...@@ -142,7 +142,8 @@ func GetParaExec(execer []byte) []byte {
return execer[len(GetTitle()):] return execer[len(GetTitle()):]
} }
func getParaExecName(execer []byte) []byte { //GetParaExecName 获取平行链上的执行器
func GetParaExecName(execer []byte) []byte {
if !bytes.HasPrefix(execer, ParaKey) { if !bytes.HasPrefix(execer, ParaKey) {
return execer return execer
} }
...@@ -162,7 +163,7 @@ func getParaExecName(execer []byte) []byte { ...@@ -162,7 +163,7 @@ func getParaExecName(execer []byte) []byte {
//GetRealExecName 获取真实的执行器name //GetRealExecName 获取真实的执行器name
func GetRealExecName(execer []byte) []byte { func GetRealExecName(execer []byte) []byte {
//平行链执行器,获取真实执行器的规则 //平行链执行器,获取真实执行器的规则
execer = getParaExecName(execer) execer = GetParaExecName(execer)
//平行链嵌套平行链是不被允许的 //平行链嵌套平行链是不被允许的
if bytes.HasPrefix(execer, ParaKey) { if bytes.HasPrefix(execer, ParaKey) {
return execer return execer
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment