Skip to content

Commit

Permalink
Add Uberalls client tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ascandella committed Aug 11, 2015
1 parent af1829e commit 2a7d666
Show file tree
Hide file tree
Showing 5 changed files with 130 additions and 14 deletions.
Expand Up @@ -142,7 +142,7 @@ public final boolean perform(final AbstractBuild<?, ?> build, final Launcher lau
// First add in info about the change in coverage, if applicable
if (commenter.hasCoverageAvailable()) {
if (uberallsConfigured) {
commenter.processParentCoverage(uberalls.getParentCoverage(diff), diff.getBranch());
commenter.processParentCoverage(uberalls.getParentCoverage(diff.getBaseCommit()), diff.getBranch());
} else {
logger.info(UBERALLS_TAG, "no backend configured, skipping...");
}
Expand Down
Expand Up @@ -21,7 +21,6 @@
package com.uber.jenkins.phabricator.uberalls;

import com.uber.jenkins.phabricator.CodeCoverageMetrics;
import com.uber.jenkins.phabricator.conduit.Differential;
import com.uber.jenkins.phabricator.utils.Logger;
import net.sf.json.JSON;
import net.sf.json.JSONNull;
Expand Down Expand Up @@ -67,13 +66,12 @@ public String getBaseURL() {
return this.baseURL;
}

public CodeCoverageMetrics getParentCoverage(Differential differential) {
public CodeCoverageMetrics getParentCoverage(String sha) {
if (sha == null) {
return null;
}
try {
String sha = differential.getBaseCommit();
String coverageJSON = null;
if (sha != null) {
coverageJSON = getCoverage(sha);
}
String coverageJSON = getCoverage(sha);
JsonSlurper jsonParser = new JsonSlurper();
JSON responseJSON = jsonParser.parseText(coverageJSON);
if (responseJSON instanceof JSONNull) {
Expand Down Expand Up @@ -157,15 +155,11 @@ public String getCoverage(String sha) {
return null;
}
return request.getResponseBodyAsString();
} catch (URISyntaxException e) {
e.printStackTrace(logger.getStream());
} catch (HttpResponseException e) {
if (e.getStatusCode() != 404) {
e.printStackTrace(logger.getStream());
}
} catch (ClientProtocolException e) {
e.printStackTrace(logger.getStream());
} catch (IOException e) {
} catch (Exception e) {
e.printStackTrace(logger.getStream());
}
return null;
Expand Down
Expand Up @@ -88,5 +88,4 @@ private String getTestServerAddress() {
server.getServiceAddress().getPort()
);
}

}
@@ -0,0 +1,114 @@
package com.uber.jenkins.phabricator.uberalls;

import com.uber.jenkins.phabricator.CodeCoverageMetrics;
import com.uber.jenkins.phabricator.utils.TestUtils;
import net.sf.json.JSONObject;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.http.localserver.LocalTestServer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;

import static org.junit.Assert.*;

public class UberallsClientTest {
private LocalTestServer server;
private UberallsClient client;

@Before
public void setUp() throws Exception {
server = new LocalTestServer(null, null);
server.start();
client = getDefaultClient();
}

@After
public void tearDown() throws Exception {
server.stop();
}

@Test
public void testGetCoverageNotFound() {
assertNull(client.getCoverage(TestUtils.TEST_SHA));
}

@Test
public void testGetCoverageFound() {
server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "{}"));
String coverage = client.getCoverage(TestUtils.TEST_SHA);
assertEquals("{}", coverage);
}

@Test
public void testGetCoverageInternalError() {
server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_INTERNAL_SERVER_ERROR, ""));
assertNull(client.getCoverage(TestUtils.TEST_SHA));
}

@Test
public void testGetParentCoverageNoBackend() {
assertNull(client.getParentCoverage(TestUtils.TEST_SHA));
}

@Test
public void testGetParentCoverageNullSHA() {
assertNull(client.getParentCoverage(null));
}

@Test
public void testGetParentCoverageNull() {
server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "null"));
assertNull(client.getParentCoverage(TestUtils.TEST_SHA));
}

@Test
public void testGetCoverageMissingKey() {
server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "{}"));
assertNull(client.getParentCoverage(TestUtils.TEST_SHA));
}

@Test
public void testGetCoverageWorkingBackend() throws IOException {
JSONObject validJSON = TestUtils.getJSONFromFile(getClass(), "validCoverage");
server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, validJSON.toString()));
CodeCoverageMetrics metrics = client.getParentCoverage(TestUtils.TEST_SHA);
assertEquals(42.0f, metrics.getLineCoveragePercent(), 0.01f);
assertEquals("deadbeef", metrics.getSha1());
}

@Test
public void testRecordCoverageNullMetrics() {
assertFalse(client.recordCoverage(TestUtils.TEST_SHA, null));
}

@Test
public void testRecordCoverageInternalError() {
server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_INTERNAL_SERVER_ERROR, ""));
assertFalse(client.recordCoverage(TestUtils.TEST_SHA, TestUtils.getDefaultCodeCoverageMetrics()));
}

@Test
public void testRecordCoverageSuccessful() {
server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "{}"));
assertTrue(client.recordCoverage(TestUtils.TEST_SHA, TestUtils.getDefaultCodeCoverageMetrics()));
}

private UberallsClient getDefaultClient() {
return new UberallsClient(
getTestServerAddress(),
TestUtils.getDefaultLogger(),
TestUtils.TEST_REPOSITORY,
TestUtils.TEST_BRANCH
);
}

private String getTestServerAddress() {
return String.format(
"http://%s:%s",
server.getServiceAddress().getHostName(),
server.getServiceAddress().getPort()
);
}
}
@@ -0,0 +1,9 @@
{
"sha": "deadbeef",
"lineCoverage": 42,
"filesCoverage": 99.99,
"packageCoverage": 100,
"classesCoverage": 100,
"methodCoverage": 42,
"conditionalCoverage": 0
}

0 comments on commit 2a7d666

Please sign in to comment.