@@ -17,11 +17,12 @@ package syslog
17
17
import (
18
18
"embed"
19
19
"fmt"
20
+ "math/rand"
20
21
"strconv"
22
+ "strings"
21
23
"time"
22
24
23
25
"github.com/Pallinder/go-randomdata"
24
- "github.com/spf13/viper"
25
26
)
26
27
27
28
//go:embed *.tmpl
@@ -59,7 +60,47 @@ func (t TemplateData) Severity() string {
59
60
return strconv .FormatInt (int64 (t .severity ), 10 )
60
61
}
61
62
62
- func SampleData () TemplateData {
63
+ type RandomService struct {
64
+ Hosts []string
65
+ Apps []string
66
+ }
67
+
68
+ func NewRandomService (maxHosts int , maxApps int , seed int64 ) * RandomService {
69
+ svc := new (RandomService )
70
+
71
+ // we might experience a race condition here, but we are dealing with pseudorandom data anyway
72
+ if seed != 0 {
73
+ randomdata .CustomRand (rand .New (rand .NewSource (seed )))
74
+ defer randomdata .CustomRand (rand .New (rand .NewSource (time .Now ().UnixNano ())))
75
+ }
76
+
77
+ svc .Hosts = make ([]string , maxHosts )
78
+ for i := 0 ; i < maxHosts ; i ++ {
79
+ svc .Hosts [i ] = strings .ToLower (randomdata .SillyName ())
80
+ }
81
+
82
+ svc .Apps = make ([]string , maxApps )
83
+ for i := 0 ; i < maxApps ; i ++ {
84
+ svc .Apps [i ] = strings .ToLower (randomdata .SillyName ())
85
+ }
86
+ return svc
87
+ }
88
+
89
+ func (r * RandomService ) RandomHost () string {
90
+ if len (r .Hosts ) == 0 {
91
+ return "host"
92
+ }
93
+ return r .Hosts [randomdata .Number (0 , len (r .Hosts ))]
94
+ }
95
+
96
+ func (r * RandomService ) RandomApp () string {
97
+ if len (r .Apps ) == 0 {
98
+ return "app"
99
+ }
100
+ return r .Apps [randomdata .Number (0 , len (r .Apps ))]
101
+ }
102
+
103
+ func (r * RandomService ) SampleData () TemplateData {
63
104
return TemplateData {
64
105
Facility : 20 ,
65
106
severity : 5 ,
@@ -72,13 +113,13 @@ func SampleData() TemplateData {
72
113
}
73
114
}
74
115
75
- func RandomData () TemplateData {
116
+ func ( r * RandomService ) RandomData () TemplateData {
76
117
return TemplateData {
77
118
Facility : randomdata .Number (0 , 24 ),
78
119
severity : randomdata .Number (0 , 8 ),
79
120
dateTime : time .Now ().UTC (),
80
- Host : fmt . Sprintf ( "host-%d" , randomdata . Number ( viper . GetInt ( "message.max-random-hosts" )) + 1 ),
81
- AppName : fmt . Sprintf ( "app%d" , randomdata . Number ( viper . GetInt ( "message.max-random-apps" )) + 1 ),
121
+ Host : r . RandomHost ( ),
122
+ AppName : r . RandomApp ( ),
82
123
PID : randomdata .Number (1 , 10000 ),
83
124
Seq : randomdata .Number (1 , 10000 ),
84
125
Msg : fmt .Sprintf ("An application event log entry %s %s" , randomdata .Noun (), randomdata .Noun ()),
0 commit comments