/** Run the metadata test to see if it discovers any errors. */
  public boolean testMetadata() throws Throwable {
    addTag(Tag.POSITIVE);
    addTag(HoneycombTag.QUERY);
    addTag(HoneycombTag.JAVA_API);
    // addTag(Tag.QUICK);
    // addTag(Tag.REGRESSION);
    // addTag(Tag.SMOKE);
    if (excludeCase()) return false;

    TestMetadata Metadata = new TestMetadata();
    String args[] = {"-s", testBed.getDataVIP(), "-p", "" + testBed.getDataPort(), "-T"};
    try {
      Metadata.main(args);
    } catch (HoneycombTestException hte) {
      // Look at the exception message to see if it passed or failed
      String rc = hte.getMessage();
      Log.DEBUG("Result is " + rc);
      if (!rc.equals(TestRun.PASS)) {
        Log.ERROR("Test failed...see stdout");
        return (false);
      }
    }

    return (true);
  }
  /** Retrieve a file. */
  public boolean testBRetrieveAfterStore() {
    if (!setupOK) addTag(Tag.MISSINGDEP, "failed some dependency");
    addTag(Tag.SMOKE);
    addTag(Tag.REGRESSION);
    addTag(Tag.QUICK);
    addTag(Tag.SMOKE);
    addTag(HoneycombTag.RETRIEVEDATA);
    addTag(HoneycombTag.JAVA_API);
    addTag(HoneycombTag.EMULATOR);

    if (excludeCase()) return false;

    CmdResult cr;
    try {
      cr = retrieve(storeResult.mdoid);
      Log.INFO(
          "Retrieved oid "
              + storeResult.mdoid
              + " @ "
              + (cr.filesize * 1000 / cr.time)
              + " bytes/sec");
    } catch (HoneycombTestException hte) {
      Log.ERROR("Retrieve failed [oid " + storeResult.mdoid + "]: " + hte.getMessage());
      Log.DEBUG(Log.stackTrace(hte));
      return (false);
    }

    if (TestBed.doHash) {
      try {
        verifyFilesMatch(storeResult, cr);
        Log.INFO("Retrieved file matched stored file");
      } catch (HoneycombTestException hte) {
        Log.ERROR("verifyFilesMatch failed: " + hte.getMessage());
        return (false);
      }
    } else Log.INFO("skipping hash check");

    return (true);
  }