Skip to content

Commit

Permalink
supporting self contained icode, remove go src mount
Browse files Browse the repository at this point in the history
  • Loading branch information
junbeomlee committed Aug 7, 2018
1 parent a6ec52f commit e493552
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 40 deletions.
1 change: 1 addition & 0 deletions _example/example.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ func main() {

config := tesseract.ContainerConfig{
Directory: os.Getenv("GOPATH") + "/src/github.com/it-chain/tesseract/mock",
Url: "github.com/mock",
}

c, err := container.Create(config)
Expand Down
1 change: 1 addition & 0 deletions container.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ type ContainerFactory interface {

type ContainerConfig struct {
Name string
Url string
Directory string
ContainerImage ContainerImage
language string // ENUM 으로 대체하면 좋음
Expand Down
1 change: 1 addition & 0 deletions container/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ func Create(config tesseract.ContainerConfig) (DockerContainer, error) {
res, err := docker.CreateContainer(
containerImage,
config.Directory,
config.Url,
port,
)

Expand Down
8 changes: 4 additions & 4 deletions docker/docker.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"github.com/it-chain/tesseract"
)

func CreateContainer(containerImage tesseract.ContainerImage, dir string, port string) (container.ContainerCreateCreatedBody, error) {
func CreateContainer(containerImage tesseract.ContainerImage, srcPath string, destPath string, port string) (container.ContainerCreateCreatedBody, error) {

GOPATH := os.Getenv("GOPATH")
res := container.ContainerCreateCreatedBody{}
Expand Down Expand Up @@ -45,7 +45,7 @@ func CreateContainer(containerImage tesseract.ContainerImage, dir string, port s
Cmd: []string{
"go",
"run",
"/icode/" + "icode.go",
"/go/src/" + destPath + "/icode.go",
"-p" + port,
},
Tty: true,
Expand All @@ -58,8 +58,8 @@ func CreateContainer(containerImage tesseract.ContainerImage, dir string, port s
CapAdd: []string{"SYS_ADMIN"},
PortBindings: portBindings,
Binds: []string{
GOPATH + "/src:/go/src",
dir + ":/icode"},
srcPath + ":/go/src/" + destPath,
},
}, nil, "")

if err != nil {
Expand Down
6 changes: 4 additions & 2 deletions docker/docker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ func TestCreateContainerWithCellCode(t *testing.T) {
GOPATH := os.Getenv("GOPATH")
res, err := docker.CreateContainer(
tesseract.GetDefaultImage(),
GOPATH+"/src/github.com/it-chain/tesseract/container/mock",
GOPATH+"/src/github.com/it-chain/tesseract/mock",
"github.com/mock",
"50005",
)
defer func() {
Expand All @@ -37,7 +38,8 @@ func TestStartContainer(t *testing.T) {
GOPATH := os.Getenv("GOPATH")
res, err := docker.CreateContainer(
tesseract.GetDefaultImage(),
GOPATH+"/src/github.com/it-chain/tesseract/container/mock",
GOPATH+"/src/github.com/it-chain/tesseract/mock",
"github.com/mock",
"50005",
)

Expand Down
62 changes: 30 additions & 32 deletions mock/handler/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func (*HandlerExample) Versions() []string {
return vers
}

func (*HandlerExample) Handle(request *pb.Request, cell *sdk.Cell) (*pb.Response, error) {
func (*HandlerExample) Handle(request *pb.Request, cell *sdk.Cell) *pb.Response {
switch request.Type {
case "invoke":
return handleInvoke(request, cell)
Expand All @@ -51,99 +51,97 @@ func (*HandlerExample) Handle(request *pb.Request, cell *sdk.Cell) (*pb.Response
fmt.Println("req : " + request.Uuid)
if request.Uuid == "0" {
cell.PutData("test", []byte("0"))
return responseSuccess(request, []byte(string(0))), nil
return responseSuccess(request, []byte(string(0)))
}
data, err := cell.GetData("test")
if err != nil {
return responseError(request, err), err
return responseError(request, err)
}
if len(data) == 0 {
err := errors.New("no data err")
return responseError(request, err), err
return responseError(request, err)
}
strData := string(data)
intData, err := strconv.Atoi(strData)
if err != nil {
return responseError(request, err), err
return responseError(request, err)
}
intData = intData + 1
changeData := strconv.Itoa(intData)
err = cell.PutData("test", []byte(changeData))
if err != nil {
return responseError(request, err), err
return responseError(request, err)
}
return responseSuccess(request, []byte(changeData)), nil
return responseSuccess(request, []byte(changeData))
default:
logger.Fatal(nil, "unknown request type")
logger.Debug(nil, "unknown request type")
err := errors.New("unknown request type")
return responseError(request, err), err
return responseError(request, err)
}
}
func handleQuery(request *pb.Request, cell *sdk.Cell) (*pb.Response, error) {
func handleQuery(request *pb.Request, cell *sdk.Cell) *pb.Response {
switch request.FunctionName {
case "getA":
b, err := cell.GetData("A")
if err != nil {
return responseError(request, err), err
return responseError(request, err)
}
return responseSuccess(request, b), nil
return responseSuccess(request, b)

default:
err := errors.New("unknown query method")
return responseError(request, err), err
return responseError(request, err)
}
}
func handleInvoke(request *pb.Request, cell *sdk.Cell) (*pb.Response, error) {
func handleInvoke(request *pb.Request, cell *sdk.Cell) *pb.Response {
switch request.FunctionName {
case "initA":
err := cell.PutData("A", []byte("0"))
if err != nil {
return responseError(request, err), err
return responseError(request, err)
}
return responseSuccess(request, nil), nil
return responseSuccess(request, nil)
case "incA":
data, err := cell.GetData("A")
if err != nil {
return responseError(request, err), err
return responseError(request, err)
}
if len(data) == 0 {
err := errors.New("no data err")
return responseError(request, err), err
return responseError(request, err)
}
strData := string(data)
intData, err := strconv.Atoi(strData)
if err != nil {
return responseError(request, err), err
return responseError(request, err)
}
intData++
changeData := strconv.Itoa(intData)
err = cell.PutData("A", []byte(changeData))
if err != nil {
return responseError(request, err), err
return responseError(request, err)
}
return responseSuccess(request, nil), nil
return responseSuccess(request, nil)
default:
err := errors.New("unknown invoke method")
return responseError(request, err), err
return responseError(request, err)
}
}

func responseError(request *pb.Request, err error) *pb.Response {
return &pb.Response{
Uuid: request.Uuid,
Type: request.Type,
Result: false,
Data: nil,
Error: err.Error(),
Uuid: request.Uuid,
Type: request.Type,
Data: nil,
Error: err.Error(),
}
}

func responseSuccess(request *pb.Request, data []byte) *pb.Response {
return &pb.Response{
Uuid: request.Uuid,
Type: request.Type,
Result: true,
Data: data,
Error: "",
Uuid: request.Uuid,
Type: request.Type,
Data: data,
Error: "",
}
}
6 changes: 4 additions & 2 deletions mock/icode.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// +build ignore

/*
* Copyright 2018 It-chain
*
Expand All @@ -23,9 +25,9 @@ import (
"strconv"

"github.com/it-chain/sdk"
"github.com/it-chain/sdk/example/handler"
"github.com/it-chain/sdk/logger"
"github.com/jessevdk/go-flags"
"github.com/mock/handler"
)

var opts struct {
Expand All @@ -34,7 +36,7 @@ var opts struct {

func main() {

logger.EnableFileLogger(true, "./icode.log")
logger.EnableFileLogger(true, "./log/icode.log")
parser := flags.NewParser(&opts, flags.Default)

_, err := parser.Parse()
Expand Down

0 comments on commit e493552

Please sign in to comment.