49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|