aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-08-19 21:26:35 +0200
committerMichael Muré <batolettre@gmail.com>2018-08-19 21:26:35 +0200
commit285e8394861765757a057ca1e16c36c9ca8227cb (patch)
treebdde8de002723f6ce43ef8088dbf4981a15b339b
parent08127d8d1ce1b0e4f4a15b05a240bbd421f559a0 (diff)
downloadgit-bug-285e8394861765757a057ca1e16c36c9ca8227cb.tar.gz
random_bugs: make it seedable and reusable
-rw-r--r--misc/random_bugs/create_random_bugs.go (renamed from misc/create_random_bugs.go)59
-rw-r--r--misc/random_bugs/main.go28
2 files changed, 57 insertions, 30 deletions
diff --git a/misc/create_random_bugs.go b/misc/random_bugs/create_random_bugs.go
index 1ca20aee..54dad58a 100644
--- a/misc/create_random_bugs.go
+++ b/misc/random_bugs/create_random_bugs.go
@@ -1,10 +1,7 @@
-// +build ignore
-
-package main
+package random_bugs
import (
"math/rand"
- "os"
"strings"
"time"
@@ -14,17 +11,31 @@ import (
"github.com/icrowley/fake"
)
-const bugNumber = 15
-const personNumber = 5
-const minOp = 3
-const maxOp = 20
-
type opsGenerator func(*bug.Bug, bug.Person)
-// This program will randomly generate a collection of bugs in the repository
-// of the current path
-func main() {
- rand.Seed(time.Now().UnixNano())
+type Options struct {
+ BugNumber int
+ PersonNumber int
+ MinOp int
+ MaxOp int
+}
+
+func DefaultOptions() Options {
+ return Options{
+ BugNumber: 15,
+ PersonNumber: 5,
+ MinOp: 3,
+ MaxOp: 20,
+ }
+}
+
+func GenerateRandomBugs(repo repository.Repo, opts Options) {
+ GenerateRandomBugsWithSeed(repo, opts, time.Now().UnixNano())
+}
+
+func GenerateRandomBugsWithSeed(repo repository.Repo, opts Options, seed int64) {
+ rand.Seed(seed)
+ fake.Seed(seed)
opsGenerators := []opsGenerator{
comment,
@@ -35,31 +46,19 @@ func main() {
operations.Close,
}
- dir, err := os.Getwd()
- if err != nil {
- panic(err)
- }
-
- repo, err := repository.NewGitRepo(dir, func(repo *repository.GitRepo) error {
- return nil
- })
- if err != nil {
- panic(err)
- }
-
- for i := 0; i < bugNumber; i++ {
+ for i := 0; i < opts.BugNumber; i++ {
addedLabels = []string{}
- b, err := operations.Create(randomPerson(), fake.Sentence(), paragraphs())
+ b, err := operations.Create(randomPerson(opts.PersonNumber), fake.Sentence(), paragraphs())
if err != nil {
panic(err)
}
- nOps := minOp + rand.Intn(maxOp-minOp)
+ nOps := opts.MinOp + rand.Intn(opts.MaxOp-opts.MinOp)
for j := 0; j < nOps; j++ {
index := rand.Intn(len(opsGenerators))
- opsGenerators[index](b, randomPerson())
+ opsGenerators[index](b, randomPerson(opts.PersonNumber))
}
err = b.Commit(repo)
@@ -78,7 +77,7 @@ func person() bug.Person {
var persons []bug.Person
-func randomPerson() bug.Person {
+func randomPerson(personNumber int) bug.Person {
if len(persons) == 0 {
persons = make([]bug.Person, personNumber)
for i := range persons {
diff --git a/misc/random_bugs/main.go b/misc/random_bugs/main.go
new file mode 100644
index 00000000..7211548e
--- /dev/null
+++ b/misc/random_bugs/main.go
@@ -0,0 +1,28 @@
+// +build ignore
+
+package main
+
+import (
+ "os"
+
+ rb "github.com/MichaelMure/git-bug/misc/random_bugs"
+ "github.com/MichaelMure/git-bug/repository"
+)
+
+// This program will randomly generate a collection of bugs in the repository
+// of the current path
+func main() {
+ dir, err := os.Getwd()
+ if err != nil {
+ panic(err)
+ }
+
+ repo, err := repository.NewGitRepo(dir, func(repo *repository.GitRepo) error {
+ return nil
+ })
+ if err != nil {
+ panic(err)
+ }
+
+ rb.GenerateRandomBugs(repo, rb.DefaultOptions())
+}