func RunBenchmark(path string, b *testing.B) { logger := golog.NewLogger("tritium") logger.AddProcessor("info", golog.NewConsoleProcessor(golog.LOG_INFO, true)) spec, err := spec.LoadSpec(path, pkg) if err != nil { panic(fmt.Sprintf("Error loading test spec at (%v) :\n%v\n", path, err.Error())) } debugger := &dummy.DummyDebugger{} eng := whale.NewEngine(debugger) b.StartTimer() d, _ := time.ParseDuration("1m") for i := 0; i < b.N; i++ { eng.Run(spec.Script, nil, spec.Input, spec.Vars, time.Now().Add(d), "test", "test", "test", false) } }
func RunTest(path string) (result *spec.Result) { result = spec.NewResult() logger := golog.NewLogger("tritium") logger.AddProcessor("info", golog.NewConsoleProcessor(golog.LOG_INFO, true)) /*** TODO(SJ) : Reintegrate w new log system. We need to catch errors when running tests defer func() { if x := recover(); x != nil { err, ok := x.(error) if ok { logger.Error(path + " === " + err.Error() + "\n\n" + string(debug.Stack())) } else { logger.Error(path + " === " + x.(string) + "\n\n" + string(debug.Stack())) } } for _, rec := range logWriter.Logs { error := log4go.FormatLogRecord("[%D %T] [%L] (%S) %M", rec) result.Error(path, error) } }() */ spec, err := spec.LoadSpec(path, pkg) if err != nil { result.Error(path, fmt.Sprintf("Error loading test spec:\n%v\n", err.Error())) return } debugger := &dummy.DummyDebugger{} eng := whale.NewEngine(debugger) d, _ := time.ParseDuration("1m") result.Merge(spec.Compare(eng.Run(spec.Script, nil, spec.Input, spec.Vars, time.Now().Add(d), "test", "test", "test", false))) return }
func newLog() *golog.Logger { consoleProcessor := golog.NewConsoleProcessor(golog.LOG_ERR, true) pkgLog := golog.NewLogger("tritium") pkgLog.AddProcessor("console", consoleProcessor) return pkgLog }
func All(command string, directory string, options ...string) { var mixerPath string if len(options) == 1 { //TODO: Instead of the mixer path, we should pass in just the name //and the version. mixerPath = filepath.Base(options[0]) } logger := golog.NewLogger("tritium") debugger := &dummy.DummyDebugger{} logger.AddProcessor("info", golog.NewConsoleProcessor(golog.LOG_INFO, true)) var eng tritium.Engine if command == "test" { eng = whale.NewEngine(debugger) } var pkg *tp.Package if len(mixerPath) > 0 { // Used when testing in ambrosia mixer, err := mixers.GetMixerFromFile(mixerPath) if err != nil { panic("Error, could not load mixer: " + mixerPath) } pkg = mixer.Package } else { bigPackage := legacy.BuildDefaultPackage() pkg = bigPackage.Package } globalResult := NewResult() globalResult.all(directory, pkg, eng, logger) // TODO : Walk over the results here and print errors. var foundError = false for _, err := range globalResult.Errors { foundError = true println("\n=========================================", err.Location, "\n") if err.Panic { fmt.Printf(err.Message) } else { fmt.Printf("\n==========\n%v :: %v \n\n Got \n----------\n%v\n\n Expected \n----------\n%v\n", err.Name, err.Message, err.Got, err.Expected) } } println("\n\n") println("+++TEST COMPLETE+++\n\n") if foundError { os.Exit(1) } eng.Free() xmlhelp.LibxmlCleanUpParser() if xmlhelp.LibxmlGetMemoryAllocation() != 0 { fmt.Printf("Memeory leaks %d!!!", xmlhelp.LibxmlGetMemoryAllocation()) xmlhelp.LibxmlReportMemoryLeak() } }