grim/resticide
Clone
Summary
Browse
Changes
Graph
move runner to it's own package.
develop
2016-07-09, Gary Kramlich
5eabeab13610
Parents
179fcc7776f8
Children
92fb02aef02c
move runner to it's own package.
3 files changed, 72 insertions(+), 73 deletions(-)
+2
-3
main.go
+0
-70
runner.go
+70
-0
runner/runner.go
--- a/main.go Sat Jul 09 14:32:43 2016 -0500
+++ b/main.go Sat Jul 09 14:46:41 2016 -0500
@@ -9,6 +9,7 @@
"bitbucket.org/rw_grim/resticide/loader"
"bitbucket.org/rw_grim/resticide/reporter"
+ "bitbucket.org/rw_grim/resticide/runner"
)
func main() {
@@ -40,7 +41,5 @@
return
}
- failed := RunTests(tests, url, *workers, report)
-
- os.Exit(failed)
+ os.Exit(runner.Run(tests, url, *workers, report))
}
--- a/runner.go Sat Jul 09 14:32:43 2016 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-package main
-
-import (
- "net/url"
- "sync"
-
- "bitbucket.org/rw_grim/resticide/reporter"
- "bitbucket.org/rw_grim/resticide/test"
-)
-
-func testWorker(workerChan chan test.Test, resultChan chan *test.Result, waitGroup *sync.WaitGroup, url *url.URL, reporter *reporter.Reporter) {
- defer waitGroup.Done()
-
- for test := range workerChan {
- reporter.TestStart(test)
- res := test.Run(url)
- reporter.TestFinish(test, *res)
-
- resultChan <- res
- }
-}
-
-// RunTests will run all of the given test with the given arguments
-func RunTests(tests []test.Test, url *url.URL, nWorkers int, reporter *reporter.Reporter) int {
- nTests := len(tests)
- passed := 0
-
- reporter.Start(nTests)
-
- workerChan := make(chan test.Test)
- workerWg := new(sync.WaitGroup)
- resultChan := make(chan *test.Result)
- resultWg := new(sync.WaitGroup)
-
- // create our result processor
- resultWg.Add(1)
- go func(resultWg *sync.WaitGroup, resultChan chan *test.Result) {
- defer resultWg.Done()
-
- for result := range resultChan {
- if result.Passed {
- passed++
- }
- }
- }(resultWg, resultChan)
-
- // create our workers
- for i := 0; i < nWorkers; i++ {
- workerWg.Add(1)
- go testWorker(workerChan, resultChan, workerWg, url, reporter)
- }
-
- // add each test to the channel
- for _, test := range tests {
- workerChan <- test
- }
-
- // clean up the channel and wait for all the workers to finish
- close(workerChan)
- workerWg.Wait()
-
- close(resultChan)
- resultWg.Wait()
-
- failed := nTests - passed
-
- reporter.Finish(nTests, passed, failed)
-
- return failed
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/runner/runner.go Sat Jul 09 14:46:41 2016 -0500
@@ -0,0 +1,70 @@
+package runner
+
+import (
+ "net/url"
+ "sync"
+
+ "bitbucket.org/rw_grim/resticide/reporter"
+ "bitbucket.org/rw_grim/resticide/test"
+)
+
+func testWorker(workerChan chan test.Test, resultChan chan *test.Result, waitGroup *sync.WaitGroup, url *url.URL, reporter *reporter.Reporter) {
+ defer waitGroup.Done()
+
+ for test := range workerChan {
+ reporter.TestStart(test)
+ res := test.Run(url)
+ reporter.TestFinish(test, *res)
+
+ resultChan <- res
+ }
+}
+
+// Run will run all of the given test with the given arguments
+func Run(tests []test.Test, url *url.URL, nWorkers int, reporter *reporter.Reporter) int {
+ nTests := len(tests)
+ passed := 0
+
+ reporter.Start(nTests)
+
+ workerChan := make(chan test.Test)
+ workerWg := new(sync.WaitGroup)
+ resultChan := make(chan *test.Result)
+ resultWg := new(sync.WaitGroup)
+
+ // create our result processor
+ resultWg.Add(1)
+ go func(resultWg *sync.WaitGroup, resultChan chan *test.Result) {
+ defer resultWg.Done()
+
+ for result := range resultChan {
+ if result.Passed {
+ passed++
+ }
+ }
+ }(resultWg, resultChan)
+
+ // create our workers
+ for i := 0; i < nWorkers; i++ {
+ workerWg.Add(1)
+ go testWorker(workerChan, resultChan, workerWg, url, reporter)
+ }
+
+ // add each test to the channel
+ for _, test := range tests {
+ workerChan <- test
+ }
+
+ // clean up the channel and wait for all the workers to finish
+ close(workerChan)
+ workerWg.Wait()
+
+ close(resultChan)
+ resultWg.Wait()
+
+ failed := nTests - passed
+
+ reporter.Finish(nTests, passed, failed)
+
+ return failed
+}