@Test
  public void testLoadWithBadFiles() throws Exception {
    int numConfigs = 1;
    String dir = ".";
    PhysicalSourceConfig[] pConfigs = new PhysicalSourceConfig[numConfigs];
    DatabusRelaySourcesInFiles databusSources = new DatabusRelaySourcesInFiles(dir);
    String[] pNames = new String[numConfigs];
    for (int i = 0; i < numConfigs; ++i) {
      String pName = "physical" + i;
      pNames[i] = pName;
      pConfigs[i] = createPhysicalSourceConfig(pName, 100 * (i + 1), i + 1);
      Assert.assertTrue(databusSources.add(pName, pConfigs[i]));
    }
    // save 1 legal json file
    Assert.assertTrue(databusSources.save());
    // now add bad jsob files
    String badJson = dir + "/bad.json";
    String emptyJson = dir + "/empty.json";

    File fBad = new File(badJson);
    fBad.createNewFile();
    File fEmpty = new File(emptyJson);
    fEmpty.createNewFile();
    FileWriter w1 = new FileWriter(fBad);
    w1.append("This is bad json");
    w1.close();

    DatabusRelaySourcesInFiles readSources = new DatabusRelaySourcesInFiles(dir);

    boolean t = readSources.load();

    // delete old files after reading it
    fBad.delete();
    readSources.removePersistedEntries();
    fEmpty.delete();

    Assert.assertTrue(t);
    PhysicalSourceConfig[] pNoConfigs = readSources.getAll();
    Assert.assertEquals(1, pNoConfigs.length);
    Assert.assertEquals(1, readSources.size());
  }
  @Test
  public void testSourceInfoSaveLoad() throws Exception {
    // create a physcial source config object
    int numConfigs = 3;
    String dir = ".";
    PhysicalSourceConfig[] pConfigs = new PhysicalSourceConfig[numConfigs];
    DatabusRelaySourcesInFiles databusSources = new DatabusRelaySourcesInFiles(dir);
    String[] pNames = new String[numConfigs];
    for (int i = 0; i < numConfigs; ++i) {
      String pName = "physical" + i;
      pNames[i] = pName;
      pConfigs[i] = createPhysicalSourceConfig(pName, 100 * (i + 1), i + 1);
      Assert.assertTrue(databusSources.add(pName, pConfigs[i]));
    }
    Assert.assertTrue(databusSources.save());

    DatabusRelaySourcesInFiles readSources = new DatabusRelaySourcesInFiles(dir);
    Assert.assertTrue(readSources.load());
    PhysicalSourceConfig[] readConfigs = readSources.getAll();
    Assert.assertEquals(numConfigs, readConfigs.length);
    // now compare configs; what was written is what was read
    for (String pSrcName : pNames) {
      PhysicalSourceConfig p1 = databusSources.get(pSrcName);
      PhysicalSourceConfig p2 = readSources.get(pSrcName);
      checkIfEqual(p1, p2);
    }

    // remove all entries;
    databusSources.removePersistedEntries();

    // read empty dir
    Assert.assertTrue(readSources.load());
    PhysicalSourceConfig[] pNoConfigs = readSources.getAll();
    Assert.assertEquals(0, pNoConfigs.length);
    Assert.assertEquals(0, readSources.size());
  }