Multiple changes to the test framework. Interim commit
to avoid losing code if my VM crashes
Change-Id: I5f03db81851dba1fb0c944c8e5f3a845ddbec2c8
diff --git a/tests/afrouter/templates/client.go b/tests/afrouter/templates/client.go
index d384baf..8cd3330 100644
--- a/tests/afrouter/templates/client.go
+++ b/tests/afrouter/templates/client.go
@@ -22,6 +22,7 @@
"encoding/json"
"google.golang.org/grpc"
"golang.org/x/net/context"
+ "google.golang.org/grpc/metadata"
"github.com/opencord/voltha-go/common/log"
// Values generated by the go template
{{range .Imports}}
@@ -35,7 +36,7 @@
{{if .Ct}}{{else}}
type clientCtl struct {
- send func(string, interface{}, string) error
+ send func(string, context.Context, interface{}, string, metadata.MD) error
cncl context.CancelFunc
ctx context.Context
}
@@ -74,19 +75,23 @@
// parameter and validate that the response matches the expected
// value provided. It will return nil if successful or an error
// if not.
-func {{.Name}}Send(mthd string, param interface{}, expect string) error {
+func {{.Name}}Send(mthd string, ctx context.Context, param interface{},
+ expect string, expectMeta metadata.MD) error {
switch mthd {
{{range .Methods}}
- case "{{.Name}}":
+ case "{{.Name}}":
+ var hdr metadata.MD
switch t := param.(type) {
- case *{{.Param}}:
+ case *{{.Param}}:
{{if .Ss}}
_=t
+ _=hdr
{{else if .Cs}}
_=t
+ _=hdr
{{else}}
client := {{.Pkg}}.New{{.Svc}}Client({{$.Name}}Client.conn)
- res, err := client.{{.Name}}(context.Background(), t)
+ res, err := client.{{.Name}}(ctx, t, grpc.Header(&hdr))
if err != nil {
return errors.New("Error sending method {{.Name}}")
}
@@ -94,13 +99,27 @@
// value.
if resS,err := json.Marshal(res); err == nil {
if string(resS) != expect {
+ resFile.testLog("Unexpected result returned\n")
return errors.New("Unexpected result on method {{.Name}}")
}
} else {
return errors.New("Error Marshaling the reply for method {{.Name}}")
}
- default:
- return errors.New("Invalid parameter type for method {{.Name}}")
+ // Now validate the metadata in the response
+ for k,v := range expectMeta {
+ if rv,ok := hdr[k]; ok == true {
+ if rv[0] != v[0] {
+ resFile.testLog("Mismatch on returned metadata for key '%s' expected '%s' and got '%s'\n", k, v, rv)
+ err = errors.New("Failure on returned metadata")
+ }
+ } else {
+ resFile.testLog("Returned metadata missing key '%s'; expected value '%s' at that key\n", k, v)
+ err = errors.New("Failure on returned metadata")
+ }
+ }
+ return err
+ default:
+ return errors.New("Invalid parameter type for method {{.Name}}")
{{end}}
}
{{end}}