Search in sources :

Example 1 with NoOpCmdLineInterface

use of com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface in project buck by facebook.

the class InteractiveReportIntegrationTest method createDefectReport.

private static DefectSubmitResult createDefectReport(ProjectWorkspace workspace, ByteArrayInputStream inputStream) throws IOException, InterruptedException {
    ProjectFilesystem filesystem = workspace.asCell().getFilesystem();
    ObjectMapper objectMapper = ObjectMappers.newDefaultInstance();
    RageConfig rageConfig = RageConfig.of(workspace.asCell().getBuckConfig());
    Clock clock = new DefaultClock();
    ExtraInfoCollector extraInfoCollector = Optional::empty;
    TestConsole console = new TestConsole();
    DefectReporter defectReporter = new DefaultDefectReporter(filesystem, objectMapper, rageConfig, BuckEventBusFactory.newInstance(clock), clock);
    WatchmanDiagReportCollector watchmanDiagReportCollector = new WatchmanDiagReportCollector(filesystem, WATCHMAN_DIAG_COMMAND, createFakeWatchmanDiagProcessExecutor(console));
    InteractiveReport interactiveReport = new InteractiveReport(defectReporter, filesystem, objectMapper, console, inputStream, TestBuildEnvironmentDescription.INSTANCE, VcsInfoCollector.create(new NoOpCmdLineInterface()), rageConfig, extraInfoCollector, Optional.of(watchmanDiagReportCollector));
    return interactiveReport.collectAndSubmitResult().get();
}
Also used : DefaultClock(com.facebook.buck.timing.DefaultClock) NoOpCmdLineInterface(com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface) ProjectFilesystem(com.facebook.buck.io.ProjectFilesystem) DefaultClock(com.facebook.buck.timing.DefaultClock) Clock(com.facebook.buck.timing.Clock) TestConsole(com.facebook.buck.testutil.TestConsole) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Example 2 with NoOpCmdLineInterface

use of com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface in project buck by facebook.

the class RageCommandIntegrationTest method testExtraInfo.

@Test
public void testExtraInfo() throws Exception {
    ProjectWorkspace workspace = TestDataHelper.createProjectWorkspaceForScenario(this, "interactive_report", temporaryFolder);
    workspace.setUp();
    RageConfig rageConfig = createRageConfig(0, "python, extra.py", RageProtocolVersion.SIMPLE);
    ProjectFilesystem filesystem = new ProjectFilesystem(temporaryFolder.getRoot());
    Console console = new TestConsole();
    CapturingDefectReporter defectReporter = new CapturingDefectReporter();
    AutomatedReport automatedReport = new AutomatedReport(defectReporter, filesystem, ObjectMappers.newDefaultInstance(), new TestConsole(), TestBuildEnvironmentDescription.INSTANCE, VcsInfoCollector.create(new NoOpCmdLineInterface()), rageConfig, new DefaultExtraInfoCollector(rageConfig, filesystem, new DefaultProcessExecutor(console)));
    automatedReport.collectAndSubmitResult();
    DefectReport defectReport = defectReporter.getDefectReport();
    assertThat(defectReport.getExtraInfo(), Matchers.equalTo(Optional.of("Extra\n")));
    assertThat(FluentIterable.from(defectReport.getIncludedPaths()).transform(Object::toString), Matchers.hasItem(Matchers.endsWith("extra.txt")));
}
Also used : ProjectWorkspace(com.facebook.buck.testutil.integration.ProjectWorkspace) DefaultProcessExecutor(com.facebook.buck.util.DefaultProcessExecutor) NoOpCmdLineInterface(com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface) Console(com.facebook.buck.util.Console) TestConsole(com.facebook.buck.testutil.TestConsole) ProjectFilesystem(com.facebook.buck.io.ProjectFilesystem) TestConsole(com.facebook.buck.testutil.TestConsole) Test(org.junit.Test)

Example 3 with NoOpCmdLineInterface

use of com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface in project buck by facebook.

the class RageCommandIntegrationTest method testUploadFailure.

@Test
public void testUploadFailure() throws Exception {
    ProjectWorkspace workspace = TestDataHelper.createProjectWorkspaceForScenario(this, "interactive_report", temporaryFolder);
    workspace.setUp();
    try (HttpdForTests httpd = new HttpdForTests()) {
        httpd.addHandler(new AbstractHandler() {

            @Override
            public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
                httpServletResponse.setStatus(500);
                request.setHandled(true);
            }
        });
        httpd.start();
        RageConfig rageConfig = createRageConfig(httpd.getRootUri().getPort(), "", RageProtocolVersion.SIMPLE);
        ProjectFilesystem filesystem = new ProjectFilesystem(temporaryFolder.getRoot());
        ObjectMapper objectMapper = ObjectMappers.newDefaultInstance();
        Clock clock = new DefaultClock();
        DefectReporter reporter = new DefaultDefectReporter(filesystem, objectMapper, rageConfig, BuckEventBusFactory.newInstance(clock), clock);
        AutomatedReport automatedReport = new AutomatedReport(reporter, filesystem, objectMapper, new TestConsole(), TestBuildEnvironmentDescription.INSTANCE, VcsInfoCollector.create(new NoOpCmdLineInterface()), rageConfig, Optional::empty);
        DefectSubmitResult submitReport = automatedReport.collectAndSubmitResult().get();
        // If upload fails it should store the zip locally and inform the user.
        assertFalse(submitReport.getReportSubmitErrorMessage().get().isEmpty());
        ZipInspector zipInspector = new ZipInspector(filesystem.resolve(submitReport.getReportSubmitLocation().get()));
        assertEquals(zipInspector.getZipFileEntries().size(), 7);
    }
}
Also used : HttpdForTests(com.facebook.buck.testutil.integration.HttpdForTests) Optional(java.util.Optional) NoOpCmdLineInterface(com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface) ZipInspector(com.facebook.buck.testutil.integration.ZipInspector) Request(org.eclipse.jetty.server.Request) HttpServletRequest(javax.servlet.http.HttpServletRequest) HttpServletResponse(javax.servlet.http.HttpServletResponse) IOException(java.io.IOException) DefaultClock(com.facebook.buck.timing.DefaultClock) Clock(com.facebook.buck.timing.Clock) AbstractHandler(org.eclipse.jetty.server.handler.AbstractHandler) HttpServletRequest(javax.servlet.http.HttpServletRequest) ServletException(javax.servlet.ServletException) ProjectWorkspace(com.facebook.buck.testutil.integration.ProjectWorkspace) DefaultClock(com.facebook.buck.timing.DefaultClock) ProjectFilesystem(com.facebook.buck.io.ProjectFilesystem) TestConsole(com.facebook.buck.testutil.TestConsole) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Test(org.junit.Test)

Example 4 with NoOpCmdLineInterface

use of com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface in project buck by facebook.

the class RageCommandIntegrationTest method testUpload.

@Test
public void testUpload() throws Exception {
    ProjectWorkspace workspace = TestDataHelper.createProjectWorkspaceForScenario(this, "interactive_report", temporaryFolder);
    workspace.setUp();
    final AtomicReference<String> requestMethod = new AtomicReference<>();
    final AtomicReference<String> requestPath = new AtomicReference<>();
    final AtomicReference<byte[]> requestBody = new AtomicReference<>();
    final String successMessage = "Upload successful";
    try (HttpdForTests httpd = new HttpdForTests()) {
        httpd.addHandler(new AbstractHandler() {

            @Override
            public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
                httpServletResponse.setStatus(200);
                request.setHandled(true);
                if (request.getUri().getPath().equals("/status.php")) {
                    return;
                }
                requestPath.set(request.getUri().getPath());
                requestMethod.set(request.getMethod());
                requestBody.set(ByteStreams.toByteArray(httpServletRequest.getInputStream()));
                try (DataOutputStream out = new DataOutputStream(httpServletResponse.getOutputStream())) {
                    out.writeBytes(successMessage);
                }
            }
        });
        httpd.start();
        RageConfig rageConfig = createRageConfig(httpd.getRootUri().getPort(), "", RageProtocolVersion.SIMPLE);
        ProjectFilesystem filesystem = new ProjectFilesystem(temporaryFolder.getRoot());
        Clock clock = new DefaultClock();
        DefectReporter reporter = new DefaultDefectReporter(filesystem, objectMapper, rageConfig, BuckEventBusFactory.newInstance(clock), clock);
        AutomatedReport automatedReport = new AutomatedReport(reporter, filesystem, objectMapper, new TestConsole(), TestBuildEnvironmentDescription.INSTANCE, VcsInfoCollector.create(new NoOpCmdLineInterface()), rageConfig, Optional::empty);
        DefectSubmitResult defectSubmitResult = automatedReport.collectAndSubmitResult().get();
        assertThat(defectSubmitResult.getReportSubmitMessage(), Matchers.equalTo(Optional.of(successMessage)));
        assertThat(requestPath.get(), Matchers.equalTo(UPLOAD_PATH));
        assertThat(requestMethod.get(), Matchers.equalTo("POST"));
        filesystem.mkdirs(filesystem.getBuckPaths().getBuckOut());
        Path report = filesystem.createTempFile(filesystem.getBuckPaths().getBuckOut(), "report", "zip");
        filesystem.writeBytesToPath(requestBody.get(), report);
        ZipInspector zipInspector = new ZipInspector(filesystem.resolve(report));
        zipInspector.assertFileExists("report.json");
        zipInspector.assertFileExists("buckconfig.local");
        zipInspector.assertFileExists("bucklogging.local.properties");
        zipInspector.assertFileExists(BUILD_COMMAND_DIR_PATH + "buck.log");
        zipInspector.assertFileExists(AUTODEPS_COMMAND_DIR_PATH + "buck.log");
        zipInspector.assertFileExists(BUILD_COMMAND_DIR_PATH + "buck-machine-log");
        zipInspector.assertFileExists(AUTODEPS_COMMAND_DIR_PATH + "buck-machine-log");
    }
}
Also used : DataOutputStream(java.io.DataOutputStream) ZipInspector(com.facebook.buck.testutil.integration.ZipInspector) DefaultClock(com.facebook.buck.timing.DefaultClock) Clock(com.facebook.buck.timing.Clock) AbstractHandler(org.eclipse.jetty.server.handler.AbstractHandler) HttpServletRequest(javax.servlet.http.HttpServletRequest) ServletException(javax.servlet.ServletException) ProjectWorkspace(com.facebook.buck.testutil.integration.ProjectWorkspace) DefaultClock(com.facebook.buck.timing.DefaultClock) ProjectFilesystem(com.facebook.buck.io.ProjectFilesystem) HttpdForTests(com.facebook.buck.testutil.integration.HttpdForTests) Path(java.nio.file.Path) Optional(java.util.Optional) NoOpCmdLineInterface(com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface) Request(org.eclipse.jetty.server.Request) HttpServletRequest(javax.servlet.http.HttpServletRequest) HttpServletResponse(javax.servlet.http.HttpServletResponse) AtomicReference(java.util.concurrent.atomic.AtomicReference) IOException(java.io.IOException) TestConsole(com.facebook.buck.testutil.TestConsole) Test(org.junit.Test)

Example 5 with NoOpCmdLineInterface

use of com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface in project buck by facebook.

the class RageCommandIntegrationTest method testJsonUpload.

@Test
public void testJsonUpload() throws Exception {
    ProjectWorkspace workspace = TestDataHelper.createProjectWorkspaceForScenario(this, "interactive_report", temporaryFolder);
    workspace.setUp();
    try (HttpdForTests httpd = new HttpdForTests()) {
        httpd.addHandler(new AbstractHandler() {

            @Override
            public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpResponse) throws IOException, ServletException {
                httpResponse.setStatus(200);
                request.setHandled(true);
                if (request.getUri().getPath().equals("/status.php")) {
                    return;
                }
                RageJsonResponse json = RageJsonResponse.of(/* isRequestSuccessful */
                true, /* errorMessage */
                Optional.empty(), /* rageUrl */
                Optional.of("http://remoteUrlToVisit"), /* message */
                Optional.of("This is supposed to be JSON."));
                try (DataOutputStream out = new DataOutputStream(httpResponse.getOutputStream())) {
                    objectMapper.writeValue(out, json);
                }
            }
        });
        httpd.start();
        RageConfig rageConfig = createRageConfig(httpd.getRootUri().getPort(), "", RageProtocolVersion.JSON);
        ProjectFilesystem filesystem = new ProjectFilesystem(temporaryFolder.getRoot());
        ObjectMapper objectMapper = ObjectMappers.newDefaultInstance();
        Clock clock = new DefaultClock();
        DefectReporter reporter = new DefaultDefectReporter(filesystem, objectMapper, rageConfig, BuckEventBusFactory.newInstance(clock), clock);
        AutomatedReport automatedReport = new AutomatedReport(reporter, filesystem, objectMapper, new TestConsole(), TestBuildEnvironmentDescription.INSTANCE, VcsInfoCollector.create(new NoOpCmdLineInterface()), rageConfig, Optional::empty);
        DefectSubmitResult submitReport = automatedReport.collectAndSubmitResult().get();
        assertEquals("http://remoteUrlToVisit", submitReport.getReportSubmitLocation().get());
        assertEquals("This is supposed to be JSON.", submitReport.getReportSubmitMessage().get());
    }
}
Also used : HttpdForTests(com.facebook.buck.testutil.integration.HttpdForTests) Optional(java.util.Optional) DataOutputStream(java.io.DataOutputStream) NoOpCmdLineInterface(com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface) Request(org.eclipse.jetty.server.Request) HttpServletRequest(javax.servlet.http.HttpServletRequest) HttpServletResponse(javax.servlet.http.HttpServletResponse) IOException(java.io.IOException) DefaultClock(com.facebook.buck.timing.DefaultClock) Clock(com.facebook.buck.timing.Clock) AbstractHandler(org.eclipse.jetty.server.handler.AbstractHandler) HttpServletRequest(javax.servlet.http.HttpServletRequest) ServletException(javax.servlet.ServletException) ProjectWorkspace(com.facebook.buck.testutil.integration.ProjectWorkspace) DefaultClock(com.facebook.buck.timing.DefaultClock) ProjectFilesystem(com.facebook.buck.io.ProjectFilesystem) TestConsole(com.facebook.buck.testutil.TestConsole) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Test(org.junit.Test)

Aggregations

ProjectFilesystem (com.facebook.buck.io.ProjectFilesystem)5 TestConsole (com.facebook.buck.testutil.TestConsole)5 NoOpCmdLineInterface (com.facebook.buck.util.versioncontrol.NoOpCmdLineInterface)5 ProjectWorkspace (com.facebook.buck.testutil.integration.ProjectWorkspace)4 Clock (com.facebook.buck.timing.Clock)4 DefaultClock (com.facebook.buck.timing.DefaultClock)4 Test (org.junit.Test)4 HttpdForTests (com.facebook.buck.testutil.integration.HttpdForTests)3 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)3 IOException (java.io.IOException)3 Optional (java.util.Optional)3 ServletException (javax.servlet.ServletException)3 HttpServletRequest (javax.servlet.http.HttpServletRequest)3 HttpServletResponse (javax.servlet.http.HttpServletResponse)3 Request (org.eclipse.jetty.server.Request)3 AbstractHandler (org.eclipse.jetty.server.handler.AbstractHandler)3 ZipInspector (com.facebook.buck.testutil.integration.ZipInspector)2 DataOutputStream (java.io.DataOutputStream)2 Console (com.facebook.buck.util.Console)1 DefaultProcessExecutor (com.facebook.buck.util.DefaultProcessExecutor)1