Skip to content
Snippets Groups Projects
Commit 454a5d3d authored by S.H.'s avatar S.H.
Browse files

benchmarking in gosdn controller

parent 850e9bf5
No related branches found
No related tags found
No related merge requests found
Pipeline #270497 failed
...@@ -389,4 +389,4 @@ message SubscribePathRequest { ...@@ -389,4 +389,4 @@ message SubscribePathRequest {
message SubscribePathResponse { message SubscribePathResponse {
int64 timestamp = 1; // Timestamp in nanoseconds since Epoch. int64 timestamp = 1; // Timestamp in nanoseconds since Epoch.
repeated gnmi.Notification mne_notification = 2; repeated gnmi.Notification mne_notification = 2;
} }
\ No newline at end of file
...@@ -277,7 +277,7 @@ func (r *RtdtManager) RunBenchmark0(numTests int64) error { ...@@ -277,7 +277,7 @@ func (r *RtdtManager) RunBenchmark0(numTests int64) error {
if err != nil { if err != nil {
fmt.Printf("Encountered error: %v\n", err) fmt.Printf("Encountered error: %v\n", err)
} }
time.Sleep(time.Second * 1) time.Sleep(time.Second * 2)
} }
r.benchmark0 = false r.benchmark0 = false
return nil return nil
......
package rtdt_benchmark
import (
"encoding/json"
"fmt"
"os"
"time"
)
type Rtdt_Benchmark struct {
CtlRcvPathRequest time.Time
CtlRcvCommitRequest time.Time
CtlSendGnmi time.Time
CtlRcvGnmi time.Time
}
var CurrentBenchmark Rtdt_Benchmark
func AppendToJsonFile(r *Rtdt_Benchmark) {
var benchmarks []Rtdt_Benchmark
if _, err := os.Stat("/app/gosdn_share/measure_controller.json"); err == nil {
data, err := os.ReadFile("/app/gosdn_share/measure_controller.json")
if err != nil {
fmt.Println("Error reading file:", err)
return
}
if len(data) > 0 {
err = json.Unmarshal(data, &benchmarks)
if err != nil {
fmt.Println("Error unmarshaling JSON:", err)
return
}
}
} else if !os.IsNotExist(err) {
fmt.Println("Error checking file status:", err)
return
}
// Append the new benchmark
benchmarks = append(benchmarks, *r)
// Marshal and write back to file
outData, err := json.MarshalIndent(benchmarks, "", " ")
if err != nil {
fmt.Println("Error marshaling JSON:", err)
return
}
err = os.WriteFile("/app/gosdn_share/measure_controller.json", outData, 0644)
if err != nil {
fmt.Println("Error writing to file:", err)
}
}
...@@ -10,6 +10,7 @@ import ( ...@@ -10,6 +10,7 @@ import (
plugin_registry "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/plugin-registry" plugin_registry "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/plugin-registry"
ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd" ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport" tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
rtdt_benchmark "code.fbi.h-da.de/danet/gosdn/controller/benchmark"
"code.fbi.h-da.de/danet/gosdn/controller/config" "code.fbi.h-da.de/danet/gosdn/controller/config"
"code.fbi.h-da.de/danet/gosdn/controller/conflict" "code.fbi.h-da.de/danet/gosdn/controller/conflict"
"code.fbi.h-da.de/danet/gosdn/controller/customerrs" "code.fbi.h-da.de/danet/gosdn/controller/customerrs"
...@@ -712,6 +713,8 @@ func (n *NetworkElementServer) initialNetworkElementRootPathRequest(ctx context. ...@@ -712,6 +713,8 @@ func (n *NetworkElementServer) initialNetworkElementRootPathRequest(ctx context.
// SetChangeList sets a list of changes. // SetChangeList sets a list of changes.
func (n *NetworkElementServer) SetChangeList(ctx context.Context, request *mnepb.SetChangeListRequest) (*mnepb.SetChangeListResponse, error) { func (n *NetworkElementServer) SetChangeList(ctx context.Context, request *mnepb.SetChangeListRequest) (*mnepb.SetChangeListResponse, error) {
labels := prometheus.Labels{"service": "mne", "rpc": "set"} labels := prometheus.Labels{"service": "mne", "rpc": "set"}
rtdt_benchmark.CurrentBenchmark.CtlRcvCommitRequest = time.Now()
start := metrics.StartHook(labels, grpcRequestsTotal) start := metrics.StartHook(labels, grpcRequestsTotal)
defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds) defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
...@@ -748,6 +751,7 @@ func (n *NetworkElementServer) SetChangeList(ctx context.Context, request *mnepb ...@@ -748,6 +751,7 @@ func (n *NetworkElementServer) SetChangeList(ctx context.Context, request *mnepb
Id: cuid.String(), Id: cuid.String(),
} }
} }
rtdt_benchmark.AppendToJsonFile(&rtdt_benchmark.CurrentBenchmark)
return &mnepb.SetChangeListResponse{ return &mnepb.SetChangeListResponse{
Timestamp: time.Now().UnixNano(), Timestamp: time.Now().UnixNano(),
Responses: responses, Responses: responses,
...@@ -800,6 +804,8 @@ func (n *NetworkElementServer) Confirm(u uuid.UUID) error { ...@@ -800,6 +804,8 @@ func (n *NetworkElementServer) Confirm(u uuid.UUID) error {
// SetPathList sets a list of paths. // SetPathList sets a list of paths.
func (n *NetworkElementServer) SetPathList(ctx context.Context, request *mnepb.SetPathListRequest) (*mnepb.SetPathListResponse, error) { func (n *NetworkElementServer) SetPathList(ctx context.Context, request *mnepb.SetPathListRequest) (*mnepb.SetPathListResponse, error) {
rtdt_benchmark.CurrentBenchmark = rtdt_benchmark.Rtdt_Benchmark{}
rtdt_benchmark.CurrentBenchmark.CtlRcvPathRequest = time.Now()
labels := prometheus.Labels{"service": "mne", "rpc": "set"} labels := prometheus.Labels{"service": "mne", "rpc": "set"}
start := metrics.StartHook(labels, grpcRequestsTotal) start := metrics.StartHook(labels, grpcRequestsTotal)
defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds) defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
......
...@@ -6,6 +6,7 @@ import ( ...@@ -6,6 +6,7 @@ import (
"os" "os"
"time" "time"
rtdt_benchmark "code.fbi.h-da.de/danet/gosdn/controller/benchmark"
"code.fbi.h-da.de/danet/gosdn/controller/config" "code.fbi.h-da.de/danet/gosdn/controller/config"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/change" "code.fbi.h-da.de/danet/gosdn/controller/interfaces/change"
tpInterface "code.fbi.h-da.de/danet/gosdn/controller/interfaces/transport" tpInterface "code.fbi.h-da.de/danet/gosdn/controller/interfaces/transport"
...@@ -124,7 +125,9 @@ func (g *Gnmi) applyDiff(ctx context.Context, payload change.Payload) error { ...@@ -124,7 +125,9 @@ func (g *Gnmi) applyDiff(ctx context.Context, payload change.Payload) error {
Update: updates, Update: updates,
} }
rtdt_benchmark.CurrentBenchmark.CtlSendGnmi = time.Now()
resp, err := g.client.Set(ctx, setRequest) resp, err := g.client.Set(ctx, setRequest)
rtdt_benchmark.CurrentBenchmark.CtlRcvGnmi = time.Unix(0, resp.Timestamp)
if err != nil { if err != nil {
return err return err
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment