/** * Test a simple connect. */ public void testConnectSuccess() throws ChannelException { connectChannel(10, SIG1); listener.checkOpsReceived(0); checkExpectationsSatisfied(); }
/** * Test a simple connect. */ public void testConnectSuccess() throws ChannelException { connectChannel(10, SIG1); listener.checkOpsReceived(0); checkExpectationsSatisfied(); }
/** * Test a simple connect then successful disconnection. */ public void testConnectThenDisconnectSuccess() throws ChannelException { connectChannel(10, SIG1); listener.checkOpsReceived(0); // Disconnect operationChannel.reset(); checkExpectationsSatisfied(); }
/** * Test a simple connect then successful disconnection. */ public void testConnectThenDisconnectSuccess() throws ChannelException { connectChannel(10, SIG1); listener.checkOpsReceived(0); // Disconnect operationChannel.reset(); checkExpectationsSatisfied(); }
/** * Test simple reconnect. */ public void testSimpleReconnect() throws ChannelException { connectChannel(10, SIG1); listener.checkOpsReceived(0); // Now disconnect server-side, forcing a reconnect. reconnectChannel(10, SIG1); // No new messages. listener.checkOpsReceived(0); checkExpectationsSatisfied(); }
/** * Test simple reconnect. */ public void testSimpleReconnect() throws ChannelException { connectChannel(10, SIG1); listener.checkOpsReceived(0); // Now disconnect server-side, forcing a reconnect. reconnectChannel(10, SIG1); // No new messages. listener.checkOpsReceived(0); checkExpectationsSatisfied(); }
/** * Tests reconnection where the server does not provide a matching * signature. Expect failure. */ public void testReconnectionFailure() throws ChannelException { final int initialVersion = 42; final byte[] initialSignature = SIG1; connectChannel(initialVersion, initialSignature); // Simulate failure operationChannel.reset(); // Server presents unknown reconnect version final HashedVersion reconnectVersion = HashedVersion.of(66, SIG2); try { operationChannel.onConnection(reconnectVersion, reconnectVersion); fail("Should have thrown ChannelException"); } catch (ChannelException expected) { } }
/** * Tests reconnection where the server does not provide a matching * signature. Expect failure. */ public void testReconnectionFailure() throws ChannelException { final int initialVersion = 42; final byte[] initialSignature = SIG1; connectChannel(initialVersion, initialSignature); // Simulate failure operationChannel.reset(); // Server presents unknown reconnect version final HashedVersion reconnectVersion = HashedVersion.of(66, SIG2); try { operationChannel.onConnection(reconnectVersion, reconnectVersion); fail("Should have thrown ChannelException"); } catch (ChannelException expected) { } }
/** * Test simple NACK and onDelta. * Nack is not supposed to happen, so it should be death. */ public void testSimpleNackAndReceive() throws Exception { final int initialVersion = 42; connectChannel(initialVersion, SIG1); sendAndCheckRandomOp(operationChannel, initialVersion, SIG1); listener.clear(); try { operationChannel.onNack(ResponseCode.OK, null, 43); fail("Should have thrown ChannelException"); } catch (ChannelException expected) { } checkExpectationsSatisfied(); }
/** * Test simple NACK and onDelta. * Nack is not supposed to happen, so it should be death. */ public void testSimpleNackAndReceive() throws Exception { final int initialVersion = 42; connectChannel(initialVersion, SIG1); sendAndCheckRandomOp(operationChannel, initialVersion, SIG1); listener.clear(); try { operationChannel.onNack(ResponseCode.OK, null, 43); fail("Should have thrown ChannelException"); } catch (ChannelException expected) { } checkExpectationsSatisfied(); }
/** * Test reconnect where there was an unACKed delta during the failure which * was not received by the server, expect the client to immediately resend the * delta. */ public void testReconnectWithPendingAckNotRecievedByServer() throws Exception { final int initialVersion = 42; final byte[] ackSignature = SIG2; connectChannel(initialVersion, SIG1); WaveletDelta delta = sendAndCheckRandomOp(operationChannel, 42, SIG1); // The server's version is still 42 when it responds. Expect a retransmission. reconnectChannel(initialVersion, SIG1, initialVersion, SIG1, delta); // Now ack. listener.checkOpsReceived(0); operationChannel.onAck(1, HashedVersion.of(43, ackSignature)); // There should be a fake op resulting from ack that updates version info listener.checkOpsReceived(1); checkExpectationsSatisfied(); }
/** * Test reconnect where there was an unACKed delta during the failure which * was not received by the server, expect the client to immediately resend the * delta. */ public void testReconnectWithPendingAckNotRecievedByServer() throws Exception { final int initialVersion = 42; final byte[] ackSignature = SIG2; connectChannel(initialVersion, SIG1); WaveletDelta delta = sendAndCheckRandomOp(operationChannel, 42, SIG1); // The server's version is still 42 when it responds. Expect a retransmission. reconnectChannel(initialVersion, SIG1, initialVersion, SIG1, delta); // Now ack. listener.checkOpsReceived(0); operationChannel.onAck(1, HashedVersion.of(43, ackSignature)); // There should be a fake op resulting from ack that updates version info listener.checkOpsReceived(1); checkExpectationsSatisfied(); }
/** * Test receiving a simple delta that was committed. */ public void testSimpleReceive() throws ChannelException { final int initialVersion = 42; connectChannel(initialVersion, SIG1); operationChannel.onDelta(createRandomTransformedDelta(initialVersion, 1, SIG2)); listener.checkOpsReceived(1); listener.clear(); assertNotNull(operationChannel.receive()); listener.checkOpsReceived(0); // TODO(anorth): test OnCommit by mocking CC operationChannel.onCommit(initialVersion + 1); checkExpectationsSatisfied(); }
/** * Test receiving a simple delta that was committed. */ public void testSimpleReceive() throws ChannelException { final int initialVersion = 42; connectChannel(initialVersion, SIG1); operationChannel.onDelta(createRandomTransformedDelta(initialVersion, 1, SIG2)); listener.checkOpsReceived(1); listener.clear(); assertNotNull(operationChannel.receive()); listener.checkOpsReceived(0); // TODO(anorth): test OnCommit by mocking CC operationChannel.onCommit(initialVersion + 1); checkExpectationsSatisfied(); }
public void testSimpleSendAndAck() throws Exception { final int initialVersion = 42; connectChannel(initialVersion, SIG1); sendAndCheckRandomOp(operationChannel, initialVersion, SIG1); listener.clear(); HashedVersion signature = HashedVersion.of(43, SIG2); operationChannel.onAck(1, signature); // Listener should receive a version update op. listener.checkOpsReceived(1); WaveletOperation op = operationChannel.receive(); WaveletOperationContext context = op.getContext(); assertEquals(1, context.getVersionIncrement()); assertEquals(signature, context.getHashedVersion()); }
public void testSimpleSendAndAck() throws Exception { final int initialVersion = 42; connectChannel(initialVersion, SIG1); sendAndCheckRandomOp(operationChannel, initialVersion, SIG1); listener.clear(); HashedVersion signature = HashedVersion.of(43, SIG2); operationChannel.onAck(1, signature); // Listener should receive a version update op. listener.checkOpsReceived(1); WaveletOperation op = operationChannel.receive(); WaveletOperationContext context = op.getContext(); assertEquals(1, context.getVersionIncrement()); assertEquals(signature, context.getHashedVersion()); }
/** * Check that the client sends the correct last known signatures. */ public void testReconnectWhereAnAckWasNotCommittedCanBeRecovered() throws Exception { final int initialVersion = 42; connectChannel(initialVersion, SIG1); // Send op and expect an Ack. byte[] signature43 = SIG2; byte[] signature44 = SIG3; sendAndCheckRandomOp(operationChannel, 42, SIG1); operationChannel.onAck(1, HashedVersion.of(43, signature43)); // Send another op and expect an Ack. WaveletDelta delta2 = sendAndCheckRandomOp(operationChannel, 43, signature43); operationChannel.onAck(1, HashedVersion.of(44, signature44)); // send commit for first Ack. operationChannel.onCommit(43); // Check that we reconnect, the server went down and has a LCV of 43. // Channel will resend delta2. reconnectChannel(43, signature43, 43, signature43, delta2); deltaChannel.checkExpectationsSatisfied(); checkExpectationsSatisfied(); }
/** * Check that the client sends the correct last known signatures. */ public void testReconnectWhereAnAckWasNotCommittedCanBeRecovered() throws Exception { final int initialVersion = 42; connectChannel(initialVersion, SIG1); // Send op and expect an Ack. byte[] signature43 = SIG2; byte[] signature44 = SIG3; sendAndCheckRandomOp(operationChannel, 42, SIG1); operationChannel.onAck(1, HashedVersion.of(43, signature43)); // Send another op and expect an Ack. WaveletDelta delta2 = sendAndCheckRandomOp(operationChannel, 43, signature43); operationChannel.onAck(1, HashedVersion.of(44, signature44)); // send commit for first Ack. operationChannel.onCommit(43); // Check that we reconnect, the server went down and has a LCV of 43. // Channel will resend delta2. reconnectChannel(43, signature43, 43, signature43, delta2); deltaChannel.checkExpectationsSatisfied(); checkExpectationsSatisfied(); }
public void testReconnectAfterCommit() throws Exception { final int initialVersion = 42; connectChannel(initialVersion, SIG1); sendAndCheckRandomOp(operationChannel, 42, SIG1); operationChannel.onAck(1, HashedVersion.of(43, SIG2)); // Take the fake op resulting from ack that updates version info. listener.checkOpsReceived(1); assertNotNull(operationChannel.receive()); listener.clear(); operationChannel.onCommit(43); // Causes cc to remove old operations from memory reconnectChannel(43, SIG2); // Receive next delta. TransformedWaveletDelta delta = createRandomTransformedDelta(43, 1, SIG3); operationChannel.onDelta(delta); listener.checkOpsReceived(1); assertNotNull(operationChannel.receive()); assertNull(operationChannel.receive()); checkExpectationsSatisfied(); }
public void testReconnectAfterCommit() throws Exception { final int initialVersion = 42; connectChannel(initialVersion, SIG1); sendAndCheckRandomOp(operationChannel, 42, SIG1); operationChannel.onAck(1, HashedVersion.of(43, SIG2)); // Take the fake op resulting from ack that updates version info. listener.checkOpsReceived(1); assertNotNull(operationChannel.receive()); listener.clear(); operationChannel.onCommit(43); // Causes cc to remove old operations from memory reconnectChannel(43, SIG2); // Receive next delta. TransformedWaveletDelta delta = createRandomTransformedDelta(43, 1, SIG3); operationChannel.onDelta(delta); listener.checkOpsReceived(1); assertNotNull(operationChannel.receive()); assertNull(operationChannel.receive()); checkExpectationsSatisfied(); }