microservices-demo/src/test-cli/main.go
Ahmet Alp Balkan 0cb633c4df add a test-cli to run smoke tests manually
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2018-06-19 21:40:07 -07:00

78 lines
1.6 KiB
Go

package main
import (
"context"
"log"
"os"
pb "./genproto"
"google.golang.org/grpc"
)
type test struct {
envs []string
f func() error
}
var (
svcs = map[string]test{
"productcatalogservice": {
envs: []string{"PRODUCT_CATALOG_SERVICE_ADDR"},
f: testProductCatalogService,
},
}
)
func main() {
if len(os.Args) != 2 {
panic("incorrect usage")
}
t, ok := svcs[os.Args[1]]
if !ok {
log.Fatalf("test probe for %q not found", os.Args[1])
}
for _, e := range t.envs {
if os.Getenv(e) == "" {
log.Fatalf("environment variable %q not set", e)
}
}
if err := t.f(); err != nil {
panic(err)
}
log.Println("PASS")
}
func testProductCatalogService() error {
addr := os.Getenv("PRODUCT_CATALOG_SERVICE_ADDR")
conn, err := grpc.Dial(addr, grpc.WithInsecure())
if err != nil {
return err
}
defer conn.Close()
log.Printf("--- rpc ListProducts() ")
cl := pb.NewProductCatalogServiceClient(conn)
listResp, err := cl.ListProducts(context.TODO(), &pb.Empty{})
if err != nil {
return err
}
log.Printf("--> %d products returned", len(listResp.GetProducts()))
for _, v := range listResp.GetProducts() {
log.Printf("--> %+v", v)
}
log.Println("--- rpc GetProduct()")
getResp, err := cl.GetProduct(context.TODO(), &pb.GetProductRequest{Id: 1})
if err != nil {
return err
}
log.Printf("retrieved product: %+v", getResp)
log.Printf("--- rpc SearchProducts()")
searchResp, err := cl.SearchProducts(context.TODO(), &pb.SearchProductsRequest{Query: "shirt"})
if err != nil {
return err
}
log.Printf("--> %d results found", len(searchResp.GetResults()))
return nil
}