| // Simple command line app that compares the images based on their digests. |
| // This is a simple standalone client to the skia_image_server. |
| // Primarily used for debugging. |
| package main |
| |
| import ( |
| "flag" |
| "fmt" |
| "os" |
| |
| "go.skia.org/infra/go/common" |
| "go.skia.org/infra/go/sklog" |
| "go.skia.org/infra/golden/go/diff" |
| "go.skia.org/infra/golden/go/diffstore" |
| "google.golang.org/grpc" |
| ) |
| |
| var ( |
| grpcAddr = flag.String("grpc_address", "localhost:9000", "gRPC service address (e.g., ':9000')") |
| ) |
| |
| func main() { |
| common.Init() |
| if flag.NArg() < 2 { |
| sklog.Fatalf("Usage: %s digest1 digest2 [digest3 ... digestN]\n", os.Args[0]) |
| } |
| |
| args := flag.Args() |
| mainDigest := args[0] |
| rightDigests := args[1:] |
| |
| // Create the client connection and connect to the server. |
| conn, err := grpc.Dial(*grpcAddr, grpc.WithInsecure()) |
| if err != nil { |
| sklog.Fatalf("Unable to connect to grpc service: %s", err) |
| } |
| |
| codec := diffstore.MetricMapCodec{} |
| diffStore, err := diffstore.NewNetDiffStore(conn, "", codec) |
| if err != nil { |
| sklog.Fatalf("Unable to initialize NetDiffStore: %s", err) |
| } |
| |
| diffResult, err := diffStore.Get(diff.PRIORITY_NOW, mainDigest, rightDigests) |
| if err != nil { |
| sklog.Fatalf("Unable to compare digests: %s", err) |
| } |
| |
| for _, rDigest := range rightDigests { |
| fmt.Printf("%s <-> %s\n", mainDigest, rDigest) |
| if metrics, ok := diffResult[rDigest].(*diff.DiffMetrics); ok { |
| fmt.Printf(" Dimensions are different: %v\n", metrics.DimDiffer) |
| fmt.Printf(" Number of pixels different: %v\n", metrics.NumDiffPixels) |
| fmt.Printf(" Pixel diff percent: %v\n", metrics.PixelDiffPercent) |
| fmt.Printf(" Max RGBA: %v\n", metrics.MaxRGBADiffs) |
| } else { |
| fmt.Printf(" ERR: No result available.") |
| } |
| } |
| } |