Skip to content

Commit

Permalink
[#469]: fix: update proto marshaler from gogo to std
Browse files Browse the repository at this point in the history
  • Loading branch information
rustatian authored Feb 16, 2024
2 parents b2233ab + f146ca2 commit 59ce045
Show file tree
Hide file tree
Showing 9 changed files with 266 additions and 43 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ jobs:
cd tests
docker-compose -f env/docker-compose-temporal.yaml up -d --remove-orphans
go test -timeout 20m -v -race -cover -tags=debug -failfast -coverpkg=$(cat pkgs.txt) -coverprofile=./coverage-ci/rrt.out -covermode=atomic cancel_test.go child_test.go disaster_test.go general_test.go helpers.go hp_test.go interceptor_test.go metrics_test.go otlp_test.go query_test.go signal_test.go temporal_interceptor_plugin.go
go test -timeout 20m -v -race -cover -tags=debug -failfast -coverpkg=$(cat pkgs.txt) -coverprofile=./coverage-ci/rrt.out -covermode=atomic cancel_test.go child_test.go disaster_test.go general_test.go helpers.go hp_test.go interceptor_test.go metrics_test.go otlp_test.go query_test.go signal_test.go temporal_interceptor_plugin.go rpc_test.go
docker-compose -f env/docker-compose-temporal.yaml up -d --remove-orphans
Expand Down
10 changes: 4 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
module github.com/temporalio/roadrunner-temporal/v4

go 1.21

toolchain go1.21.6
go 1.22.0

require (
github.com/goccy/go-json v0.10.2
Expand Down Expand Up @@ -30,17 +28,17 @@ require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/gogo/protobuf v1.3.2
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/mock v1.7.0-rc.1 // indirect
github.com/golang/protobuf v1.5.3
github.com/golang/protobuf v1.5.3 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 // indirect
github.com/pborman/uuid v1.2.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.18.0
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.46.0 // indirect
github.com/prometheus/common v0.47.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/roadrunner-server/goridge/v3 v3.8.1
github.com/robfig/cron v1.2.0 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,8 @@ github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y=
github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ=
github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k=
github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
Expand Down
2 changes: 1 addition & 1 deletion go.work
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
go 1.21.1
go 1.22.0

use (
.
Expand Down
110 changes: 110 additions & 0 deletions go.work.sum

Large diffs are not rendered by default.

19 changes: 14 additions & 5 deletions rpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import (
"os"
"time"

"github.com/gogo/protobuf/jsonpb"
v1Proto "github.com/golang/protobuf/proto" //nolint:staticcheck
"github.com/roadrunner-server/api/v4/build/common/v1"
protoApi "github.com/roadrunner-server/api/v4/build/temporal/v1"
"github.com/roadrunner-server/errors"
Expand All @@ -20,6 +18,7 @@ import (
"go.temporal.io/sdk/workflow"
"go.uber.org/zap"
"google.golang.org/grpc/codes"
"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/proto"
)

Expand Down Expand Up @@ -57,7 +56,7 @@ func (r *rpc) RecordActivityHeartbeat(in RecordHeartbeatRequest, out *RecordHear
details := &commonpb.Payloads{}

if len(in.Details) != 0 {
if err := proto.Unmarshal(in.Details, v1Proto.MessageV2(details)); err != nil {
if err := proto.Unmarshal(in.Details, details); err != nil {
return err
}
}
Expand Down Expand Up @@ -251,8 +250,18 @@ func (r *rpc) DownloadWorkflowHistory(in *protoApi.ReplayRequest, out *protoApi.
hist.Events = append(hist.Events, event)
}

marshaler := jsonpb.Marshaler{}
err = marshaler.Marshal(file, &hist)
data, err := protojson.Marshal(&hist)
if err != nil {
out.Status = &common.Status{
Code: int32(codes.Internal),
Message: err.Error(),
}

r.plugin.log.Error("history marshal error", zap.Error(err))
return nil
}

_, err = file.Write(data)
if err != nil {
out.Status = &common.Status{
Code: int32(codes.Internal),
Expand Down
22 changes: 10 additions & 12 deletions tests/go.mod
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
module tests

go 1.21

toolchain go1.21.6
go 1.22.0

require (
github.com/fatih/color v1.16.0
github.com/pborman/uuid v1.2.1
github.com/roadrunner-server/config/v4 v4.6.7
github.com/roadrunner-server/config/v4 v4.6.8
github.com/roadrunner-server/endure/v2 v2.4.3
github.com/roadrunner-server/goridge/v3 v3.8.1
github.com/roadrunner-server/informer/v4 v4.3.14
github.com/roadrunner-server/logger/v4 v4.2.14
github.com/roadrunner-server/otel/v4 v4.3.12
github.com/roadrunner-server/resetter/v4 v4.0.21
github.com/roadrunner-server/rpc/v4 v4.2.15
github.com/roadrunner-server/informer/v4 v4.3.15
github.com/roadrunner-server/logger/v4 v4.2.15
github.com/roadrunner-server/otel/v4 v4.3.14
github.com/roadrunner-server/resetter/v4 v4.1.1
github.com/roadrunner-server/rpc/v4 v4.2.16
github.com/roadrunner-server/sdk/v4 v4.6.0
github.com/roadrunner-server/server/v4 v4.5.7
github.com/roadrunner-server/server/v4 v4.5.8
github.com/stretchr/testify v1.8.4
github.com/temporalio/roadrunner-temporal/v4 v4.5.9
github.com/temporalio/roadrunner-temporal/v4 v4.6.0
go.temporal.io/api v1.27.0
go.temporal.io/sdk v1.26.0-rc.2
go.uber.org/zap v1.26.0
Expand Down Expand Up @@ -59,7 +57,7 @@ require (
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.18.0 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.46.0 // indirect
github.com/prometheus/common v0.47.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/roadrunner-server/api/v4 v4.10.0 // indirect
github.com/roadrunner-server/errors v1.4.0 // indirect
Expand Down
32 changes: 16 additions & 16 deletions tests/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,8 @@ github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y=
github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ=
github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k=
github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
Expand All @@ -196,28 +196,28 @@ github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
github.com/roadrunner-server/api/v4 v4.10.0 h1:tF6vmA6MaQyOL/GQQc+nyj356oX3UoQBd+SXNtsu+bU=
github.com/roadrunner-server/api/v4 v4.10.0/go.mod h1:ou9QviOd5dxl3to1+BV4iZ3lnMLxuE/HqESNW5PDnw0=
github.com/roadrunner-server/config/v4 v4.6.7 h1:Ak6e8iLkT6nbbDANXk0gSXHvm9OjA04pJZ/ErJQdyqE=
github.com/roadrunner-server/config/v4 v4.6.7/go.mod h1:0xhw9NBCb08vQFW3rui9WxHz2hNcr68Jd8HohnFZihw=
github.com/roadrunner-server/config/v4 v4.6.8 h1:dxG+VdPL5+7JG1BMjvs21sqZdqEAr7EFuLxk3XEhR8Q=
github.com/roadrunner-server/config/v4 v4.6.8/go.mod h1:Bh7SBen7Bb38ex8j1F3xAcvARsLsxbLbLCVw/vZBd8c=
github.com/roadrunner-server/endure/v2 v2.4.3 h1:R9DdsLiLjtSFivZ1HKk/1eDZ0TYaKHQzakVwz9D2hto=
github.com/roadrunner-server/endure/v2 v2.4.3/go.mod h1:4n3PdwZ3h/IRL2enDGvEVXtaQgqRnZ74VOyZtOJq528=
github.com/roadrunner-server/errors v1.4.0 h1:Odjg3VZrj1q5Y8ILwoN+JgERyv0pkhrWPNOM4h68iQ8=
github.com/roadrunner-server/errors v1.4.0/go.mod h1:78PvraAFj+Sxy5nDmo0S+h6rEMLFIDszWZxA3B0sPAs=
github.com/roadrunner-server/goridge/v3 v3.8.1 h1:mdS5lDKQwPuVJ2jwW7l5cngJNJiie7xEGwpgw7a6CuQ=
github.com/roadrunner-server/goridge/v3 v3.8.1/go.mod h1:L5UkNzD8aKLz6TzpqmmiHOJ6EnsadsWEYNoqK/4qoK0=
github.com/roadrunner-server/informer/v4 v4.3.14 h1:eJWI079rMBJBkYVWwtFdkozGw9hwI2iBfl/E5LzVfSM=
github.com/roadrunner-server/informer/v4 v4.3.14/go.mod h1:Ir5FsF7/BndYNtzLJvRz/4sJaMGe3jojDDG6FAWeeXk=
github.com/roadrunner-server/logger/v4 v4.2.14 h1:BVJqmdsI+tIkspSyTd5MsqvHX2w2oxGYjRTSh5kDL1w=
github.com/roadrunner-server/logger/v4 v4.2.14/go.mod h1:z8ainOGoCNey7vEAEfiVAMYmOmfAUoN3z13Hc0co1Ho=
github.com/roadrunner-server/otel/v4 v4.3.12 h1:lev5ItbV8totCJOYh3QFlbeMO75rC2bt4eTgCjXTgy4=
github.com/roadrunner-server/otel/v4 v4.3.12/go.mod h1:UKLW0z4eCk4AIgaCpWOaK8OE34uf650cDghuDscmzxc=
github.com/roadrunner-server/resetter/v4 v4.0.21 h1:C3BF7YLTcZfqTKUZUudaTQ/IUfinz4VmshTEhywipx0=
github.com/roadrunner-server/resetter/v4 v4.0.21/go.mod h1:yn/1UXSceuBQ+R+loXSKqmKtx6htcVRza2Ifni0i3FA=
github.com/roadrunner-server/rpc/v4 v4.2.15 h1:cGKsF2tYqe8k+oRM3aWsbddpihY1vhjd9n6/w6AqEqA=
github.com/roadrunner-server/rpc/v4 v4.2.15/go.mod h1:Hxduua91f9pAkMzoJzG+a5Ep3azHeBsp2I842A6X+mQ=
github.com/roadrunner-server/informer/v4 v4.3.15 h1:ub2WGk57R4x4TsPb47XSwpu07+lsUuTAMrimTaIr7OY=
github.com/roadrunner-server/informer/v4 v4.3.15/go.mod h1:kc7B+kH5pc04NHKWcZLTSnA4n174Cw105s4AzDBHgUg=
github.com/roadrunner-server/logger/v4 v4.2.15 h1:Tltmbn3c/Sz/FjSzmVk/DCy57JELvVdT41xKEXZJh5M=
github.com/roadrunner-server/logger/v4 v4.2.15/go.mod h1:3OHfFMDzhXUYel/lpfj1hfSHHcFaJhQfE47F2ZYEA2A=
github.com/roadrunner-server/otel/v4 v4.3.14 h1:s7GtARlarQ/XWVUIy7KSVAxj+V7iewKjbqWkifp1gz0=
github.com/roadrunner-server/otel/v4 v4.3.14/go.mod h1:sLkb1eye9OXTi/X/BVSRUMD6zRA9qazWAWCWW14GgNo=
github.com/roadrunner-server/resetter/v4 v4.1.1 h1:5HtRFDjpBFTjTfqM98egVyisc2B1vpynzfjSa6WKvWU=
github.com/roadrunner-server/resetter/v4 v4.1.1/go.mod h1:uJwGNu+Ktodo3JGAOEiz+EmvgB+vorTbR2HDL7bWR3M=
github.com/roadrunner-server/rpc/v4 v4.2.16 h1:oIjQY0iYaH4Le8YPRBWq8JaSKwngunkSW+GbR+/9JzY=
github.com/roadrunner-server/rpc/v4 v4.2.16/go.mod h1:xilTZTP+mTaYqjqRmt3ePmz1vJqEsZQNRzQtKwuYIJU=
github.com/roadrunner-server/sdk/v4 v4.6.0 h1:dXMN7V8+VKjQAZamhKBizPGSqrpfAfVG6r4OCF66hNY=
github.com/roadrunner-server/sdk/v4 v4.6.0/go.mod h1:YzRn2S947MqcnBcOuwu04CpAhsQGf6JBf+xY+njqu5o=
github.com/roadrunner-server/server/v4 v4.5.7 h1:F337i6cGmwssle8jrkjwOEmYd230wny6wGnFIr17yrQ=
github.com/roadrunner-server/server/v4 v4.5.7/go.mod h1:ca/vVreZ/w7bta1NcJNEysyEoyKoYkh/n0cILed786Y=
github.com/roadrunner-server/server/v4 v4.5.8 h1:pc/Bzaz0APk0rESo7OMybtFcNx3EOzOL95f+Yq7RaRc=
github.com/roadrunner-server/server/v4 v4.5.8/go.mod h1:vueybZ3U+noYb+o2t9QIzOUzRpZN+IcfY45rcysfEdE=
github.com/roadrunner-server/tcplisten v1.4.0 h1:yWo09zktv/CSV6VywLfw4pwNcUchgTiIrW4uIICtO5M=
github.com/roadrunner-server/tcplisten v1.4.0/go.mod h1:A6+VSnW2ETGnN/e/CMdP63ZXqQDaC0UDMU6QmyuB0yM=
github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
Expand Down
108 changes: 108 additions & 0 deletions tests/rpc_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
package tests

import (
"context"
"net"
"net/rpc"
"path"
"sync"
"testing"
"time"

protoApi "github.com/roadrunner-server/api/v4/build/temporal/v1"
goridgeRpc "github.com/roadrunner-server/goridge/v3/pkg/rpc"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.temporal.io/api/common/v1"
"go.temporal.io/sdk/client"
)

const (
download string = "temporal.DownloadWorkflowHistory"
replay string = "temporal.ReplayFromJSON"
)

func Test_RPC_Methods(t *testing.T) {
stopCh := make(chan struct{}, 1)
wg := &sync.WaitGroup{}
wg.Add(1)
s := NewTestServer(t, stopCh, wg)

w, err := s.Client.ExecuteWorkflow(
context.Background(),
client.StartWorkflowOptions{
TaskQueue: "default",
},
"HistoryLengthWorkflow")
assert.NoError(t, err)

time.Sleep(time.Second)
var result any

ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
assert.NoError(t, w.Get(ctx, &result))

res := []float64{3, 8, 8, 15}
out := result.([]interface{})

for i := 0; i < len(res); i++ {
if res[i] != out[i].(float64) {
t.Fail()
}
}

we, err := s.Client.DescribeWorkflowExecution(context.Background(), w.GetID(), w.GetRunID())
assert.NoError(t, err)
assert.Equal(t, "Completed", we.WorkflowExecutionInfo.Status.String())

time.Sleep(time.Second)
tmp := path.Join(t.TempDir(), "replay.json")

t.Run("downloadWFHistory", downloadWFHistory("127.0.0.1:6001", w.GetID(), w.GetRunID(), "HistoryLengthWorkflow", tmp))
t.Run("replayFromJSON", replayFromJSON("127.0.0.1:6001", tmp, "HistoryLengthWorkflow"))

stopCh <- struct{}{}
wg.Wait()
time.Sleep(time.Second)
}

func downloadWFHistory(address, wid, rid, wname, path string) func(t *testing.T) {
return func(t *testing.T) {
conn, err := net.Dial("tcp", address)
require.NoError(t, err)
client := rpc.NewClientWithCodec(goridgeRpc.NewClientCodec(conn))

req := &protoApi.ReplayRequest{
SavePath: path,
WorkflowType: &common.WorkflowType{
Name: wname,
},
WorkflowExecution: &common.WorkflowExecution{
WorkflowId: wid,
RunId: rid,
},
}
resp := &protoApi.ReplayResponse{}
err = client.Call(download, req, resp)
require.NoError(t, err)
}
}

func replayFromJSON(address, path, wname string) func(t *testing.T) {
return func(t *testing.T) {
conn, err := net.Dial("tcp", address)
require.NoError(t, err)
client := rpc.NewClientWithCodec(goridgeRpc.NewClientCodec(conn))

req := &protoApi.ReplayRequest{
SavePath: path,
WorkflowType: &common.WorkflowType{
Name: wname,
},
}
resp := &protoApi.ReplayResponse{}
err = client.Call(replay, req, resp)
require.NoError(t, err)
}
}

0 comments on commit 59ce045

Please sign in to comment.