Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added gaminganywhere client and generate c++ helloworld proto #104

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
name: Protoc Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Install protoc
run: |
Expand All @@ -51,7 +51,7 @@ jobs:
chmod +x $HOME/.local/bin/protoc
rm -f $PROTOC_ZIP.zip

- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install pipenv
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Setup Go 1.18
uses: actions/setup-go@v4
uses: actions/setup-go@v5
with:
go-version: 1.18
- name: Checkout code into go module directory
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Lint with golangci-lint
uses: golangci/golangci-lint-action@v3.6.0
uses: golangci/golangci-lint-action@v3.7.0
with:
args: --timeout 5m
skip-cache: true
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/linters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@ jobs:
name: Spellcheck
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: rojopolis/spellcheck-github-actions@0.33.1
- uses: actions/checkout@v4
- uses: rojopolis/spellcheck-github-actions@0.35.0
name: Spellcheck
with:
config_path: .github/configs/spellcheck.yml
commitlint:
name: Commitlint
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
node-version: "14"

Expand All @@ -39,7 +39,7 @@ jobs:
name: LinkCheck
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
use-quiet-mode: "yes"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0

Expand Down
13 changes: 6 additions & 7 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ replace (
require (
github.com/sirupsen/logrus v1.9.3
github.com/vhive-serverless/vSwarm/utils/tracing/go v0.0.0-20230802102142-dbfda39fc27c
google.golang.org/grpc v1.57.0
google.golang.org/grpc v1.60.0
google.golang.org/protobuf v1.31.0
)

require (
cloud.google.com/go/compute v1.23.0 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
github.com/containerd/containerd v1.7.3 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
Expand All @@ -31,9 +31,8 @@ require (
go.opentelemetry.io/otel/metric v1.16.0 // indirect
go.opentelemetry.io/otel/sdk v1.14.0 // indirect
go.opentelemetry.io/otel/trace v1.16.0 // indirect
golang.org/x/net v0.13.0 // indirect
golang.org/x/oauth2 v0.10.0 // indirect
golang.org/x/sys v0.10.0 // indirect
golang.org/x/text v0.11.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 // indirect
)
31 changes: 15 additions & 16 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA=
cloud.google.com/go v0.99.0 h1:y/cM2iqGgGi5D5DQZl6D9STN/3dR/Vx5Mp8s752oJTY=
cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY=
cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k=
github.com/containerd/containerd v1.7.3 h1:cKwYKkP1eTj54bP3wCdXXBymmKRQMrWjkLSWZZJDa8o=
github.com/containerd/containerd v1.7.3/go.mod h1:32FOM4/O0RkNg7AjQj3hDzN9cUGtu+HMvaKUNiqCZB8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8=
github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
Expand Down Expand Up @@ -42,21 +42,20 @@ go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvx
go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM=
go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs=
go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0=
golang.org/x/net v0.13.0 h1:Nvo8UFsZ8X3BhAC9699Z1j7XQ3rsZnUUm7jfBEk1ueY=
golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf h1:guOdSPaeFgN+jEJwTo1dQ71hdBm+yKSCCKuTRkJzcVo=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I=
google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw=
google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 h1:6GQBEOdGkX6MMTLT9V+TjtIRZCw9VPD5Z+yHY9wMgS0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY=
google.golang.org/grpc v1.60.0 h1:6FQAR0kM31P6MRdeluor2w2gPaS4SVNrD/DNTxrQ15k=
google.golang.org/grpc v1.60.0/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
Expand Down
16 changes: 9 additions & 7 deletions grpcclient/aes_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"math/rand"

log "github.com/sirupsen/logrus"
pb "github.com/vhive-serverless/vSwarm-proto/proto/aes"
)

Expand Down Expand Up @@ -49,16 +48,19 @@ type AesClient struct {
client pb.AesClient
}

func (c *AesClient) Init(ctx context.Context, ip, port string) {
log.Printf("Connect to: %s:%s\n", ip, port)
c.Connect(ctx, ip, port)
func (c *AesClient) Init(ctx context.Context, ip, port string) error {
err := c.Connect(ctx, ip, port)
if err != nil {
return err
}
c.client = pb.NewAesClient(c.conn)
return nil
}

func (c *AesClient) Request(ctx context.Context, req Input) string {
func (c *AesClient) Request(ctx context.Context, req Input) (string, error) {
r, err := c.client.ShowEncryption(ctx, &pb.PlainTextMessage{PlaintextMessage: req.Value})
if err != nil {
log.Fatalf("could not greet: %v", err)
return "", err
}
return r.GetEncryptionInfo()
return r.GetEncryptionInfo(), nil
}
15 changes: 9 additions & 6 deletions grpcclient/auth_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"math/rand"

log "github.com/sirupsen/logrus"
pb "github.com/vhive-serverless/vSwarm-proto/proto/auth"
)

Expand Down Expand Up @@ -38,16 +37,20 @@ type AuthClient struct {
client pb.GreeterClient
}

func (c *AuthClient) Init(ctx context.Context, ip, port string) {
c.Connect(ctx, ip, port)
func (c *AuthClient) Init(ctx context.Context, ip, port string) error {
err := c.Connect(ctx, ip, port)
if err != nil {
return err
}
c.client = pb.NewGreeterClient(c.conn)
return nil
}

func (c *AuthClient) Request(ctx context.Context, req Input) string {
func (c *AuthClient) Request(ctx context.Context, req Input) (string, error) {
var authMessage = req.Value
r, err := c.client.SayHello(ctx, &pb.HelloRequest{Name: authMessage})
if err != nil {
log.Fatalf("could not greet: %v", err)
return "", err
}
return r.GetMessage()
return r.GetMessage(), nil
}
15 changes: 9 additions & 6 deletions grpcclient/fibonacci_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"math/rand"

pb "github.com/vhive-serverless/vSwarm-proto/proto/fibonacci"
log "github.com/sirupsen/logrus"
)

type FibonacciGenerator struct {
Expand Down Expand Up @@ -37,16 +36,20 @@ type FibonacciClient struct {
client pb.GreeterClient
}

func (c *FibonacciClient) Init(ctx context.Context, ip, port string) {
c.Connect(ctx, ip, port)
func (c *FibonacciClient) Init(ctx context.Context, ip, port string) error {
err := c.Connect(ctx, ip, port)
if err != nil {
return err
}
c.client = pb.NewGreeterClient(c.conn)
return nil
}

func (c *FibonacciClient) Request(ctx context.Context, req Input) string {
func (c *FibonacciClient) Request(ctx context.Context, req Input) (string, error) {
var fibonacciMessage = req.Value
r, err := c.client.SayHello(ctx, &pb.HelloRequest{Name: fibonacciMessage})
if err != nil {
log.Fatalf("could not greet: %v", err)
return "", err
}
return r.GetMessage()
return r.GetMessage(), nil
}
52 changes: 52 additions & 0 deletions grpcclient/gaminganywhere_client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package grpcclient

import (
"context"
"fmt"

Check failure on line 5 in grpcclient/gaminganywhere_client.go

View workflow job for this annotation

GitHub Actions / GolangCI Lint

"fmt" imported and not used (typecheck)
"math/rand"

Check failure on line 6 in grpcclient/gaminganywhere_client.go

View workflow job for this annotation

GitHub Actions / GolangCI Lint

"math/rand" imported and not used (typecheck)

pb "github.com/vhive-serverless/vSwarm-proto/proto/helloworld"

Check failure on line 8 in grpcclient/gaminganywhere_client.go

View workflow job for this annotation

GitHub Actions / GolangCI Lint

could not import github.com/vhive-serverless/vSwarm-proto/proto/helloworld (-: C++ source files not allowed when not using cgo or SWIG: helloworld.pb.cc) (typecheck)
log "github.com/sirupsen/logrus"
)

type GamingAnywhereGenerator struct {
GeneratorBase
}

func (g *GamingAnywhereGenerator) Next() Input {
var pkt = g.defaultInput
switch g.GeneratorBase.generator {
case Unique:
pkt.Value = "A unique message"
case Linear:
// g.count = g.count + 1
// pkt.Value = fmt.Sprintf("%d", g.count)
pkt.Value = "A linear message"
case Random:
pkt.Value = "A random message"
}
return pkt
}

func (c *GamingAnywhereClient) GetGenerator() Generator {
return new(GamingAnywhereGenerator)
}

type GamingAnywhereClient struct {
ClientBase
client pb.GreeterClient
}

func (c *GamingAnywhereClient) Init(ctx context.Context, ip, port string) {
c.Connect(ctx, ip, port)
c.client = pb.NewGreeterClient(c.conn)
}

func (c *GamingAnywhereClient) Request(ctx context.Context, req Input) string {
var message = req.Value
r, err := c.client.SayHello(ctx, &pb.HelloRequest{Name: message})
if err != nil {
log.Fatalf("could not greet: %v", err)
}
return r.GetMessage()
}
5 changes: 5 additions & 0 deletions grpcclient/getclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ func FindServiceName(functionName string) string {
return "auth"
case "fibonacci-go", "fibonacci-python", "fibonacci-nodejs", "fibonacci-cpp":
return "fibonacci"
case "gptj-python":
return "gptj"
default:
return functionName
}
Expand All @@ -33,6 +35,9 @@ func FindGrpcClient(service_name string) GrpcClient {
case "fibonacci":
log.Debug("Found Fibonacci client")
return new(FibonacciClient)
case "gptj":
log.Debug("Found gptj client")
return new(GptJClient)

// Hotel reservation ---
case "Geo", "geo":
Expand Down
51 changes: 51 additions & 0 deletions grpcclient/gptj_client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package grpcclient

import (
"context"
log "github.com/sirupsen/logrus"
pb "github.com/vhive-serverless/vSwarm-proto/proto/gptj"
)

type GptJGenerator struct {
GeneratorBase
}

func (g *GptJGenerator) Next() Input {
var pkt = g.defaultInput
switch g.GeneratorBase.generator {
case Unique:
pkt.Value = "false"
case Linear:
pkt.Value = "false"
case Random:
pkt.Value = "true"
}
return pkt
}

type GptJClient struct {
ClientBase
client pb.GptJBenchmarkClient
}

func (c *GptJClient) GetGenerator() Generator {
return new(GptJGenerator)
}

func (c *GptJClient) Init(ctx context.Context, ip, port string) error {
log.Printf("Connect to: %s:%s\n", ip, port)
err := c.Connect(ctx, ip, port)
if err != nil {
return err
}
c.client = pb.NewGptJBenchmarkClient(c.conn)
return nil
}

func (c *GptJClient) Request(ctx context.Context, req Input) (string, error) {
r, err := c.client.GetBenchmark(ctx, &pb.GptJBenchmarkRequest{Regenerate: req.Value})
if err != nil {
return "", err
}
return r.GetLatencyInfo(), nil
}
Loading
Loading