Merge changes I70fc7014,I2cb478d0

* changes:
  MultipleQuotaPluginsIT: Migrate from easymock to mockito
  MultipleQuotaPluginsIT: Clean up and fix tests
This commit is contained in:
Edwin Kempin
2019-09-26 09:15:07 +00:00
committed by Gerrit Code Review

View File

@@ -17,11 +17,10 @@ package com.google.gerrit.acceptance.server.quota;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth8.assertThat; import static com.google.common.truth.Truth8.assertThat;
import static com.google.gerrit.testing.GerritJUnit.assertThrows; import static com.google.gerrit.testing.GerritJUnit.assertThrows;
import static org.easymock.EasyMock.expect; import static org.mockito.Mockito.clearInvocations;
import static org.easymock.EasyMock.expectLastCall; import static org.mockito.Mockito.mock;
import static org.easymock.EasyMock.replay; import static org.mockito.Mockito.verify;
import static org.easymock.EasyMock.resetToStrict; import static org.mockito.Mockito.when;
import static org.easymock.EasyMock.verify;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
@@ -35,15 +34,12 @@ import com.google.gerrit.server.quota.QuotaResponse;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Module; import com.google.inject.Module;
import java.util.OptionalLong; import java.util.OptionalLong;
import org.easymock.EasyMock;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
public class MultipleQuotaPluginsIT extends AbstractDaemonTest { public class MultipleQuotaPluginsIT extends AbstractDaemonTest {
private static final QuotaEnforcer quotaEnforcerA = private static final QuotaEnforcer quotaEnforcerA = mock(QuotaEnforcer.class);
EasyMock.createStrictMock(QuotaEnforcer.class); private static final QuotaEnforcer quotaEnforcerB = mock(QuotaEnforcer.class);
private static final QuotaEnforcer quotaEnforcerB =
EasyMock.createStrictMock(QuotaEnforcer.class);
private IdentifiedUser identifiedAdmin; private IdentifiedUser identifiedAdmin;
@Inject private QuotaBackend quotaBackend; @Inject private QuotaBackend quotaBackend;
@@ -67,39 +63,32 @@ public class MultipleQuotaPluginsIT extends AbstractDaemonTest {
@Before @Before
public void setUp() { public void setUp() {
identifiedAdmin = identifiedUserFactory.create(admin.id()); identifiedAdmin = identifiedUserFactory.create(admin.id());
resetToStrict(quotaEnforcerA); clearInvocations(quotaEnforcerA);
resetToStrict(quotaEnforcerB); clearInvocations(quotaEnforcerB);
} }
@Test @Test
public void refillsOnError() { public void refillsOnError() {
QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build(); QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build();
expect(quotaEnforcerA.requestTokens("testGroup", ctx, 1)).andReturn(QuotaResponse.ok()); when(quotaEnforcerA.requestTokens("testGroup", ctx, 1)).thenReturn(QuotaResponse.ok());
expect(quotaEnforcerB.requestTokens("testGroup", ctx, 1)) when(quotaEnforcerB.requestTokens("testGroup", ctx, 1)).thenReturn(QuotaResponse.error("fail"));
.andReturn(QuotaResponse.error("fail"));
quotaEnforcerA.refill("testGroup", ctx, 1);
expectLastCall();
replay(quotaEnforcerA);
replay(quotaEnforcerB);
assertThat(quotaBackend.user(identifiedAdmin).requestToken("testGroup")) assertThat(quotaBackend.user(identifiedAdmin).requestToken("testGroup"))
.isEqualTo( .isEqualTo(
QuotaResponse.Aggregated.create( QuotaResponse.Aggregated.create(
ImmutableList.of(QuotaResponse.ok(), QuotaResponse.error("fail")))); ImmutableList.of(QuotaResponse.ok(), QuotaResponse.error("fail"))));
verify(quotaEnforcerA).requestTokens("testGroup", ctx, 1);
verify(quotaEnforcerB).requestTokens("testGroup", ctx, 1);
verify(quotaEnforcerA).refill("testGroup", ctx, 1);
} }
@Test @Test
public void refillsOnException() { public void refillsOnException() {
NullPointerException exception = new NullPointerException(); NullPointerException exception = new NullPointerException();
QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build(); QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build();
expect(quotaEnforcerA.requestTokens("testGroup", ctx, 1)).andThrow(exception); when(quotaEnforcerA.requestTokens("testGroup", ctx, 1)).thenReturn(QuotaResponse.ok());
expect(quotaEnforcerB.requestTokens("testGroup", ctx, 1)).andReturn(QuotaResponse.ok()); when(quotaEnforcerB.requestTokens("testGroup", ctx, 1)).thenThrow(exception);
quotaEnforcerB.refill("testGroup", ctx, 1);
expectLastCall();
replay(quotaEnforcerA);
replay(quotaEnforcerB);
NullPointerException thrown = NullPointerException thrown =
assertThrows( assertThrows(
@@ -107,52 +96,53 @@ public class MultipleQuotaPluginsIT extends AbstractDaemonTest {
() -> quotaBackend.user(identifiedAdmin).requestToken("testGroup")); () -> quotaBackend.user(identifiedAdmin).requestToken("testGroup"));
assertThat(thrown).isEqualTo(exception); assertThat(thrown).isEqualTo(exception);
verify(quotaEnforcerA); verify(quotaEnforcerA).requestTokens("testGroup", ctx, 1);
verify(quotaEnforcerB).requestTokens("testGroup", ctx, 1);
verify(quotaEnforcerA).refill("testGroup", ctx, 1);
} }
@Test @Test
public void doesNotRefillNoOp() { public void doesNotRefillNoOp() {
QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build(); QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build();
expect(quotaEnforcerA.requestTokens("testGroup", ctx, 1)) when(quotaEnforcerA.requestTokens("testGroup", ctx, 1)).thenReturn(QuotaResponse.error("fail"));
.andReturn(QuotaResponse.error("fail")); when(quotaEnforcerB.requestTokens("testGroup", ctx, 1)).thenReturn(QuotaResponse.noOp());
expect(quotaEnforcerB.requestTokens("testGroup", ctx, 1)).andReturn(QuotaResponse.noOp());
replay(quotaEnforcerA);
replay(quotaEnforcerB);
assertThat(quotaBackend.user(identifiedAdmin).requestToken("testGroup")) assertThat(quotaBackend.user(identifiedAdmin).requestToken("testGroup"))
.isEqualTo( .isEqualTo(
QuotaResponse.Aggregated.create( QuotaResponse.Aggregated.create(
ImmutableList.of(QuotaResponse.error("fail"), QuotaResponse.noOp()))); ImmutableList.of(QuotaResponse.error("fail"), QuotaResponse.noOp())));
verify(quotaEnforcerA).requestTokens("testGroup", ctx, 1);
verify(quotaEnforcerB).requestTokens("testGroup", ctx, 1);
} }
@Test @Test
public void minimumAvailableTokens() { public void minimumAvailableTokens() {
QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build(); QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build();
expect(quotaEnforcerA.availableTokens("testGroup", ctx)).andReturn(QuotaResponse.ok(20L)); when(quotaEnforcerA.availableTokens("testGroup", ctx)).thenReturn(QuotaResponse.ok(20L));
expect(quotaEnforcerB.availableTokens("testGroup", ctx)).andReturn(QuotaResponse.ok(10L)); when(quotaEnforcerB.availableTokens("testGroup", ctx)).thenReturn(QuotaResponse.ok(10L));
replay(quotaEnforcerA);
replay(quotaEnforcerB);
OptionalLong tokens = OptionalLong tokens =
quotaBackend.user(identifiedAdmin).availableTokens("testGroup").availableTokens(); quotaBackend.user(identifiedAdmin).availableTokens("testGroup").availableTokens();
assertThat(tokens).isPresent(); assertThat(tokens).isPresent();
assertThat(tokens.getAsLong()).isEqualTo(10L); assertThat(tokens.getAsLong()).isEqualTo(10L);
verify(quotaEnforcerA).availableTokens("testGroup", ctx);
verify(quotaEnforcerB).availableTokens("testGroup", ctx);
} }
@Test @Test
public void ignoreNoOpForAvailableTokens() { public void ignoreNoOpForAvailableTokens() {
QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build(); QuotaRequestContext ctx = QuotaRequestContext.builder().user(identifiedAdmin).build();
expect(quotaEnforcerA.availableTokens("testGroup", ctx)).andReturn(QuotaResponse.noOp()); when(quotaEnforcerA.availableTokens("testGroup", ctx)).thenReturn(QuotaResponse.noOp());
expect(quotaEnforcerB.availableTokens("testGroup", ctx)).andReturn(QuotaResponse.ok(20L)); when(quotaEnforcerB.availableTokens("testGroup", ctx)).thenReturn(QuotaResponse.ok(20L));
replay(quotaEnforcerA);
replay(quotaEnforcerB);
OptionalLong tokens = OptionalLong tokens =
quotaBackend.user(identifiedAdmin).availableTokens("testGroup").availableTokens(); quotaBackend.user(identifiedAdmin).availableTokens("testGroup").availableTokens();
assertThat(tokens).isPresent(); assertThat(tokens).isPresent();
assertThat(tokens.getAsLong()).isEqualTo(20L); assertThat(tokens.getAsLong()).isEqualTo(20L);
verify(quotaEnforcerA).availableTokens("testGroup", ctx);
verify(quotaEnforcerB).availableTokens("testGroup", ctx);
} }
} }