mirror of
https://github.com/foomo/gotsrpc.git
synced 2025-10-16 12:35:35 +00:00
test: add types test
This commit is contained in:
parent
e0841a5713
commit
29b313ea6f
11
example/types/gotsrpc.yml
Normal file
11
example/types/gotsrpc.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
module:
|
||||||
|
name: github.com/foomo/gotsrpc/v2
|
||||||
|
path: ../../
|
||||||
|
|
||||||
|
targets:
|
||||||
|
basic:
|
||||||
|
services:
|
||||||
|
/service: Service
|
||||||
|
package: github.com/foomo/gotsrpc/v2/example/types
|
||||||
|
tsrpc:
|
||||||
|
- Service
|
||||||
107
example/types/gotsrpc_gen.go
Normal file
107
example/types/gotsrpc_gen.go
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
|
||||||
|
|
||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
io "io"
|
||||||
|
http "net/http"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
gotsrpc "github.com/foomo/gotsrpc/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ServiceGoTSRPCProxyString = "String"
|
||||||
|
ServiceGoTSRPCProxyStrings = "Strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ServiceGoTSRPCProxy struct {
|
||||||
|
EndPoint string
|
||||||
|
service Service
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewDefaultServiceGoTSRPCProxy(service Service) *ServiceGoTSRPCProxy {
|
||||||
|
return NewServiceGoTSRPCProxy(service, "/service")
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewServiceGoTSRPCProxy(service Service, endpoint string) *ServiceGoTSRPCProxy {
|
||||||
|
return &ServiceGoTSRPCProxy{
|
||||||
|
EndPoint: endpoint,
|
||||||
|
service: service,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ServeHTTP exposes your service
|
||||||
|
func (p *ServiceGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Method == http.MethodOptions {
|
||||||
|
return
|
||||||
|
} else if r.Method != http.MethodPost {
|
||||||
|
gotsrpc.ErrorMethodNotAllowed(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer io.Copy(io.Discard, r.Body) // Drain Request Body
|
||||||
|
|
||||||
|
funcName := gotsrpc.GetCalledFunc(r, p.EndPoint)
|
||||||
|
callStats, _ := gotsrpc.GetStatsForRequest(r)
|
||||||
|
callStats.Func = funcName
|
||||||
|
callStats.Package = "github.com/foomo/gotsrpc/v2/example/types"
|
||||||
|
callStats.Service = "Service"
|
||||||
|
switch funcName {
|
||||||
|
case ServiceGoTSRPCProxyString:
|
||||||
|
var (
|
||||||
|
args []interface{}
|
||||||
|
rets []interface{}
|
||||||
|
)
|
||||||
|
var (
|
||||||
|
arg_a string
|
||||||
|
)
|
||||||
|
args = []interface{}{&arg_a}
|
||||||
|
if err := gotsrpc.LoadArgs(&args, callStats, r); err != nil {
|
||||||
|
gotsrpc.ErrorCouldNotLoadArgs(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
executionStart := time.Now()
|
||||||
|
rw := gotsrpc.ResponseWriter{ResponseWriter: w}
|
||||||
|
p.service.String(&rw, r, arg_a)
|
||||||
|
callStats.Execution = time.Since(executionStart)
|
||||||
|
if rw.Status() == http.StatusOK {
|
||||||
|
rets = []interface{}{}
|
||||||
|
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
|
||||||
|
gotsrpc.ErrorCouldNotReply(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gotsrpc.Monitor(w, r, args, rets, callStats)
|
||||||
|
return
|
||||||
|
case ServiceGoTSRPCProxyStrings:
|
||||||
|
var (
|
||||||
|
args []interface{}
|
||||||
|
rets []interface{}
|
||||||
|
)
|
||||||
|
var (
|
||||||
|
arg_a string
|
||||||
|
arg_b string
|
||||||
|
)
|
||||||
|
args = []interface{}{&arg_a, &arg_b}
|
||||||
|
if err := gotsrpc.LoadArgs(&args, callStats, r); err != nil {
|
||||||
|
gotsrpc.ErrorCouldNotLoadArgs(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
executionStart := time.Now()
|
||||||
|
rw := gotsrpc.ResponseWriter{ResponseWriter: w}
|
||||||
|
p.service.Strings(&rw, r, arg_a, arg_b)
|
||||||
|
callStats.Execution = time.Since(executionStart)
|
||||||
|
if rw.Status() == http.StatusOK {
|
||||||
|
rets = []interface{}{}
|
||||||
|
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
|
||||||
|
gotsrpc.ErrorCouldNotReply(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gotsrpc.Monitor(w, r, args, rets, callStats)
|
||||||
|
return
|
||||||
|
default:
|
||||||
|
gotsrpc.ClearStats(r)
|
||||||
|
gotsrpc.ErrorFuncNotFound(w)
|
||||||
|
}
|
||||||
|
}
|
||||||
57
example/types/gotsrpcclient_gen.go
Normal file
57
example/types/gotsrpcclient_gen.go
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
|
||||||
|
|
||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
go_context "context"
|
||||||
|
go_net_http "net/http"
|
||||||
|
|
||||||
|
gotsrpc "github.com/foomo/gotsrpc/v2"
|
||||||
|
pkg_errors "github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ServiceGoTSRPCClient interface {
|
||||||
|
String(ctx go_context.Context, a string) (clientErr error)
|
||||||
|
Strings(ctx go_context.Context, a string, b string) (clientErr error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type HTTPServiceGoTSRPCClient struct {
|
||||||
|
URL string
|
||||||
|
EndPoint string
|
||||||
|
Client gotsrpc.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewDefaultServiceGoTSRPCClient(url string) *HTTPServiceGoTSRPCClient {
|
||||||
|
return NewServiceGoTSRPCClient(url, "/service")
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewServiceGoTSRPCClient(url string, endpoint string) *HTTPServiceGoTSRPCClient {
|
||||||
|
return NewServiceGoTSRPCClientWithClient(url, endpoint, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewServiceGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPServiceGoTSRPCClient {
|
||||||
|
return &HTTPServiceGoTSRPCClient{
|
||||||
|
URL: url,
|
||||||
|
EndPoint: endpoint,
|
||||||
|
Client: gotsrpc.NewClientWithHttpClient(client),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (tsc *HTTPServiceGoTSRPCClient) String(ctx go_context.Context, a string) (clientErr error) {
|
||||||
|
args := []interface{}{a}
|
||||||
|
reply := []interface{}{}
|
||||||
|
clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "String", args, reply)
|
||||||
|
if clientErr != nil {
|
||||||
|
clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy String")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (tsc *HTTPServiceGoTSRPCClient) Strings(ctx go_context.Context, a string, b string) (clientErr error) {
|
||||||
|
args := []interface{}{a, b}
|
||||||
|
reply := []interface{}{}
|
||||||
|
clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Strings", args, reply)
|
||||||
|
if clientErr != nil {
|
||||||
|
clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Strings")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
10
example/types/handler.go
Normal file
10
example/types/handler.go
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Handler struct{}
|
||||||
|
|
||||||
|
func (h *Handler) String(w http.ResponseWriter, r *http.Request, a string) {}
|
||||||
|
func (h *Handler) Strings(w http.ResponseWriter, r *http.Request, a, b string) {}
|
||||||
19
example/types/handler_test.go
Normal file
19
example/types/handler_test.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package service_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http/httptest"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
service "github.com/foomo/gotsrpc/v2/example/types"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestHandler(t *testing.T) {
|
||||||
|
s := httptest.NewServer(service.NewDefaultServiceGoTSRPCProxy(&service.Handler{}))
|
||||||
|
c := service.NewDefaultServiceGoTSRPCClient(s.URL)
|
||||||
|
c.Client.SetTransportHttpClient(s.Client())
|
||||||
|
|
||||||
|
require.NoError(t, c.String(t.Context(), "s"))
|
||||||
|
|
||||||
|
require.NoError(t, c.Strings(t.Context(), "a", "b"))
|
||||||
|
}
|
||||||
10
example/types/service.go
Normal file
10
example/types/service.go
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Service interface {
|
||||||
|
String(w http.ResponseWriter, r *http.Request, a string)
|
||||||
|
Strings(w http.ResponseWriter, r *http.Request, a, b string)
|
||||||
|
}
|
||||||
231
example/types/vo.go
Normal file
231
example/types/vo.go
Normal file
@ -0,0 +1,231 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
type IntType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
IntAType IntType = 1
|
||||||
|
IntBType IntType = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Int32Type int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Int32AType Int32Type = 1
|
||||||
|
Int32BType Int32Type = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Int64Type int64
|
||||||
|
|
||||||
|
const (
|
||||||
|
Int64AType Int64Type = 1
|
||||||
|
Int64BType Int64Type = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type UIntType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
UIntAType UIntType = 1
|
||||||
|
UIntBType UIntType = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type UInt32Type uint32
|
||||||
|
|
||||||
|
const (
|
||||||
|
UInt32AType UInt32Type = 1
|
||||||
|
UInt32BType UInt32Type = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type UInt64Type uint64
|
||||||
|
|
||||||
|
const (
|
||||||
|
UInt64AType UInt64Type = 1
|
||||||
|
UInt64BType UInt64Type = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Float32Type float32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Float32AType Float32Type = 1
|
||||||
|
Float32BType Float32Type = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Float64Type float64
|
||||||
|
|
||||||
|
const (
|
||||||
|
Float64AType Float64Type = 1
|
||||||
|
Float64BType Float64Type = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type StringType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
StringAType StringType = "A"
|
||||||
|
StringBType StringType = "B"
|
||||||
|
)
|
||||||
|
|
||||||
|
type IntTypeMapKey int
|
||||||
|
|
||||||
|
const (
|
||||||
|
IntATypeMapKey IntTypeMapKey = 1
|
||||||
|
IntBTypeMapKey IntTypeMapKey = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Int32TypeMapKey int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Int32ATypeMapKey Int32TypeMapKey = 1
|
||||||
|
Int32BTypeMapKey Int32TypeMapKey = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Int64TypeMapKey int64
|
||||||
|
|
||||||
|
const (
|
||||||
|
Int64ATypeMapKey Int64TypeMapKey = 1
|
||||||
|
Int64BTypeMapKey Int64TypeMapKey = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type UIntTypeMapKey int
|
||||||
|
|
||||||
|
const (
|
||||||
|
UIntATypeMapKey UIntTypeMapKey = 1
|
||||||
|
UIntBTypeMapKey UIntTypeMapKey = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type UInt32TypeMapKey uint32
|
||||||
|
|
||||||
|
const (
|
||||||
|
UInt32ATypeMapKey UInt32TypeMapKey = 1
|
||||||
|
UInt32BTypeMapKey UInt32TypeMapKey = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type UInt64TypeMapKey uint64
|
||||||
|
|
||||||
|
const (
|
||||||
|
UInt64ATypeMapKey UInt64TypeMapKey = 1
|
||||||
|
UInt64BTypeMapKey UInt64TypeMapKey = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Float32TypeMapKey float32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Float32ATypeMapKey Float32TypeMapKey = 1
|
||||||
|
Float32BTypeMapKey Float32TypeMapKey = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Float64TypeMapKey float64
|
||||||
|
|
||||||
|
const (
|
||||||
|
Float64ATypeMapKey Float64TypeMapKey = 1
|
||||||
|
Float64BTypeMapKey Float64TypeMapKey = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type StringTypeMapKey string
|
||||||
|
|
||||||
|
const (
|
||||||
|
StringATypeMapKey StringTypeMapKey = "A"
|
||||||
|
StringBTypeMapKey StringTypeMapKey = "B"
|
||||||
|
)
|
||||||
|
|
||||||
|
type IntTypeMapValue int
|
||||||
|
|
||||||
|
const (
|
||||||
|
IntATypeMapValue IntTypeMapValue = 1
|
||||||
|
IntBTypeMapValue IntTypeMapValue = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Int32TypeMapValue int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Int32ATypeMapValue Int32TypeMapValue = 1
|
||||||
|
Int32BTypeMapValue Int32TypeMapValue = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Int64TypeMapValue int64
|
||||||
|
|
||||||
|
const (
|
||||||
|
Int64ATypeMapValue Int64TypeMapValue = 1
|
||||||
|
Int64BTypeMapValue Int64TypeMapValue = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type UIntTypeMapValue int
|
||||||
|
|
||||||
|
const (
|
||||||
|
UIntATypeMapValue UIntTypeMapValue = 1
|
||||||
|
UIntBTypeMapValue UIntTypeMapValue = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type UInt32TypeMapValue uint32
|
||||||
|
|
||||||
|
const (
|
||||||
|
UInt32ATypeMapValue UInt32TypeMapValue = 1
|
||||||
|
UInt32BTypeMapValue UInt32TypeMapValue = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type UInt64TypeMapValue uint64
|
||||||
|
|
||||||
|
const (
|
||||||
|
UInt64ATypeMapValue UInt64TypeMapValue = 1
|
||||||
|
UInt64BTypeMapValue UInt64TypeMapValue = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Float32TypeMapValue float32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Float32ATypeMapValue Float32TypeMapValue = 1
|
||||||
|
Float32BTypeMapValue Float32TypeMapValue = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type Float64TypeMapValue float64
|
||||||
|
|
||||||
|
const (
|
||||||
|
Float64ATypeMapValue Float64TypeMapValue = 1
|
||||||
|
Float64BTypeMapValue Float64TypeMapValue = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
type StringTypeMapValue string
|
||||||
|
|
||||||
|
const (
|
||||||
|
StringATypeMapValue StringTypeMapValue = "A"
|
||||||
|
StringBTypeMapValue StringTypeMapValue = "B"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
IntTypeMapTyped map[IntTypeMapKey]IntTypeMapValue
|
||||||
|
Int32TypeMapTyped map[Int32TypeMapKey]Int32TypeMapValue
|
||||||
|
Int64TypeMapTyped map[Int64TypeMapKey]Int64TypeMapValue
|
||||||
|
UIntTypeMapTyped map[UIntTypeMapKey]UIntTypeMapValue
|
||||||
|
UInt32TypeMapTyped map[UInt32TypeMapKey]UInt32TypeMapValue
|
||||||
|
UInt64TypeMapTyped map[UInt64TypeMapKey]UInt64TypeMapValue
|
||||||
|
Float32TypeMapTyped map[Float32TypeMapKey]Float32TypeMapValue
|
||||||
|
Float64TypeMapTyped map[Float64TypeMapKey]Float64TypeMapValue
|
||||||
|
StringTypeMapTyped map[StringTypeMapKey]StringTypeMapValue
|
||||||
|
)
|
||||||
|
|
||||||
|
type Struct struct {
|
||||||
|
Int int
|
||||||
|
Int32 int32
|
||||||
|
Int64 int64
|
||||||
|
UInt uint
|
||||||
|
UInt32 uint32
|
||||||
|
UInt64 uint64
|
||||||
|
Float32 float32
|
||||||
|
Float64 float64
|
||||||
|
String string
|
||||||
|
Interface interface{}
|
||||||
|
IntTypeMapTyped map[IntTypeMapKey]IntTypeMapValue
|
||||||
|
Int32TypeMapTyped map[Int32TypeMapKey]Int32TypeMapValue
|
||||||
|
Int64TypeMapTyped map[Int64TypeMapKey]Int64TypeMapValue
|
||||||
|
UIntTypeMapTyped map[UIntTypeMapKey]UIntTypeMapValue
|
||||||
|
UInt32TypeMapTyped map[UInt32TypeMapKey]UInt32TypeMapValue
|
||||||
|
UInt64TypeMapTyped map[UInt64TypeMapKey]UInt64TypeMapValue
|
||||||
|
Float32TypeMapTyped map[Float32TypeMapKey]Float32TypeMapValue
|
||||||
|
Float64TypeMapTyped map[Float64TypeMapKey]Float64TypeMapValue
|
||||||
|
StringTypeMapTyped map[StringTypeMapKey]StringTypeMapValue
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
NestedType map[NestedTypeKey]map[NestedTypeSubKey][]*NestedTypeSubType
|
||||||
|
NestedTypeKey string
|
||||||
|
NestedTypeSubKey string
|
||||||
|
NestedTypeSubType struct{}
|
||||||
|
)
|
||||||
Loading…
Reference in New Issue
Block a user