chore: JUnit test cases added for rate limit functions (#28399)

## Description

This PR adds JUnit test cases for rate limit functionality implemented
for datasource test and datasource connections.

#### PR fixes following issue(s)
Fixes ##27742
#### Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video
>
>
#### Type of change
- Chore (housekeeping or task changes that don't impact user perception)
>
>
>
## Testing
>
#### How Has This Been Tested?
> Please describe the tests that you ran to verify your changes. Also
list any relevant details for your test configuration.
> Delete anything that is not relevant
- [ ] Manual
- [x] JUnit
- [ ] Jest
- [ ] Cypress
>
>
#### Test Plan
> Add Testsmith test cases links that relate to this PR
>
>
#### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
>
>
>
## Checklist:
#### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed

Co-authored-by: “sneha122” <“sneha@appsmith.com”>
This commit is contained in:
sneha122 2023-10-26 21:40:55 +05:30 committed by GitHub
parent c2f3069fdc
commit f91dc4889e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 738 additions and 0 deletions

View File

@ -33,6 +33,7 @@ import reactor.test.StepVerifier;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@ -352,4 +353,70 @@ public class ArangoDBPluginTest {
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// setting endpoints to empty list
dsConfig.setEndpoints(new ArrayList());
final Mono<String> rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(rateLimitIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("");
dsConfig.getEndpoints().get(0).setPort(8529L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(590L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_590", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_8529", endpointIdentifier);
})
.verifyComplete();
}
}

View File

@ -115,6 +115,16 @@ public class ElasticSearchPluginTest {
.flatMap(conn -> pluginExecutor.execute(conn, dsConfig, actionConfiguration));
}
private DatasourceConfiguration createDatasourceConfiguration() {
DatasourceConfiguration datasourceConfiguration = new DatasourceConfiguration();
datasourceConfiguration.setAuthentication(elasticInstanceCredentials);
Endpoint endpoint = new Endpoint();
endpoint.setHost("localhost");
endpoint.setPort(Long.valueOf(port));
datasourceConfiguration.setEndpoints(Collections.singletonList(endpoint));
return datasourceConfiguration;
}
@Test
public void testDefaultPort() {
@ -600,4 +610,70 @@ public class ElasticSearchPluginTest {
.size()
== 0);
}
@Test
public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// setting endpoints to empty list
dsConfig.setEndpoints(new ArrayList());
final Mono<String> rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(rateLimitIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("");
dsConfig.getEndpoints().get(0).setPort(9200L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(590L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_590", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_9200", endpointIdentifier);
})
.verifyComplete();
}
}

View File

@ -707,4 +707,70 @@ public class MssqlPluginTest {
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration(container);
// setting endpoints to empty list
dsConfig.setEndpoints(new ArrayList());
final Mono<String> rateLimitIdentifierMono = mssqlPluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(rateLimitIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration(container);
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("");
dsConfig.getEndpoints().get(0).setPort(1433L);
final Mono<String> endPointIdentifierMono = mssqlPluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration(container);
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(34L);
final Mono<String> endPointIdentifierMono = mssqlPluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_34", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration(container);
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
final Mono<String> endPointIdentifierMono = mssqlPluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_1433", endpointIdentifier);
})
.verifyComplete();
}
}

View File

@ -16,6 +16,7 @@ import com.appsmith.external.models.Param;
import com.appsmith.external.models.Property;
import com.appsmith.external.models.PsParameterDTO;
import com.appsmith.external.models.RequestParamDTO;
import com.appsmith.external.models.SSHConnection;
import com.appsmith.external.models.SSLDetails;
import com.external.plugins.exceptions.MySQLErrorMessages;
import com.external.plugins.exceptions.MySQLPluginError;
@ -1455,4 +1456,177 @@ public class MySqlPluginTest {
.size()
== 0);
}
@Test
public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// setting endpoints to empty list
dsConfig.setEndpoints(new ArrayList());
final Mono<String> rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(rateLimitIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("");
dsConfig.getEndpoints().get(0).setPort(3306L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(33L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_33", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_3306", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsentSshEnabled_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
// Set ssh enabled
List<Property> properties = new ArrayList();
properties.add(null);
properties.add(new Property("Connection Method", "SSH"));
dsConfig.setProperties(properties);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_3306", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void
testGetEndpointIdentifierForRateLimit_HostPresentPortAbsentSshEnabledwithHostAndPort_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
// Set ssh enabled
List<Property> properties = new ArrayList();
properties.add(null);
properties.add(new Property("Connection Method", "SSH"));
dsConfig.setProperties(properties);
SSHConnection sshProxy = new SSHConnection();
sshProxy.setHost("sshHost");
sshProxy.setPort(223L);
dsConfig.setSshProxy(sshProxy);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_3306_sshHost_223", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void
testGetEndpointIdentifierForRateLimit_HostPresentPortAbsentSshEnabledwithHostAndNullPort_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
// Set ssh enabled
List<Property> properties = new ArrayList();
properties.add(null);
properties.add(new Property("Connection Method", "SSH"));
dsConfig.setProperties(properties);
SSHConnection sshProxy = new SSHConnection();
sshProxy.setHost("sshHost");
dsConfig.setSshProxy(sshProxy);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_3306_sshHost_22", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void
testGetEndpointIdentifierForRateLimit_EndpointAbsentSshEnabledwithHostAndNullPort_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.setEndpoints(new ArrayList());
// Set ssh enabled
List<Property> properties = new ArrayList();
properties.add(null);
properties.add(new Property("Connection Method", "SSH"));
dsConfig.setProperties(properties);
SSHConnection sshProxy = new SSHConnection();
sshProxy.setHost("sshHost");
dsConfig.setSshProxy(sshProxy);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("_sshHost_22", endpointIdentifier);
})
.verifyComplete();
}
}

View File

@ -0,0 +1,90 @@
package com.external.plugins;
import com.appsmith.external.models.DatasourceConfiguration;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.OracleContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
import java.util.ArrayList;
import static com.external.plugins.OracleTestDBContainerManager.getDefaultDatasourceConfig;
import static org.junit.jupiter.api.Assertions.assertEquals;
@Testcontainers
public class OracleConnectionRateLimitTest {
OraclePlugin.OraclePluginExecutor oraclePluginExecutor = new OraclePlugin.OraclePluginExecutor();
@SuppressWarnings("rawtypes") // The type parameter for the container type is just itself and is pseudo-optional.
@Container
private static final OracleContainer oracleDB = OracleTestDBContainerManager.getOracleDBForTest();
@Test
public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = getDefaultDatasourceConfig(oracleDB);
// setting endpoints to empty list
dsConfig.setEndpoints(new ArrayList());
final Mono<String> rateLimitIdentifierMono = oraclePluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(rateLimitIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = getDefaultDatasourceConfig(oracleDB);
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("");
dsConfig.getEndpoints().get(0).setPort(1521L);
final Mono<String> endPointIdentifierMono = oraclePluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = getDefaultDatasourceConfig(oracleDB);
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(152L);
final Mono<String> endPointIdentifierMono = oraclePluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_152", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = getDefaultDatasourceConfig(oracleDB);
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
final Mono<String> endPointIdentifierMono = oraclePluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_1521", endpointIdentifier);
})
.verifyComplete();
}
}

View File

@ -1634,4 +1634,70 @@ public class PostgresPluginTest {
.size()
== 0);
}
@Test
public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// setting endpoints to empty list
dsConfig.setEndpoints(new ArrayList());
final Mono<String> rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(rateLimitIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("");
dsConfig.getEndpoints().get(0).setPort(5432L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(5431L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_5431", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_5432", endpointIdentifier);
})
.verifyComplete();
}
}

View File

@ -371,4 +371,70 @@ public class RedisPluginTest {
.size()
== 0);
}
@Test
public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// setting endpoints to empty list
dsConfig.setEndpoints(new ArrayList());
final Mono<String> rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(rateLimitIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("");
dsConfig.getEndpoints().get(0).setPort(6379L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(590L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_590", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_6379", endpointIdentifier);
})
.verifyComplete();
}
}

View File

@ -632,4 +632,70 @@ public class RedshiftPluginTest {
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// setting endpoints to empty list
dsConfig.setEndpoints(new ArrayList());
final Mono<String> rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(rateLimitIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("");
dsConfig.getEndpoints().get(0).setPort(5439L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(590L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_590", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_5439", endpointIdentifier);
})
.verifyComplete();
}
}

View File

@ -28,6 +28,7 @@ import org.testcontainers.utility.DockerImageName;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@ -460,4 +461,70 @@ public class SmtpPluginTest {
.size()
== 0);
}
@Test
public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// setting endpoints to empty list
dsConfig.setEndpoints(new ArrayList());
final Mono<String> rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(rateLimitIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("");
dsConfig.getEndpoints().get(0).setPort(25L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(2525L);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_2525", endpointIdentifier);
})
.verifyComplete();
}
@Test
public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() {
DatasourceConfiguration dsConfig = createDatasourceConfiguration();
// Setting hostname and port
dsConfig.getEndpoints().get(0).setHost("localhost");
dsConfig.getEndpoints().get(0).setPort(null);
final Mono<String> endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig);
StepVerifier.create(endPointIdentifierMono)
.assertNext(endpointIdentifier -> {
assertEquals("localhost_25", endpointIdentifier);
})
.verifyComplete();
}
}