// Path: honeybadger-java/src/main/java/io/honeybadger/reporter/config/ConfigContext.java
// public interface ConfigContext {
//     /** @return name of environment */
//     String getEnvironment();
// 
//     /** @return Honeybadger URL to use */
//     URI getHoneybadgerUrl();
// 
//     /** @return Honeybadger API key to use */
//     String getApiKey();
// 
//     /** @return Set of system properties to not include */
//     Set<String> getExcludedSysProps();
// 
//     /** @return Set of parameters to not include */
//     Set<String> getExcludedParams();
// 
//     /** @return Set of exception classes to ignore */
//     Set<String> getExcludedClasses();
// 
//     /** @return String that maps a package to an application */
//     String getApplicationPackage();
// 
//     /** @return Honeybadger Read API key */
//     String getHoneybadgerReadApiKey();
// 
//     /** @return Do we display the feedback form? */
//     Boolean isFeedbackFormDisplayed();
// 
//     /** @return The path to the feedback form template */
//     String getFeedbackFormPath();
// 
//     /** @return Host of proxy server to send traffic through */
//     String getHttpProxyHost();
// 
//     /** @return Port of proxy server to send traffic through */
//     Integer getHttpProxyPort();
// 
//     /** @return Optional configuration parameter to adjust number of attempts to retry sending an error
//      * report in the event of a network timeout or other transmission exception. Defaults to 3. */
//     Integer getMaximumErrorReportingRetries();
// 
//     /** @return Timeout for socket connection within HTTP client */
//     Integer getSocketTimeout();
// 
//     /** @return Timeout for initial connect within HTTP client */
//     Integer getConnectTimeout();
// }
// 
// Path: honeybadger-java/src/main/java/io/honeybadger/reporter/config/SystemSettingsConfigContext.java
// public class SystemSettingsConfigContext extends BaseChainedConfigContext {
//     /**
//      * Populate configuration from defaults, environment variables and system
//      * properties.
//      */
//     public SystemSettingsConfigContext() {
//         // load defaults
//         super();
//         // overwrite with environment variables
//         overwriteWithContext(new MapConfigContext(System.getenv()));
//         // overwrite with system properties
//         overwriteWithContext(new MapConfigContext(System.getProperties()));
//     }
// 
//     /**
//      * Populate configuration from defaults, environment variables, system
//      * properties and an addition context passed in.
//      *
//      * @param context additional context to layer on top
//      */
//     public SystemSettingsConfigContext(final ConfigContext context) {
//         // load all of the chained defaults
//         this();
//         // now load in an additional context
//         overwriteWithContext(context);
//     }
// }
// 
// Path: honeybadger-java/src/test/java/org/apache/http/client/fluent/FakeResponse.java
// public class FakeResponse extends Response {
//     public FakeResponse(HttpResponse httpResponse) {
//         super(httpResponse);
//     }
// }


import io.honeybadger.reporter.config.ConfigContext;
import io.honeybadger.reporter.config.SystemSettingsConfigContext;
import org.apache.http.HttpVersion;
import org.apache.http.client.fluent.FakeResponse;
import org.apache.http.client.fluent.Response;
import org.apache.http.impl.DefaultHttpResponseFactory;
import org.apache.http.protocol.BasicHttpContext;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import static org.junit.Assert.assertEquals;
package io.honeybadger.reporter;





public class HoneyBadgerReporterTest {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    class ExceptionThrowingReporter extends HoneybadgerReporter {
        int attemptCount = 0;

// Path: honeybadger-java/src/main/java/io/honeybadger/reporter/config/ConfigContext.java
// public interface ConfigContext {
//     /** @return name of environment */
//     String getEnvironment();
// 
//     /** @return Honeybadger URL to use */
//     URI getHoneybadgerUrl();
// 
//     /** @return Honeybadger API key to use */
//     String getApiKey();
// 
//     /** @return Set of system properties to not include */
//     Set<String> getExcludedSysProps();
// 
//     /** @return Set of parameters to not include */
//     Set<String> getExcludedParams();
// 
//     /** @return Set of exception classes to ignore */
//     Set<String> getExcludedClasses();
// 
//     /** @return String that maps a package to an application */
//     String getApplicationPackage();
// 
//     /** @return Honeybadger Read API key */
//     String getHoneybadgerReadApiKey();
// 
//     /** @return Do we display the feedback form? */
//     Boolean isFeedbackFormDisplayed();
// 
//     /** @return The path to the feedback form template */
//     String getFeedbackFormPath();
// 
//     /** @return Host of proxy server to send traffic through */
//     String getHttpProxyHost();
// 
//     /** @return Port of proxy server to send traffic through */
//     Integer getHttpProxyPort();
// 
//     /** @return Optional configuration parameter to adjust number of attempts to retry sending an error
//      * report in the event of a network timeout or other transmission exception. Defaults to 3. */
//     Integer getMaximumErrorReportingRetries();
// 
//     /** @return Timeout for socket connection within HTTP client */
//     Integer getSocketTimeout();
// 
//     /** @return Timeout for initial connect within HTTP client */
//     Integer getConnectTimeout();
// }
// 
// Path: honeybadger-java/src/main/java/io/honeybadger/reporter/config/SystemSettingsConfigContext.java
// public class SystemSettingsConfigContext extends BaseChainedConfigContext {
//     /**
//      * Populate configuration from defaults, environment variables and system
//      * properties.
//      */
//     public SystemSettingsConfigContext() {
//         // load defaults
//         super();
//         // overwrite with environment variables
//         overwriteWithContext(new MapConfigContext(System.getenv()));
//         // overwrite with system properties
//         overwriteWithContext(new MapConfigContext(System.getProperties()));
//     }
// 
//     /**
//      * Populate configuration from defaults, environment variables, system
//      * properties and an addition context passed in.
//      *
//      * @param context additional context to layer on top
//      */
//     public SystemSettingsConfigContext(final ConfigContext context) {
//         // load all of the chained defaults
//         this();
//         // now load in an additional context
//         overwriteWithContext(context);
//     }
// }
// 
// Path: honeybadger-java/src/test/java/org/apache/http/client/fluent/FakeResponse.java
// public class FakeResponse extends Response {
//     public FakeResponse(HttpResponse httpResponse) {
//         super(httpResponse);
//     }
// }


// Path: honeybadger-java/src/test/java/io/honeybadger/reporter/HoneyBadgerReporterTest.java
import io.honeybadger.reporter.config.ConfigContext;
import io.honeybadger.reporter.config.SystemSettingsConfigContext;
import org.apache.http.HttpVersion;
import org.apache.http.client.fluent.FakeResponse;
import org.apache.http.client.fluent.Response;
import org.apache.http.impl.DefaultHttpResponseFactory;
import org.apache.http.protocol.BasicHttpContext;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import static org.junit.Assert.assertEquals;

package io.honeybadger.reporter;





public class HoneyBadgerReporterTest {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    class ExceptionThrowingReporter extends HoneybadgerReporter {
        int attemptCount = 0;

        public ExceptionThrowingReporter(ConfigContext configContext) {