rename template file to allow distinction between template and go compilation unit
Change-Id: I1b633530746202cf5eac419d890e4221f9695986
diff --git a/tests/afrouter/templates/client.go b/tests/afrouter/templates/client.go.tmpl
similarity index 100%
rename from tests/afrouter/templates/client.go
rename to tests/afrouter/templates/client.go.tmpl
diff --git a/tests/afrouter/templates/clientInit.go b/tests/afrouter/templates/clientInit.go.tmpl
similarity index 100%
rename from tests/afrouter/templates/clientInit.go
rename to tests/afrouter/templates/clientInit.go.tmpl
diff --git a/tests/afrouter/templates/main.go b/tests/afrouter/templates/main.go.tmpl
similarity index 100%
rename from tests/afrouter/templates/main.go
rename to tests/afrouter/templates/main.go.tmpl
diff --git a/tests/afrouter/templates/runAll.go b/tests/afrouter/templates/runAll.go.tmpl
similarity index 100%
rename from tests/afrouter/templates/runAll.go
rename to tests/afrouter/templates/runAll.go.tmpl
diff --git a/tests/afrouter/templates/runTests.go b/tests/afrouter/templates/runTests.go.tmpl
similarity index 100%
rename from tests/afrouter/templates/runTests.go
rename to tests/afrouter/templates/runTests.go.tmpl
diff --git a/tests/afrouter/templates/server.go b/tests/afrouter/templates/server.go.tmpl
similarity index 100%
rename from tests/afrouter/templates/server.go
rename to tests/afrouter/templates/server.go.tmpl
diff --git a/tests/afrouter/templates/serverInit.go b/tests/afrouter/templates/serverInit.go.tmpl
similarity index 100%
rename from tests/afrouter/templates/serverInit.go
rename to tests/afrouter/templates/serverInit.go.tmpl
diff --git a/tests/afrouter/templates/stats.go b/tests/afrouter/templates/stats.go.tmpl
similarity index 100%
rename from tests/afrouter/templates/stats.go
rename to tests/afrouter/templates/stats.go.tmpl
diff --git a/tests/afrouter/tester.go b/tests/afrouter/tester.go
index fafbbbe..c7c89f4 100644
--- a/tests/afrouter/tester.go
+++ b/tests/afrouter/tester.go
@@ -18,71 +18,69 @@
package main
import (
- "os"
- "fmt"
- "flag"
- "path"
- "math"
- //"bufio"
- "errors"
- "regexp"
- "os/exec"
- "strconv"
- "io/ioutil"
"encoding/json"
- "text/template"
+ "errors"
+ "flag"
+ "fmt"
"github.com/golang/protobuf/proto"
- "github.com/opencord/voltha-go/common/log"
pb "github.com/golang/protobuf/protoc-gen-go/descriptor"
+ "github.com/opencord/voltha-go/common/log"
+ "io/ioutil"
+ "math"
+ "os"
+ "os/exec"
+ "path"
+ "regexp"
+ "strconv"
+ "text/template"
)
const MAX_CT = 500
type TestConfig struct {
configFile *string
- logLevel *int
- grpcLog *bool
- Suites []string `json:"suites"`
+ logLevel *int
+ grpcLog *bool
+ Suites []string `json:"suites"`
}
-
type Connection struct {
Name string `json:"name"`
Port string `json:"port"`
}
type EndpointList struct {
- Imports []string `json:"imports"`
+ Imports []string `json:"imports"`
Endpoints []Connection `json:"endPoints"`
}
type ProtoFile struct {
ImportPath string `json:"importPath"`
- Service string `json:"service"`
- Package string `json:"package"`
+ Service string `json:"service"`
+ Package string `json:"package"`
}
type ProtoSubst struct {
From string `json:"from"`
- To string `json:"to"`
+ To string `json:"to"`
}
type Environment struct {
- Command string `json:"cmdLine"`
- ProtoFiles []ProtoFile `json:"protoFiles"`
- ProtoDesc string `json:"protoDesc"`
- Clients EndpointList `json:"clients"`
- Servers EndpointList `json:"servers"`
- Imports []string `json:"imports"`
+ Command string `json:"cmdLine"`
+ ProtoFiles []ProtoFile `json:"protoFiles"`
+ ProtoDesc string `json:"protoDesc"`
+ Clients EndpointList `json:"clients"`
+ Servers EndpointList `json:"servers"`
+ Imports []string `json:"imports"`
ProtoSubsts []ProtoSubst `json:"protoSubst"`
}
type Rpc struct {
- Client string `json:"client"`
- Method string `json:"method"`
- Param string `json:"param"`
- Expect string `json:"expect"`
- MetaData []MetaD `json:"meta"`
+ Client string `json:"client"`
+ Method string `json:"method"`
+ Param string `json:"param"`
+ Expect string `json:"expect"`
+ MetaData []MetaD `json:"meta"`
ExpectMeta []MetaD `json:"expectMeta"`
}
@@ -92,117 +90,116 @@
}
type Server struct {
- Name string `json:"name"`
+ Name string `json:"name"`
Meta []MetaD `json:"meta"`
}
type Test struct {
- Name string `json:"name"`
- InfoOnly bool `json:"infoOnly"`
- Send Rpc `json:"send"`
- Servers []Server `json:"servers"`
+ Name string `json:"name"`
+ InfoOnly bool `json:"infoOnly"`
+ Send Rpc `json:"send"`
+ Servers []Server `json:"servers"`
}
type TestSuite struct {
- Env Environment `json:"environment"`
- Tests []Test `json:"tests"`
+ Env Environment `json:"environment"`
+ Tests []Test `json:"tests"`
}
type ProtoImport struct {
Service string
- Short string
+ Short string
Package string
- Used bool
+ Used bool
}
type SendItem struct {
- Client string
- Method string
- Param string
- ParamType string
- Expect string
+ Client string
+ Method string
+ Param string
+ ParamType string
+ Expect string
ExpectType string
- MetaData []MetaD
+ MetaData []MetaD
ExpectMeta []MetaD
}
type TestCase struct {
- Name string
+ Name string
InfoOnly bool
- Send SendItem
- Srvr []Server
+ Send SendItem
+ Srvr []Server
}
type MethodTypes struct {
- ParamType string
- ReturnType string
+ ParamType string
+ ReturnType string
CodeGenerated bool
}
type Import struct {
Package string
- Used bool
+ Used bool
}
type TestList struct {
- ProtoImports []ProtoImport
- Imports []Import
- Tests []TestCase
- Funcs map[string]MethodTypes
+ ProtoImports []ProtoImport
+ Imports []Import
+ Tests []TestCase
+ Funcs map[string]MethodTypes
RunTestsCallList []string
- FileNum int
+ FileNum int
//NextFile int
HasFuncs bool
- Offset int
+ Offset int
}
type ClientConfig struct {
- Ct int
- Name string
- Port string
- Imports []string
- Methods map[string]*mthd
+ Ct int
+ Name string
+ Port string
+ Imports []string
+ Methods map[string]*mthd
ProtoImports []ProtoImport
}
type ServerConfig struct {
- Ct int
- Name string
- Port string
- Imports []string
- Methods map[string]*mthd
+ Ct int
+ Name string
+ Port string
+ Imports []string
+ Methods map[string]*mthd
ProtoImports []ProtoImport
}
type mthd struct {
- Pkg string
- Svc string
- Name string
+ Pkg string
+ Svc string
+ Name string
Param string
- Rtrn string
- Ss bool // Server streaming
- Cs bool // Clieent streaming
+ Rtrn string
+ Ss bool // Server streaming
+ Cs bool // Clieent streaming
}
-
func parseCmd() (*TestConfig, error) {
config := &TestConfig{}
- cmdParse := flag.NewFlagSet(path.Base(os.Args[0]), flag.ContinueOnError);
+ cmdParse := flag.NewFlagSet(path.Base(os.Args[0]), flag.ContinueOnError)
config.configFile = cmdParse.String("config", "suites.json", "The configuration file for the affinity router tester")
config.logLevel = cmdParse.Int("logLevel", 0, "The log level for the affinity router tester")
config.grpcLog = cmdParse.Bool("grpclog", false, "Enable GRPC logging")
- err := cmdParse.Parse(os.Args[1:]);
+ err := cmdParse.Parse(os.Args[1:])
if err != nil {
//return err
- return nil, errors.New("Error parsing the command line");
+ return nil, errors.New("Error parsing the command line")
}
return config, nil
}
-func (conf * TestConfig) loadConfig() error {
+func (conf *TestConfig) loadConfig() error {
- configF, err := os.Open(*conf.configFile);
+ configF, err := os.Open(*conf.configFile)
log.Info("Loading configuration from: ", *conf.configFile)
if err != nil {
log.Error(err)
@@ -222,12 +219,12 @@
return nil
}
-func (suite * TestSuite) loadSuite(suiteN string) error {
+func (suite *TestSuite) loadSuite(suiteN string) error {
// Check if there's a corresponding go file for the suite.
// If it is present then the json test suite file is a
// template. Compile the go file and run it to process
// the template.
- if _,err := os.Stat(suiteN+".go"); err == nil {
+ if _, err := os.Stat(suiteN + ".go"); err == nil {
// Compile and run the the go file
log.Infof("Suite '%s' is a template, compiling '%s'", suiteN, suiteN+".go")
cmd := exec.Command("go", "build", "-o", suiteN+".te", suiteN+".go")
@@ -237,7 +234,7 @@
if err := cmd.Run(); err != nil {
log.Errorf("Error running the compile command:%v", err)
}
- cmd = exec.Command("./"+suiteN+".te")
+ cmd = exec.Command("./" + suiteN + ".te")
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
@@ -245,7 +242,7 @@
log.Errorf("Error running the %s command:%v", suiteN+".te", err)
}
}
- suiteF, err := os.Open(suiteN+".json");
+ suiteF, err := os.Open(suiteN + ".json")
log.Infof("Loading test suite from: %s", suiteN+".json")
if err != nil {
log.Error(err)
@@ -271,9 +268,9 @@
// Load the protobuf descriptor file
protoDescriptor := &pb.FileDescriptorSet{}
- fb, err := ioutil.ReadFile(fileName);
+ fb, err := ioutil.ReadFile(fileName)
if err != nil {
- log.Errorf("Could not open proto file '%s'",fileName)
+ log.Errorf("Could not open proto file '%s'", fileName)
rtrn_err = true
}
err = proto.Unmarshal(fb, protoDescriptor)
@@ -282,31 +279,30 @@
rtrn_err = true
}
- var substM map[string]string = make(map[string]string)
+ var substM map[string]string = make(map[string]string)
// Create a substitution map
log.Debugf("Creating import map")
- for _,v := range substs {
+ for _, v := range substs {
log.Debugf("Mapping from %s to %s", v.From, v.To)
substM[v.From] = v.To
}
-
// Build the a map containing the method as the key
// and the paramter and return types as the fields
- for _,f := range protoDescriptor.File {
+ for _, f := range protoDescriptor.File {
if *f.Package == pkg {
- for _, s:= range f.Service {
+ for _, s := range f.Service {
if *s.Name == svc {
log.Debugf("Loading package data '%s' for service '%s'", *f.Package, *s.Name)
// Now create a map keyed by method name with the value being the
// field number of the route selector.
//var ok bool
- for _,m := range s.Method {
+ for _, m := range s.Method {
// Find the input type in the messages and extract the
// field number and save it for future reference.
- log.Debugf("Processing method (%s(%s) (%s){}",*m.Name, (*m.InputType)[1:], (*m.OutputType)[1:])
- mthds[*m.Name] = &mthd{Pkg:pkg, Svc:svc, Name:*m.Name, Param:(*m.InputType)[1:],
- Rtrn:(*m.OutputType)[1:]}
+ log.Debugf("Processing method (%s(%s) (%s){}", *m.Name, (*m.InputType)[1:], (*m.OutputType)[1:])
+ mthds[*m.Name] = &mthd{Pkg: pkg, Svc: svc, Name: *m.Name, Param: (*m.InputType)[1:],
+ Rtrn: (*m.OutputType)[1:]}
if m.ClientStreaming != nil && *m.ClientStreaming == true {
log.Debugf("Method %s is a client streaming method", *m.Name)
mthds[*m.Name].Cs = true
@@ -316,10 +312,10 @@
mthds[*m.Name].Ss = true
}
// Perform the required substitutions
- if _,ok := substM[mthds[*m.Name].Param]; ok == true {
+ if _, ok := substM[mthds[*m.Name].Param]; ok == true {
mthds[*m.Name].Param = substM[mthds[*m.Name].Param]
}
- if _,ok := substM[mthds[*m.Name].Rtrn]; ok == true {
+ if _, ok := substM[mthds[*m.Name].Rtrn]; ok == true {
mthds[*m.Name].Rtrn = substM[mthds[*m.Name].Rtrn]
}
}
@@ -328,40 +324,40 @@
}
}
if rtrn_err {
- return nil,errors.New(fmt.Sprintf("Failed to load protobuf descriptor file '%s'",fileName))
+ return nil, errors.New(fmt.Sprintf("Failed to load protobuf descriptor file '%s'", fileName))
}
return mthds, nil
}
// Server source code generation
-func generateServers(conf *TestConfig, suiteDir string, ts * TestSuite,
- t *template.Template) error {
+func generateServers(conf *TestConfig, suiteDir string, ts *TestSuite,
+ t *template.Template) error {
var servers []ServerConfig
- for k,v := range ts.Env.Servers.Endpoints {
+ for k, v := range ts.Env.Servers.Endpoints {
log.Infof("Generating the code for server[%d]: %s", k, v.Name)
- sc := &ServerConfig{Name:v.Name, Port:v.Port, Ct:k, Imports:ts.Env.Servers.Imports,
- Methods:make(map[string]*mthd)}
- for k1,v1 := range ts.Env.ProtoFiles {
- imp := &ProtoImport{Short:"pb"+strconv.Itoa(k1),
- Package:v1.ImportPath+v1.Package,
- Service:v1.Service,
- Used:true}
- imp = &ProtoImport{Short:v1.Package,
- Package:v1.ImportPath+v1.Package,
- Service:v1.Service,
- Used:true}
+ sc := &ServerConfig{Name: v.Name, Port: v.Port, Ct: k, Imports: ts.Env.Servers.Imports,
+ Methods: make(map[string]*mthd)}
+ for k1, v1 := range ts.Env.ProtoFiles {
+ imp := &ProtoImport{Short: "pb" + strconv.Itoa(k1),
+ Package: v1.ImportPath + v1.Package,
+ Service: v1.Service,
+ Used: true}
+ imp = &ProtoImport{Short: v1.Package,
+ Package: v1.ImportPath + v1.Package,
+ Service: v1.Service,
+ Used: true}
sc.ProtoImports = append(sc.ProtoImports, *imp)
// Compile the template from the file
log.Debugf("Proto substs: %v", ts.Env.ProtoSubsts)
if mthds, err := loadProtoMap(ts.Env.ProtoDesc, v1.Package,
- v1.Service, ts.Env.ProtoSubsts); err != nil {
+ v1.Service, ts.Env.ProtoSubsts); err != nil {
log.Errorf("Unable to process proto descriptor file %s for package: %s, service: %s",
- ts.Env.ProtoDesc, v1.Package, v1.Service)
+ ts.Env.ProtoDesc, v1.Package, v1.Service)
return err
} else {
- //Generate all the function calls required by the
- for k,v := range mthds {
+ //Generate all the function calls required by the
+ for k, v := range mthds {
sc.Methods[k] = v
}
//sc.Methods = mthds
@@ -371,20 +367,20 @@
// Save this server for the next steop
servers = append(servers, *sc)
// Open an output file to put the output in.
- if f,err := os.Create(suiteDir+"/"+v.Name+".go"); err == nil {
+ if f, err := os.Create(suiteDir + "/" + v.Name + ".go"); err == nil {
defer f.Close()
- //if err := t.ExecuteTemplate(os.Stdout, "server.go", *sc); err != nil {}
- if err := t.ExecuteTemplate(f, "server.go", *sc); err != nil {
+ //if err := t.ExecuteTemplate(os.Stdout, "server.go.tmpl", *sc); err != nil {}
+ if err := t.ExecuteTemplate(f, "server.go.tmpl", *sc); err != nil {
log.Errorf("Unable to execute template for server[%d]: %s: %v", k, v.Name, err)
return err
}
}
}
// Generate the server initialization code
- if f,err := os.Create(suiteDir+"/serverInit.go"); err == nil {
+ if f, err := os.Create(suiteDir + "/serverInit.go"); err == nil {
defer f.Close()
- //if err := t.ExecuteTemplate(os.Stdout, "server.go", *sc); err != nil {}
- if err := t.ExecuteTemplate(f, "serverInit.go", servers); err != nil {
+ //if err := t.ExecuteTemplate(os.Stdout, "server.go.tmpl", *sc); err != nil {}
+ if err := t.ExecuteTemplate(f, "serverInit.go.tmpl", servers); err != nil {
log.Errorf("Unable to execute template for serverInit.go: %v", err)
return err
}
@@ -393,37 +389,37 @@
return nil
}
-func generateClients(conf *TestConfig, suiteDir string, ts * TestSuite,
- t *template.Template) error {
+func generateClients(conf *TestConfig, suiteDir string, ts *TestSuite,
+ t *template.Template) error {
var clients []ClientConfig
- for k,v := range ts.Env.Clients.Endpoints {
+ for k, v := range ts.Env.Clients.Endpoints {
log.Infof("Generating the code for client[%d]: %s", k, v.Name)
- cc := &ClientConfig{Name:v.Name, Port:v.Port, Ct:k, Imports:ts.Env.Clients.Imports,
- Methods:make(map[string]*mthd)}
- for _,v1 := range ts.Env.ProtoFiles {
- imp := &ProtoImport{Short:v1.Package,
- Package:v1.ImportPath+v1.Package,
- Service:v1.Service}
+ cc := &ClientConfig{Name: v.Name, Port: v.Port, Ct: k, Imports: ts.Env.Clients.Imports,
+ Methods: make(map[string]*mthd)}
+ for _, v1 := range ts.Env.ProtoFiles {
+ imp := &ProtoImport{Short: v1.Package,
+ Package: v1.ImportPath + v1.Package,
+ Service: v1.Service}
cc.ProtoImports = append(cc.ProtoImports, *imp)
// Compile the template from the file
log.Debugf("Proto substs: %v", ts.Env.ProtoSubsts)
if mthds, err := loadProtoMap(ts.Env.ProtoDesc, v1.Package,
- v1.Service, ts.Env.ProtoSubsts); err != nil {
+ v1.Service, ts.Env.ProtoSubsts); err != nil {
log.Errorf("Unable to process proto descriptor file %s for package: %s, service: %s",
- ts.Env.ProtoDesc, v1.Package, v1.Service)
+ ts.Env.ProtoDesc, v1.Package, v1.Service)
return err
} else {
// Add to the known methods
- for k,v := range mthds {
+ for k, v := range mthds {
cc.Methods[k] = v
}
}
}
clients = append(clients, *cc)
- if f,err := os.Create(suiteDir+"/"+v.Name+"_client.go"); err == nil {
- _=f
+ if f, err := os.Create(suiteDir + "/" + v.Name + "_client.go"); err == nil {
+ _ = f
defer f.Close()
- if err := t.ExecuteTemplate(f, "client.go", cc); err != nil {
+ if err := t.ExecuteTemplate(f, "client.go.tmpl", cc); err != nil {
log.Errorf("Unable to execute template for client.go: %v", err)
return err
}
@@ -432,10 +428,10 @@
return err
}
}
- if f,err := os.Create(suiteDir+"/clientInit.go"); err == nil {
+ if f, err := os.Create(suiteDir + "/clientInit.go"); err == nil {
defer f.Close()
- //if err := t.ExecuteTemplate(os.Stdout, "server.go", *sc); err != nil {}
- if err := t.ExecuteTemplate(f, "clientInit.go", clients); err != nil {
+ //if err := t.ExecuteTemplate(os.Stdout, "server.go.tmpl", *sc); err != nil {}
+ if err := t.ExecuteTemplate(f, "clientInit.go.tmpl", clients); err != nil {
log.Errorf("Unable to execute template for clientInit.go: %v", err)
return err
}
@@ -443,8 +439,8 @@
return nil
}
-func serverExists(srvr string, ts * TestSuite) bool {
- for _,v := range ts.Env.Servers.Endpoints {
+func serverExists(srvr string, ts *TestSuite) bool {
+ for _, v := range ts.Env.Servers.Endpoints {
if v.Name == srvr {
return true
}
@@ -457,7 +453,7 @@
var p string
var e string
r := regexp.MustCompile(`^([^.]+)\..*$`)
- for _,v := range tests {
+ for _, v := range tests {
pa := r.FindStringSubmatch(v.Send.ParamType)
if len(pa) == 2 {
p = pa[1]
@@ -470,10 +466,10 @@
} else {
log.Errorf("Internal error regexp returned %v", pa)
}
- if _,ok := rtrn[p]; ok == false {
+ if _, ok := rtrn[p]; ok == false {
rtrn[p] = struct{}{}
}
- if _,ok := rtrn[e]; ok == false {
+ if _, ok := rtrn[e]; ok == false {
rtrn[e] = struct{}{}
}
}
@@ -483,21 +479,21 @@
func fixupProtoImports(protoImports []ProtoImport, used map[string]struct{}) []ProtoImport {
var rtrn []ProtoImport
//log.Infof("Updating imports %v, using %v", protoImports, used)
- for _,v := range protoImports {
+ for _, v := range protoImports {
//log.Infof("Looking for package %s", v.Package)
- if _,ok := used[v.Short]; ok == true {
- rtrn = append(rtrn, ProtoImport {
+ if _, ok := used[v.Short]; ok == true {
+ rtrn = append(rtrn, ProtoImport{
Service: v.Service,
- Short: v.Short,
+ Short: v.Short,
Package: v.Package,
- Used: true,
+ Used: true,
})
} else {
- rtrn = append(rtrn, ProtoImport {
+ rtrn = append(rtrn, ProtoImport{
Service: v.Service,
- Short: v.Short,
+ Short: v.Short,
Package: v.Package,
- Used: false,
+ Used: false,
})
}
}
@@ -510,7 +506,7 @@
var p string
re := regexp.MustCompile(`^.*/([^/]+)$`)
//log.Infof("Updating imports %v, using %v", protoImports, used)
- for _,v := range imports {
+ for _, v := range imports {
//log.Infof("Looking for match in %s", v.Package)
pa := re.FindStringSubmatch(v.Package)
if len(pa) == 2 {
@@ -519,15 +515,15 @@
log.Errorf("Substring match failed, regexp returned %v", pa)
}
//log.Infof("Looking for package %s", v.Package)
- if _,ok := used[p]; ok == true {
- rtrn = append(rtrn, Import {
+ if _, ok := used[p]; ok == true {
+ rtrn = append(rtrn, Import{
Package: v.Package,
- Used: true,
+ Used: true,
})
} else {
- rtrn = append(rtrn, Import {
+ rtrn = append(rtrn, Import{
Package: v.Package,
- Used: false,
+ Used: false,
})
}
}
@@ -535,37 +531,36 @@
return rtrn
}
-
-func generateTestCases(conf *TestConfig, suiteDir string, ts * TestSuite,
- t *template.Template) error {
+func generateTestCases(conf *TestConfig, suiteDir string, ts *TestSuite,
+ t *template.Template) error {
var mthdMap map[string]*mthd
mthdMap = make(map[string]*mthd)
// Generate the test cases
log.Info("Generating the test cases: runTests.go")
- tc := &TestList{Funcs:make(map[string]MethodTypes),
- FileNum:0, HasFuncs: false,
- Offset:0}
- for _,v := range ts.Env.Imports {
- tc.Imports = append(tc.Imports,Import{Package:v, Used:true})
+ tc := &TestList{Funcs: make(map[string]MethodTypes),
+ FileNum: 0, HasFuncs: false,
+ Offset: 0}
+ for _, v := range ts.Env.Imports {
+ tc.Imports = append(tc.Imports, Import{Package: v, Used: true})
}
// Load the proto descriptor file
- for _,v := range ts.Env.ProtoFiles {
- imp := &ProtoImport{Short:v.Package,
- Package:v.ImportPath+v.Package,
- Service:v.Service,
- Used:true}
+ for _, v := range ts.Env.ProtoFiles {
+ imp := &ProtoImport{Short: v.Package,
+ Package: v.ImportPath + v.Package,
+ Service: v.Service,
+ Used: true}
tc.ProtoImports = append(tc.ProtoImports, *imp)
// Compile the template from the file
log.Debugf("Proto substs: %v", ts.Env.ProtoSubsts)
if mthds, err := loadProtoMap(ts.Env.ProtoDesc, v.Package,
- v.Service, ts.Env.ProtoSubsts); err != nil {
+ v.Service, ts.Env.ProtoSubsts); err != nil {
log.Errorf("Unable to process proto descriptor file %s for package: %s, service: %s",
- ts.Env.ProtoDesc, v.Package, v.Service)
+ ts.Env.ProtoDesc, v.Package, v.Service)
return err
} else {
// Add to the known methods
- for k,v := range mthds {
+ for k, v := range mthds {
mthdMap[k] = v
}
}
@@ -600,18 +595,18 @@
// ReturnType:mthdMap[v.Send.Method].Rtrn}
// }
//}
- for i:=1; i<int(math.Ceil(float64(len(ts.Tests))/float64(MAX_CT))); i++ {
+ for i := 1; i < int(math.Ceil(float64(len(ts.Tests))/float64(MAX_CT))); i++ {
tc.RunTestsCallList = append(tc.RunTestsCallList, "runTests"+strconv.Itoa(i))
}
// Create the test data structure for the template
- for _,v := range ts.Tests {
+ for _, v := range ts.Tests {
var test TestCase
- if _,ok := tc.Funcs[v.Send.Method]; ok == false {
- tc.Funcs[v.Send.Method] = MethodTypes{ParamType:mthdMap[v.Send.Method].Param,
- ReturnType:mthdMap[v.Send.Method].Rtrn,
- CodeGenerated:false}
+ if _, ok := tc.Funcs[v.Send.Method]; ok == false {
+ tc.Funcs[v.Send.Method] = MethodTypes{ParamType: mthdMap[v.Send.Method].Param,
+ ReturnType: mthdMap[v.Send.Method].Rtrn,
+ CodeGenerated: false}
tc.HasFuncs = true
}
@@ -623,13 +618,13 @@
test.Send.ParamType = mthdMap[test.Send.Method].Param
test.Send.Expect = v.Send.Expect
test.Send.ExpectType = mthdMap[test.Send.Method].Rtrn
- for _,v1 := range v.Send.MetaData {
- test.Send.MetaData = append(test.Send.MetaData,v1)
+ for _, v1 := range v.Send.MetaData {
+ test.Send.MetaData = append(test.Send.MetaData, v1)
}
- for _,v1 := range v.Send.ExpectMeta {
- test.Send.ExpectMeta = append(test.Send.ExpectMeta,v1)
+ for _, v1 := range v.Send.ExpectMeta {
+ test.Send.ExpectMeta = append(test.Send.ExpectMeta, v1)
}
- for _,v1 := range v.Servers {
+ for _, v1 := range v.Servers {
var srvr Server
if serverExists(v1.Name, ts) == false {
log.Errorf("Server '%s' is not defined!!", v1.Name)
@@ -647,24 +642,24 @@
tc.ProtoImports = fixupProtoImports(tc.ProtoImports, pkgs)
tc.Imports = fixupImports(tc.Imports, pkgs)
//log.Infof("The packages needed are: %v", pkgs)
- if f,err := os.Create(suiteDir+"/runTests"+strconv.Itoa(tc.FileNum)+".go"); err == nil {
- if err := t.ExecuteTemplate(f, "runTests.go", tc); err != nil {
- log.Errorf("Unable to execute template for runTests.go: %v", err)
+ if f, err := os.Create(suiteDir + "/runTests" + strconv.Itoa(tc.FileNum) + ".go"); err == nil {
+ if err := t.ExecuteTemplate(f, "runTests.go.tmpl", tc); err != nil {
+ log.Errorf("Unable to execute template for runTests.go: %v", err)
}
f.Close()
} else {
log.Errorf("Couldn't create file %s : %v",
- suiteDir+"/runTests"+strconv.Itoa(tc.FileNum)+".go", err)
+ suiteDir+"/runTests"+strconv.Itoa(tc.FileNum)+".go", err)
}
tc.FileNum++
//tc.NextFile++
maxCt = MAX_CT
// Mark the functions as generated.
tc.Tests = []TestCase{}
- for k,v := range tc.Funcs {
- tc.Funcs[k] = MethodTypes{ParamType:v.ParamType,
- ReturnType:v.ReturnType,
- CodeGenerated:true}
+ for k, v := range tc.Funcs {
+ tc.Funcs[k] = MethodTypes{ParamType: v.ParamType,
+ ReturnType: v.ReturnType,
+ CodeGenerated: true}
}
tc.HasFuncs = false
tc.Offset += MAX_CT
@@ -679,18 +674,18 @@
tc.ProtoImports = fixupProtoImports(tc.ProtoImports, pkgs)
tc.Imports = fixupImports(tc.Imports, pkgs)
//log.Infof("The packages needed are: %v", pkgs)
- if f,err := os.Create(suiteDir+"/runTests"+strconv.Itoa(tc.FileNum)+".go"); err == nil {
- if err := t.ExecuteTemplate(f, "runTests.go", tc); err != nil {
- log.Errorf("Unable to execute template for runTests.go: %v", err)
+ if f, err := os.Create(suiteDir + "/runTests" + strconv.Itoa(tc.FileNum) + ".go"); err == nil {
+ if err := t.ExecuteTemplate(f, "runTests.go.tmpl", tc); err != nil {
+ log.Errorf("Unable to execute template for runTests.go: %v", err)
}
f.Close()
} else {
log.Errorf("Couldn't create file %s : %v",
- suiteDir+"/runTests"+strconv.Itoa(tc.FileNum)+".go", err)
+ suiteDir+"/runTests"+strconv.Itoa(tc.FileNum)+".go", err)
}
//if f,err := os.Create(suiteDir+"/runTests.go"); err == nil {
- // if err := t.ExecuteTemplate(f, "runTests.go", tc); err != nil {
+ // if err := t.ExecuteTemplate(f, "runTests.go.tmpl", tc); err != nil {
// log.Errorf("Unable to execute template for runTests.go: %v", err)
// }
// f.Close()
@@ -708,21 +703,21 @@
return err
}
- for k,v := range conf.Suites {
- var suiteDir string = srcDir+"/"+v
+ for k, v := range conf.Suites {
+ var suiteDir string = srcDir + "/" + v
log.Debugf("Suite[%d] - %s", k, v)
ts := &TestSuite{}
ts.loadSuite(v)
log.Debugf("Suite %s: %v", v, ts)
log.Infof("Processing test suite %s", v)
- t := template.Must(template.New("").ParseFiles("../templates/server.go",
- "../templates/serverInit.go",
- "../templates/client.go",
- "../templates/clientInit.go",
- "../templates/runTests.go",
- "../templates/stats.go",
- "../templates/main.go"))
+ t := template.Must(template.New("").ParseFiles("../templates/server.go.tmpl",
+ "../templates/serverInit.go.tmpl",
+ "../templates/client.go.tmpl",
+ "../templates/clientInit.go.tmpl",
+ "../templates/runTests.go.tmpl",
+ "../templates/stats.go.tmpl",
+ "../templates/main.go.tmpl"))
// Create a directory for he source code for this test suite
if err := os.Mkdir(suiteDir, 0777); err != nil {
log.Errorf("Unable to create directory '%s':%v\n", v, err)
@@ -746,9 +741,9 @@
// Finally generate the main file
log.Info("Generating main.go")
- if f,err := os.Create(suiteDir+"/main.go"); err == nil {
- if err := t.ExecuteTemplate(f, "main.go", ts.Env); err != nil {
- log.Errorf("Unable to execute template for main.go: %v", err)
+ if f, err := os.Create(suiteDir + "/main.go"); err == nil {
+ if err := t.ExecuteTemplate(f, "main.go.tmpl", ts.Env); err != nil {
+ log.Errorf("Unable to execute template for main.go: %v", err)
}
f.Close()
} else {
@@ -756,19 +751,18 @@
}
log.Infof("Copying over common modules")
- if f,err := os.Create(suiteDir+"/stats.go"); err == nil {
- if err := t.ExecuteTemplate(f, "stats.go", ts.Env); err != nil {
- log.Errorf("Unable to execute template for stats.go: %v", err)
+ if f, err := os.Create(suiteDir + "/stats.go"); err == nil {
+ if err := t.ExecuteTemplate(f, "stats.go.tmpl", ts.Env); err != nil {
+ log.Errorf("Unable to execute template for stats.go: %v", err)
}
f.Close()
} else {
log.Errorf("Couldn't create file %s : %v", suiteDir+"/stats.go", err)
}
-
log.Infof("Compiling test suite: %s in directory %s", v, suiteDir)
if err := os.Chdir(suiteDir); err != nil {
- log.Errorf("Could not change to directory '%s':%v",suiteDir, err)
+ log.Errorf("Could not change to directory '%s':%v", suiteDir, err)
}
cmd := exec.Command("go", "build", "-o", outDir+"/"+v+".e")
cmd.Stdin = os.Stdin
@@ -778,7 +772,7 @@
log.Errorf("Error running the compile command:%v", err)
}
if err := os.Chdir("../../suites"); err != nil {
- log.Errorf("Could not change to directory '%s':%v","../../suites", err)
+ log.Errorf("Could not change to directory '%s':%v", "../../suites", err)
}
}
return nil
@@ -791,19 +785,19 @@
log.Errorf("Unable to create directory 'driver':%v\n", err)
return err
}
- t := template.Must(template.New("").ParseFiles("../templates/runAll.go",
- "../templates/stats.go"))
- if f,err := os.Create(srcDir+"/runAll.go"); err == nil {
- if err := t.ExecuteTemplate(f, "runAll.go", conf.Suites); err != nil {
- log.Errorf("Unable to execute template for runAll.go: %v", err)
+ t := template.Must(template.New("").ParseFiles("../templates/runAll.go.tmpl",
+ "../templates/stats.go.tmpl"))
+ if f, err := os.Create(srcDir + "/runAll.go"); err == nil {
+ if err := t.ExecuteTemplate(f, "runAll.go.tmpl", conf.Suites); err != nil {
+ log.Errorf("Unable to execute template for runAll.go: %v", err)
}
f.Close()
} else {
log.Errorf("Couldn't create file %s : %v", srcDir+"/runAll.go", err)
}
- if f,err := os.Create(srcDir+"/stats.go"); err == nil {
- if err := t.ExecuteTemplate(f, "stats.go", conf.Suites); err != nil {
- log.Errorf("Unable to execute template for stats.go: %v", err)
+ if f, err := os.Create(srcDir + "/stats.go"); err == nil {
+ if err := t.ExecuteTemplate(f, "stats.go.tmpl", conf.Suites); err != nil {
+ log.Errorf("Unable to execute template for stats.go: %v", err)
}
f.Close()
} else {
@@ -823,16 +817,15 @@
log.Errorf("Error running the compile command:%v", err)
}
if err := os.Chdir("../../suites"); err != nil {
- log.Errorf("Could not change to directory 'driver':%v",err)
+ log.Errorf("Could not change to directory 'driver':%v", err)
}
return nil
}
-
func main() {
- conf,err := parseCmd()
+ conf, err := parseCmd()
if err != nil {
fmt.Printf("Error: %v\n", err)
return
@@ -854,4 +847,3 @@
generateTestDriver(conf, "../tests/driver", "/src/tests")
return
}
-