From 40bc62e1f9854059ee1a8db8a239a54c50e9b40d Mon Sep 17 00:00:00 2001 From: Cory Bradshaw Date: Mon, 30 Dec 2019 14:27:51 -0800 Subject: [PATCH] Fixing LeaseManagementIntegrationTest by using mocks to setup assumptions about table existance --- .../impl/LeaseManagerIntegrationTest.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java b/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java index cede5be1..d0b0813d 100644 --- a/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java +++ b/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java @@ -14,17 +14,25 @@ */ package com.amazonaws.services.kinesis.leases.impl; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; +import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.dynamodbv2.model.BillingMode; +import com.amazonaws.services.dynamodbv2.model.DescribeTableRequest; +import com.amazonaws.services.dynamodbv2.model.DescribeTableResult; +import com.amazonaws.services.dynamodbv2.model.ListTablesResult; +import com.amazonaws.services.dynamodbv2.model.TableDescription; +import com.amazonaws.services.dynamodbv2.model.TableStatus; import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; import junit.framework.Assert; import org.junit.Test; import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; +import org.mockito.Mockito; public class LeaseManagerIntegrationTest extends LeaseIntegrationTest { @@ -235,7 +243,13 @@ public class LeaseManagerIntegrationTest extends LeaseIntegrationTest { @Test public void testWaitUntilLeaseTableExists() throws LeasingException { - KinesisClientLeaseManager manager = new KinesisClientLeaseManager("nagl_ShardProgress", ddbClient, true, + AmazonDynamoDBClient ddbMock = Mockito.mock(ddbClient.getClass()); + DescribeTableResult result = Mockito.mock(DescribeTableResult.class); + TableDescription description = Mockito.mock(TableDescription.class); + Mockito.when(description.getTableStatus()).thenReturn(TableStatus.ACTIVE.name()); + Mockito.when(result.getTable()).thenReturn(description); + Mockito.when(ddbMock.describeTable(Mockito.any(DescribeTableRequest.class))).thenReturn(result); + KinesisClientLeaseManager manager = new KinesisClientLeaseManager("existing_table", ddbMock, true, KinesisClientLibConfiguration.DEFAULT_DDB_BILLING_MODE) { @Override @@ -246,12 +260,19 @@ public class LeaseManagerIntegrationTest extends LeaseIntegrationTest { }; + Assert.assertTrue(manager.waitUntilLeaseTableExists(1, 1)); } @Test public void testWaitUntilLeaseTableExistsPayPerRequest() throws LeasingException { - KinesisClientLeaseManager manager = new KinesisClientLeaseManager("nagl_ShardProgress_PayPerRequest", ddbClient, true, + AmazonDynamoDBClient ddbMock = Mockito.mock(ddbClient.getClass()); + DescribeTableResult result = Mockito.mock(DescribeTableResult.class); + TableDescription description = Mockito.mock(TableDescription.class); + Mockito.when(description.getTableStatus()).thenReturn(TableStatus.ACTIVE.name()); + Mockito.when(result.getTable()).thenReturn(description); + Mockito.when(ddbMock.describeTable(Mockito.any(DescribeTableRequest.class))).thenReturn(result); + KinesisClientLeaseManager manager = new KinesisClientLeaseManager("existing_table", ddbMock, true, BillingMode.PAY_PER_REQUEST) { @Override