Home | History | Annotate | Download | only in dm
      1 /*
      2  * Copyright 2014 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef DMJsonWriter_DEFINED
      9 #define DMJsonWriter_DEFINED
     10 
     11 #include "SkString.h"
     12 #include "Test.h"
     13 
     14 namespace DM {
     15 
     16 /**
     17  *  Class for collecting results from DM and writing to a json file.
     18  *  All methods are thread-safe.
     19  */
     20 class JsonWriter {
     21 public:
     22     /**
     23      *  Info describing a single run.
     24      */
     25     struct BitmapResult {
     26         SkString name;            // E.g. "ninepatch-stretch", "desk_gws.skp"
     27         SkString config;          //      "gpu", "8888", "serialize", "pipe"
     28         SkString sourceType;      //      "gm", "skp", "image"
     29         SkString sourceOptions;   //      "image", "codec", "subset", "scanline"
     30         SkString md5;             // In ASCII, so 32 bytes long.
     31         SkString ext;             // Extension of file we wrote: "png", "pdf", ...
     32     };
     33 
     34     /**
     35      *  Add a result to the end of the list of results.
     36      */
     37     static void AddBitmapResult(const BitmapResult&);
     38 
     39     /**
     40      *  Add a Failure from a Test.
     41      */
     42     static void AddTestFailure(const skiatest::Failure&);
     43 
     44     /**
     45      *  Write all collected results to the file FLAGS_writePath[0]/dm.json.
     46      */
     47     static void DumpJson();
     48 
     49     /**
     50      * Read JSON file at path written by DumpJson, calling callback for each
     51      * BitmapResult recorded in the file.  Return success.
     52      */
     53     static bool ReadJson(const char* path, void(*callback)(BitmapResult));
     54 };
     55 
     56 
     57 } // namespace DM
     58 #endif // DMJsonWriter_DEFINED
     59