feat: complete cmpp platform phases 0-5
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package spike
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestSimulatorRunsOneMessageLifecycle(t *testing.T) {
|
||||
sim := NewSimulator()
|
||||
cmd := NewSubmitCommand(1)
|
||||
|
||||
result, receipt, err := sim.Submit(context.Background(), cmd)
|
||||
if err != nil {
|
||||
t.Fatalf("submit: %v", err)
|
||||
}
|
||||
|
||||
if result.MessageID != cmd.MessageID {
|
||||
t.Fatalf("submit result message id mismatch: %s != %s", result.MessageID, cmd.MessageID)
|
||||
}
|
||||
if result.SequenceID == 0 {
|
||||
t.Fatal("expected sequence id")
|
||||
}
|
||||
if receipt.GatewayMessageID != result.GatewayMessageID {
|
||||
t.Fatalf("receipt gateway id mismatch: %s != %s", receipt.GatewayMessageID, result.GatewayMessageID)
|
||||
}
|
||||
if receipt.ReceiptStatus != "delivered" {
|
||||
t.Fatalf("unexpected receipt status: %s", receipt.ReceiptStatus)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSimulatorLoadMeets500TPSFloor(t *testing.T) {
|
||||
sim := NewSimulator()
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
|
||||
result, err := sim.RunLoad(ctx, 15000)
|
||||
if err != nil {
|
||||
t.Fatalf("run load: %v", err)
|
||||
}
|
||||
|
||||
if result.SubmitResults != 15000 || result.ReceiptEvents != 15000 {
|
||||
t.Fatalf("unexpected result counts: %+v", result)
|
||||
}
|
||||
if result.MessagesPerSec < 500 {
|
||||
t.Fatalf("expected at least 500 msg/s, got %.2f", result.MessagesPerSec)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user