/**
   * {@inheritDoc}
   *
   * @see edu.upenn.cis.orchestra.AbstractMultiSystemOrchestraTest#betweenPrepareAndTest()
   */
  @Override
  protected void betweenPrepareAndTestImpl() throws Exception {
    for (OrchestraTestFrame testFrame : testFrames) {
      File f = new File("stateStore_env_" + testFrame.getPeerName());
      if (f.exists() && f.isDirectory()) {
        File[] contents = f.listFiles();
        for (File file : contents) {
          file.delete();
        }
        f.delete();
      }
      ITestFrameWrapper<OrchestraSystem> systemFrame =
          new OrchestraSystemTestFrame(orchestraSchema, testFrame);
      Assert.assertEquals(systemFrame.getOrchestraController().getName(), orchestraSchemaName);
      peerToOrchestraSystemFrame.put(testFrame.getPeerName(), systemFrame);
    }
    assertTrue(peerToOrchestraSystemFrame.values().size() > 0);

    bdbDataSetFactory =
        new BdbDataSetFactory(
            new File("updateStore_env"),
            orchestraSchema.getName(),
            peerToOrchestraSystemFrame.keySet());
    operationFactory =
        new MultiOrchestraSystemOperationFactory(
            orchestraSchema,
            testDataDirectory,
            onlyGenerateDataSets,
            peerToOrchestraSystemFrame,
            bdbDataSetFactory);
    executor = new MultiSystemOrchestraOperationExecutor(operationFactory);
  }
  /**
   * {@inheritDoc}
   *
   * @see edu.upenn.cis.orchestra.AbstractMultiSystemOrchestraTest#shutdownImpl()
   */
  @Override
  protected void shutdownImpl() throws Exception {
    for (ITestFrameWrapper<OrchestraSystem> frame : peerToOrchestraSystemFrame.values()) {
      OrchestraSystem orchestraSystem = frame.getOrchestraController();
      if (orchestraSystem != null) {
        orchestraSystem.getMappingDb().finalize();
        orchestraSystem.reset(false);
        orchestraSystem.getMappingDb().disconnect();
        Assert.assertFalse(
            orchestraSystem.getMappingDb().isConnected(), "Mapping DB did not disconnect.");
        orchestraSystem.disconnect();

        logger.debug("Shutting down Orchestra system.");
      }
    }
  }