public void testWriteResultsToFile() {
    List<ITestResult> testResult1 = mock(List.class);
    ResultsForAllTests results1 = mock(ResultsForAllTests.class);
    when(results1.getTestResults()).thenReturn(testResult1);

    List<ITestResult> testResult2 = mock(List.class);
    ResultsForAllTests results2 = mock(ResultsForAllTests.class);
    when(results2.getTestResults()).thenReturn(testResult2);

    String expectedCsvContents1 = "expected-csv-contents1";
    String expectedCsvContents2 = "expected-csv-contents2";
    String expectedSummaryFileContents = "expected-summary-file";
    when(_csvFormater.format(testResult1)).thenReturn(expectedCsvContents1);
    when(_csvFormater.format(testResult2)).thenReturn(expectedCsvContents2);

    _resultsFileWriter.begin();
    _resultsFileWriter.writeResults(results1, "config1.json");

    File resultsFile1 = new File(_outputDir, "config1.csv");
    assertEquals(expectedCsvContents1, FileUtils.readFileAsString(resultsFile1));

    _resultsFileWriter.writeResults(results2, "config2.json");

    File resultsFile2 = new File(_outputDir, "config2.csv");
    assertEquals(expectedCsvContents2, FileUtils.readFileAsString(resultsFile2));

    when(_csvFormater.format(any(List.class))).thenReturn(expectedSummaryFileContents);

    _resultsFileWriter.end();

    File summaryFile = new File(_outputDir, ResultsCsvWriter.TEST_SUMMARY_FILE_NAME);
    assertEquals(expectedSummaryFileContents, FileUtils.readFileAsString(summaryFile));
  }
  // This indirectly tests QPID-6283
  public void testFileSystemCheckWarnsWhenFileSystemDoesNotExist() throws Exception {
    Map<String, Object> attributes =
        Collections.<String, Object>singletonMap(AbstractVirtualHost.NAME, getTestName());
    final MessageStore store = mock(MessageStore.class);
    when(store.newMessageStoreReader()).thenReturn(mock(MessageStore.MessageStoreReader.class));
    File nonExistingFile = TestFileUtils.createTempFile(this);
    FileUtils.delete(nonExistingFile, false);
    when(store.getStoreLocationAsFile()).thenReturn(nonExistingFile);
    setTestSystemProperty("virtualhost.housekeepingCheckPeriod", "100");

    final AbstractVirtualHost host =
        new AbstractVirtualHost(attributes, _node) {
          @Override
          protected MessageStore createMessageStore() {
            return store;
          }
        };

    String loggerName = AbstractVirtualHost.class.getName();
    assertActionProducesLogMessage(
        new Runnable() {
          @Override
          public void run() {
            host.open();
          }
        },
        loggerName,
        Level.WARN,
        "Cannot check file system for disk space");
    host.close();
  }
  public void setUp() throws Exception {
    super.setUp();

    _queueId = UUIDGenerator.generateRandomUUID();
    _exchangeId = UUIDGenerator.generateRandomUUID();

    _storeName = getName();
    _storePath = TMP_FOLDER + File.separator + _storeName;
    FileUtils.delete(new File(_storePath), true);
    setTestSystemProperty("QPID_WORK", TMP_FOLDER);
    _configuration = mock(Configuration.class);
    _recoveryHandler = mock(ConfigurationRecoveryHandler.class);
    _queueRecoveryHandler = mock(QueueRecoveryHandler.class);
    _exchangeRecoveryHandler = mock(ExchangeRecoveryHandler.class);
    _bindingRecoveryHandler = mock(BindingRecoveryHandler.class);
    _storedMessageRecoveryHandler = mock(StoredMessageRecoveryHandler.class);
    _logRecoveryHandler = mock(TransactionLogRecoveryHandler.class);
    _messageStoreRecoveryHandler = mock(MessageStoreRecoveryHandler.class);
    _queueEntryRecoveryHandler =
        mock(TransactionLogRecoveryHandler.QueueEntryRecoveryHandler.class);
    _dtxRecordRecoveryHandler = mock(TransactionLogRecoveryHandler.DtxRecordRecoveryHandler.class);

    when(_messageStoreRecoveryHandler.begin()).thenReturn(_storedMessageRecoveryHandler);
    when(_recoveryHandler.begin(isA(MessageStore.class))).thenReturn(_exchangeRecoveryHandler);
    when(_exchangeRecoveryHandler.completeExchangeRecovery()).thenReturn(_queueRecoveryHandler);
    when(_queueRecoveryHandler.completeQueueRecovery()).thenReturn(_bindingRecoveryHandler);
    when(_logRecoveryHandler.begin(any(MessageStore.class))).thenReturn(_queueEntryRecoveryHandler);
    when(_queueEntryRecoveryHandler.completeQueueEntryRecovery())
        .thenReturn(_dtxRecordRecoveryHandler);
    when(_exchange.getNameShortString()).thenReturn(AMQShortString.valueOf(EXCHANGE_NAME));
    when(_exchange.getId()).thenReturn(_exchangeId);
    when(_configuration.getString(eq(MessageStoreConstants.ENVIRONMENT_PATH_PROPERTY), anyString()))
        .thenReturn(_storePath);

    _bindingArgs = new FieldTable();
    AMQShortString argKey = AMQPFilterTypes.JMS_SELECTOR.getValue();
    String argValue = "some selector expression";
    _bindingArgs.put(argKey, argValue);

    reopenStore();
  }
  /**
   * Reads the properties file, and creates a dynamic security provider to register the SASL
   * implementations with.
   */
  public static ProviderRegistrationResult registerSaslProviders() {
    _logger.debug("public static void registerSaslProviders(): called");
    ProviderRegistrationResult result = ProviderRegistrationResult.FAILED;
    // Open the SASL properties file, using the default name is one is not specified.
    String filename = System.getProperty(FILE_PROPERTY);
    InputStream is =
        FileUtils.openFileOrDefaultResource(
            filename, DEFAULT_RESOURCE_NAME, DynamicSaslRegistrar.class.getClassLoader());

    try {
      Properties props = new Properties();
      props.load(is);

      _logger.debug("props = " + props);

      Map<String, Class<? extends SaslClientFactory>> factories = parseProperties(props);

      if (factories.size() > 0) {
        // Ensure we are used before the defaults
        JCAProvider qpidProvider = new JCAProvider(factories);
        if (Security.insertProviderAt(qpidProvider, 1) == -1) {
          Provider registeredProvider = findProvider(JCAProvider.QPID_CLIENT_SASL_PROVIDER_NAME);
          if (registeredProvider == null) {
            result = ProviderRegistrationResult.FAILED;
            _logger.error("Unable to load custom SASL providers.");
          } else if (registeredProvider.equals(qpidProvider)) {
            result = ProviderRegistrationResult.EQUAL_ALREADY_REGISTERED;
            _logger.debug("Custom SASL provider is already registered with equal properties.");
          } else {
            result = ProviderRegistrationResult.DIFFERENT_ALREADY_REGISTERED;
            _logger.warn("Custom SASL provider was already registered with different properties.");
            if (_logger.isDebugEnabled()) {
              _logger.debug(
                  "Custom SASL provider "
                      + registeredProvider
                      + " properties: "
                      + new HashMap<Object, Object>(registeredProvider));
            }
          }
        } else {
          result = ProviderRegistrationResult.SUCCEEDED;
          _logger.info("Additional SASL providers successfully registered.");
        }
      } else {
        result = ProviderRegistrationResult.NO_SASL_FACTORIES;
        _logger.warn("No additional SASL factories found to register.");
      }
    } catch (IOException e) {
      result = ProviderRegistrationResult.FAILED;
      _logger.error("Error reading properties: " + e, e);
    } finally {
      if (is != null) {
        try {
          is.close();

        } catch (IOException e) {
          _logger.error("Unable to close properties stream: " + e, e);
        }
      }
    }
    return result;
  }
 public void tearDown() throws Exception {
   FileUtils.delete(new File(_storePath), true);
   super.tearDown();
 }