73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"math/rand"
|
|
"time"
|
|
|
|
devtodev "devtodev-sdk"
|
|
)
|
|
|
|
func main() {
|
|
rand.Seed(time.Now().UnixNano())
|
|
|
|
appID := "2d942fe9-c1d3-081c-bdb3-ec6080273fe6"
|
|
client := devtodev.NewClient(appID)
|
|
client.Compression = devtodev.CompressionNone
|
|
|
|
ctx := context.Background()
|
|
userCount := rand.Intn(2) + 2 // 2-3 users
|
|
|
|
for u := 0; u < userCount; u++ {
|
|
deviceID := fmt.Sprintf("device-%d", rand.Int63())
|
|
base := time.Now().Add(time.Duration(-rand.Intn(120)) * time.Second)
|
|
level := rand.Intn(20) + 1
|
|
|
|
reporter := devtodev.NewReporter(client, deviceID)
|
|
reporter.Package = devtodev.Package{
|
|
Language: "en",
|
|
Country: "US",
|
|
}
|
|
|
|
if _, err := reporter.DeviceInfo(ctx, base.UnixMilli(), map[string]interface{}{
|
|
"platform": "ios",
|
|
"device": "iPhone14,3",
|
|
}); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
if _, err := reporter.SessionStart(ctx, base.Add(2*time.Second).UnixMilli(), level, nil); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// 2-4 user engagement heartbeats
|
|
ueCount := rand.Intn(3) + 2
|
|
for i := 0; i < ueCount; i++ {
|
|
if _, err := reporter.UserEngagement(ctx, base.Add(time.Duration(10*(i+1))*time.Second).UnixMilli(), level, 10, nil); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
// 1-3 real payments, each price 5-10
|
|
payments := rand.Intn(3) + 1
|
|
for i := 0; i < payments; i++ {
|
|
price := float64(rand.Intn(6) + 5)
|
|
if _, err := reporter.RealPayment(
|
|
ctx,
|
|
base.Add(time.Duration(60+(i*10))*time.Second).UnixMilli(),
|
|
level,
|
|
fmt.Sprintf("com.demo.product.%d", rand.Intn(5)+1),
|
|
fmt.Sprintf("order-%d-%d", time.Now().UnixNano(), i),
|
|
price,
|
|
"USD",
|
|
nil,
|
|
); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
fmt.Printf("sent events for %d users\n", userCount)
|
|
}
|