scripts to run benchmarks
This commit is contained in:
63
benchmarks/e2e/mocks_test.go
Normal file
63
benchmarks/e2e/mocks_test.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package e2e_bench_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// startMockBPP starts an httptest server that accepts any POST request and
|
||||
// immediately returns a valid Beckn ACK. This replaces the real BPP backend,
|
||||
// isolating benchmark results to adapter-internal latency only.
|
||||
func startMockBPP() *httptest.Server {
|
||||
ackBody := `{"message":{"ack":{"status":"ACK"}}}`
|
||||
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
fmt.Fprint(w, ackBody)
|
||||
}))
|
||||
}
|
||||
|
||||
// subscriberRecord mirrors the registry API response shape for a single subscriber.
|
||||
type subscriberRecord struct {
|
||||
SubscriberID string `json:"subscriber_id"`
|
||||
UniqueKeyID string `json:"unique_key_id"`
|
||||
SigningPublicKey string `json:"signing_public_key"`
|
||||
ValidFrom string `json:"valid_from"`
|
||||
ValidUntil string `json:"valid_until"`
|
||||
Status string `json:"status"`
|
||||
}
|
||||
|
||||
// startMockRegistry starts an httptest server that returns a subscriber record
|
||||
// matching the benchmark test keys. The signvalidator plugin uses this to
|
||||
// resolve the public key for signature verification on incoming requests.
|
||||
func startMockRegistry() *httptest.Server {
|
||||
record := subscriberRecord{
|
||||
SubscriberID: benchSubscriberID,
|
||||
UniqueKeyID: benchKeyID,
|
||||
SigningPublicKey: benchPubKey,
|
||||
ValidFrom: time.Now().AddDate(-1, 0, 0).Format(time.RFC3339),
|
||||
ValidUntil: time.Now().AddDate(10, 0, 0).Format(time.RFC3339),
|
||||
Status: "SUBSCRIBED",
|
||||
}
|
||||
body, _ := json.Marshal([]subscriberRecord{record})
|
||||
|
||||
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
// Support both GET (lookup) and POST (lookup with body) registry calls.
|
||||
// Respond with the subscriber record regardless of subscriber_id query param.
|
||||
subscriberID := r.URL.Query().Get("subscriber_id")
|
||||
if subscriberID == "" {
|
||||
// Try extracting from path for dedi-registry style calls.
|
||||
parts := strings.Split(strings.TrimPrefix(r.URL.Path, "/"), "/")
|
||||
if len(parts) > 0 {
|
||||
subscriberID = parts[len(parts)-1]
|
||||
}
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
w.Write(body)
|
||||
}))
|
||||
}
|
||||
Reference in New Issue
Block a user