From 518a0987fe68a4f6b4fea447455f83924a089506 Mon Sep 17 00:00:00 2001 From: Puneetha Date: Wed, 30 Jan 2019 13:30:12 +0000 Subject: [PATCH] Fix privacy precompiled contract unit tests --- ...acyPrecompiledContractIntegrationTest.java | 2 +- .../privacy/PrivacyPrecompiledContract.java | 4 +-- .../PrivacyPrecompiledContractTest.java | 34 ++++++++++++------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/ethereum/core/src/integration-test/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContractIntegrationTest.java b/ethereum/core/src/integration-test/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContractIntegrationTest.java index 2e3fee1c55..a3610e1aec 100644 --- a/ethereum/core/src/integration-test/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContractIntegrationTest.java +++ b/ethereum/core/src/integration-test/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContractIntegrationTest.java @@ -47,7 +47,7 @@ public static void setUpOnce() throws Exception { testHarness = OrionTestHarness.create(folder.newFolder().toPath()); - orion = new Orion(testHarness.getConfig().clientUrl().toString()); + orion = new Orion(testHarness.clientUrl()); } @AfterClass diff --git a/ethereum/core/src/main/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContract.java b/ethereum/core/src/main/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContract.java index a1675257b8..88c2a2574d 100644 --- a/ethereum/core/src/main/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContract.java +++ b/ethereum/core/src/main/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContract.java @@ -61,8 +61,8 @@ public BytesValue compute(final BytesValue input) { return BytesValue.wrap(receiveResponse.getPayload()); // pass it to private tx processor } catch (IOException e) { - LOG.error("Orion threw an unhandled exception.", e); + LOG.fatal("Orion threw an unhandled exception.", e); + return BytesValue.EMPTY; } - return null; } } diff --git a/ethereum/core/src/test/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContractTest.java b/ethereum/core/src/test/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContractTest.java index 3937054cd1..f7093f6560 100644 --- a/ethereum/core/src/test/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContractTest.java +++ b/ethereum/core/src/test/java/tech/pegasys/pantheon/ethereum/mainnet/precompiles/privacy/PrivacyPrecompiledContractTest.java @@ -26,33 +26,36 @@ import java.io.IOException; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; import org.junit.Before; import org.junit.Test; public class PrivacyPrecompiledContractTest { private final String actual = "Test String"; + private final String publicKey = "public key"; private final BytesValue key = BytesValue.wrap(actual.getBytes(UTF_8)); private PrivacyPrecompiledContract privacyPrecompiledContract; - private static final Logger LOG = LogManager.getLogger(); + private PrivacyPrecompiledContract brokenPrivateTransactionHandler; - Orion mockOrion() { + Orion mockOrion() throws IOException { Orion mockOrion = mock(Orion.class); ReceiveResponse response = new ReceiveResponse(actual.getBytes(UTF_8)); - try { - when(mockOrion.receive(any(ReceiveRequest.class))).thenReturn(response); - } catch (IOException e) { - LOG.error("Orion: failed to test"); - } + when(mockOrion.receive(any(ReceiveRequest.class))).thenReturn(response); + return mockOrion; + } + + Orion brokenMockOrion() throws IOException { + Orion mockOrion = mock(Orion.class); + when(mockOrion.receive(any(ReceiveRequest.class))).thenThrow(IOException.class); return mockOrion; } @Before - public void setUp() { - Orion orion = mockOrion(); + public void setUp() throws IOException { privacyPrecompiledContract = - new PrivacyPrecompiledContract(new SpuriousDragonGasCalculator(), "public key", orion); + new PrivacyPrecompiledContract(new SpuriousDragonGasCalculator(), publicKey, mockOrion()); + brokenPrivateTransactionHandler = + new PrivacyPrecompiledContract( + new SpuriousDragonGasCalculator(), publicKey, brokenMockOrion()); } @Test @@ -63,4 +66,11 @@ public void testPrivacyPrecompiledContract() { String exp = new String(expected.extractArray(), UTF_8); assertThat(exp).isEqualTo(actual); } + + @Test + public void enclaveIsDownWhileHandling() { + final BytesValue expected = brokenPrivateTransactionHandler.compute(key); + + assertThat(expected).isEqualTo(BytesValue.EMPTY); + } }