From 4ba2d334eb31c2f8f7f6a2f4a930cdbc2034675b Mon Sep 17 00:00:00 2001 From: Paul Chandler Date: Fri, 6 Sep 2024 11:21:06 +0100 Subject: [PATCH 1/4] 674 Specify Interval for Next Connection --- .../application/config/Interval.java | 67 +++++++++++++++++++ .../connection/AgentConnectionConfig.java | 1 + .../config/connection/ConnectionConfig.java | 24 +++++++ .../application/spring/BeanConfigurator.java | 10 ++- application/src/main/resources/ecc.yml | 7 ++ .../application/config/TestConfig.java | 10 +++ application/src/test/resources/all_set.yml | 3 + .../ecchronos/data/sync/EccNodesSync.java | 36 +++++++++- .../ecchronos/data/sync/TestEccNodesSync.java | 3 + 9 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/Interval.java diff --git a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/Interval.java b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/Interval.java new file mode 100644 index 000000000..0eba9b4b3 --- /dev/null +++ b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/Interval.java @@ -0,0 +1,67 @@ +/* + * Copyright 2023 Telefonaktiebolaget LM Ericsson + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ericsson.bss.cassandra.ecchronos.application.config; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +public class Interval +{ + static final int DEFAULT_TIME = 60; + private long myTime = DEFAULT_TIME; + private TimeUnit myUnit = TimeUnit.MINUTES; + + public Interval() + { + // Default constructor for jackson + } + + public Interval(final long time, final TimeUnit timeUnit) + { + myTime = time; + myUnit = timeUnit; + } + + public final long getInterval(final TimeUnit timeUnit) + { + return timeUnit.convert(myTime, myUnit); + } + + @JsonProperty("time") + public final long getTime() + { + return myTime; + } + + @JsonProperty("time") + public final void setTime(final long time) + { + myTime = time; + } + + @JsonProperty("unit") + public final TimeUnit getUnit() + { + return myUnit; + } + + @JsonProperty("unit") + public final void setUnit(final String unit) + { + myUnit = TimeUnit.valueOf(unit.toUpperCase(Locale.US)); + } +} diff --git a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/AgentConnectionConfig.java b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/AgentConnectionConfig.java index 2177ca5cd..07a37a542 100644 --- a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/AgentConnectionConfig.java +++ b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/AgentConnectionConfig.java @@ -105,6 +105,7 @@ public String getLocalDatacenter() return myLocalDatacenter; } + /** * Gets the DataCenterAwarePolicy used for load-balancing policy. * diff --git a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/ConnectionConfig.java b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/ConnectionConfig.java index 7ad8de2e1..f98cd7075 100644 --- a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/ConnectionConfig.java +++ b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/ConnectionConfig.java @@ -14,12 +14,14 @@ */ package com.ericsson.bss.cassandra.ecchronos.application.config.connection; +import com.ericsson.bss.cassandra.ecchronos.application.config.Interval; import com.fasterxml.jackson.annotation.JsonProperty; public class ConnectionConfig { private DistributedNativeConnection myCqlConnection = new DistributedNativeConnection(); private DistributedJmxConnection myJmxConnection = new DistributedJmxConnection(); + private Interval myConnectionDelay; @JsonProperty("cql") public final DistributedNativeConnection getCqlConnection() @@ -56,4 +58,26 @@ public final String toString() { return String.format("Connection(cql=%s, jmx=%s)", myCqlConnection, myJmxConnection); } + /** + * Sets the connectionDelay used to specify the time until the next connection. + * + * @param connectionDelay + * the local datacenter to set. + */ + @JsonProperty("connectionDelay") + public void setConnectionDelay(final Interval connectionDelay) + { + myConnectionDelay = connectionDelay; + } + /** + * Gets the connectionDelay used to specify the time until the next connection. + * + * @return the connectionDelay. + */ + @JsonProperty("connectionDelay") + public Interval getConnectionDelay() + { + return myConnectionDelay; + } + } diff --git a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/spring/BeanConfigurator.java b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/spring/BeanConfigurator.java index 57e449bfb..4f7cd5ff3 100644 --- a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/spring/BeanConfigurator.java +++ b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/spring/BeanConfigurator.java @@ -14,6 +14,7 @@ */ package com.ericsson.bss.cassandra.ecchronos.application.spring; +import com.ericsson.bss.cassandra.ecchronos.application.config.Interval; import com.ericsson.bss.cassandra.ecchronos.application.config.security.CqlTLSConfig; import com.ericsson.bss.cassandra.ecchronos.application.config.security.ReloadingCertificateHandler; import com.ericsson.bss.cassandra.ecchronos.application.providers.AgentJmxConnectionProvider; @@ -178,11 +179,13 @@ public DistributedNativeConnectionProvider distributedNativeConnectionProvider( * if the local host name cannot be determined. * @throws EcChronosException * if there is an error during node synchronization. + * @throws ConfigurationException + * if there is an error during node synchronization. */ @Bean public EccNodesSync eccNodesSync( final DistributedNativeConnectionProvider distributedNativeConnectionProvider - ) throws UnknownHostException, EcChronosException + ) throws UnknownHostException, EcChronosException, ConfigurationException { return getEccNodesSync(distributedNativeConnectionProvider); } @@ -264,12 +267,15 @@ private static CertificateHandler createCertificateHandler( private EccNodesSync getEccNodesSync( final DistributedNativeConnectionProvider distributedNativeConnectionProvider - ) throws UnknownHostException, EcChronosException + ) throws UnknownHostException, EcChronosException, ConfigurationException { + Interval connectionDelay = config().getConnectionConfig().getConnectionDelay(); EccNodesSync myEccNodesSync = EccNodesSync.newBuilder() .withInitialNodesList(distributedNativeConnectionProvider.getNodes()) .withSession(distributedNativeConnectionProvider.getCqlSession()) .withEcchronosID(ecChronosID) + .withConnectionDelayValue(connectionDelay.getTime()) + .withConnectionDelayUnit(connectionDelay.getUnit()) .build(); myEccNodesSync.acquireNodes(); LOG.info("Nodes acquired with success"); diff --git a/application/src/main/resources/ecc.yml b/application/src/main/resources/ecc.yml index 34a0f9701..87432dc4e 100644 --- a/application/src/main/resources/ecc.yml +++ b/application/src/main/resources/ecc.yml @@ -87,6 +87,13 @@ connection: ## Extending this allows to manipulate the SSLEngine and SSLParameters. ## certificateHandler: com.ericsson.bss.cassandra.ecchronos.application.config.security.ReloadingCertificateHandler + ## + ## Specify the interval until the next connection to a node + ## Unit can be SECONDS, MINUTES, HOURS, DAYS + ## + connectionDelay: + time: 45 + unit: MINUTES jmx: ## ## The class used to provide JMX connections to Apache Cassandra. diff --git a/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestConfig.java b/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestConfig.java index f299ebe48..0b93f1821 100644 --- a/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestConfig.java +++ b/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestConfig.java @@ -30,6 +30,7 @@ import java.io.File; import java.io.IOException; +import java.util.concurrent.TimeUnit; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertThrows; @@ -156,4 +157,13 @@ public void testDefaultLoadBalancingPolicy() { assertThat(nativeConnection.getAgentConnectionConfig().getDatacenterAwarePolicy()).isEqualTo(DataCenterAwarePolicy.class); } + + @Test + public void testConnectionDelay() + { + Interval connectionDelay = config.getConnectionConfig().getConnectionDelay(); + assertThat(connectionDelay.getUnit()).isEqualTo(TimeUnit.MINUTES); + assertThat(connectionDelay.getTime()).isEqualTo(45l); + } + } \ No newline at end of file diff --git a/application/src/test/resources/all_set.yml b/application/src/test/resources/all_set.yml index e7bd0aad3..3f6548363 100644 --- a/application/src/test/resources/all_set.yml +++ b/application/src/test/resources/all_set.yml @@ -42,6 +42,9 @@ connection: - host: 127.0.0.4 port: 9042 provider: com.ericsson.bss.cassandra.ecchronos.application.providers.AgentNativeConnectionProvider + connectionDelay: + time: 45 + unit: minutes jmx: rest_server: diff --git a/data/src/main/java/com/ericsson/bss/cassandra/ecchronos/data/sync/EccNodesSync.java b/data/src/main/java/com/ericsson/bss/cassandra/ecchronos/data/sync/EccNodesSync.java index 4b70b0878..a505be899 100644 --- a/data/src/main/java/com/ericsson/bss/cassandra/ecchronos/data/sync/EccNodesSync.java +++ b/data/src/main/java/com/ericsson/bss/cassandra/ecchronos/data/sync/EccNodesSync.java @@ -30,7 +30,9 @@ import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.List; +import java.util.Locale; import java.util.UUID; +import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,6 +68,8 @@ public final class EccNodesSync private final PreparedStatement myCreateStatement; private final PreparedStatement myUpdateStatusStatement; + private final Long connectionDelayValue; + private final ChronoUnit connectionDelayUnit; private EccNodesSync(final Builder builder) throws UnknownHostException { @@ -92,6 +96,9 @@ private EccNodesSync(final Builder builder) throws UnknownHostException .build() .setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM)); ecChronosID = builder.myEcchronosID; + + connectionDelayValue = builder.myConnectionDelayValue; + connectionDelayUnit = builder.myConnectionDelayUnit; } public void acquireNodes() throws EcChronosException @@ -126,7 +133,7 @@ private ResultSet acquireNode(final Node node) node.getEndPoint().toString(), node.getState().toString(), Instant.now(), - Instant.now().plus(DEFAULT_CONNECTION_DELAY_IN_MINUTES, ChronoUnit.MINUTES), + Instant.now().plus(connectionDelayValue, connectionDelayUnit), node.getHostId()); } @@ -220,6 +227,8 @@ public static class Builder private CqlSession mySession; private List initialNodesList; private String myEcchronosID; + private Long myConnectionDelayValue; + private ChronoUnit myConnectionDelayUnit; /** * Builds EccNodesSync with session. @@ -246,7 +255,30 @@ public Builder withInitialNodesList(final List nodes) this.initialNodesList = nodes; return this; } - + /** + * Builds EccNodesSync with Connection Delay. + * + * @param connectionDelayValue + * delay before connecting, in the unit specified in withConnectionDelayUnit + * @return Builder + */ + public Builder withConnectionDelayValue(final Long connectionDelayValue) + { + this.myConnectionDelayValue = connectionDelayValue; + return this; + } + /** + * Builds EccNodesSync with Connection Delay Unit. + * + * @param connectionDelayUnit + * Unit of the delay before connecting + * @return Builder + */ + public Builder withConnectionDelayUnit(final TimeUnit connectionDelayUnit) + { + this.myConnectionDelayUnit = ChronoUnit.valueOf(connectionDelayUnit.toString().toUpperCase(Locale.US)); + return this; + } /** * Builds EccNodesSync with ecchronosID. * diff --git a/data/src/test/java/com/ericsson/bss/cassandra/ecchronos/data/sync/TestEccNodesSync.java b/data/src/test/java/com/ericsson/bss/cassandra/ecchronos/data/sync/TestEccNodesSync.java index daf0ea662..0ad27d6b1 100644 --- a/data/src/test/java/com/ericsson/bss/cassandra/ecchronos/data/sync/TestEccNodesSync.java +++ b/data/src/test/java/com/ericsson/bss/cassandra/ecchronos/data/sync/TestEccNodesSync.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import java.util.concurrent.TimeUnit; import static org.junit.Assert.*; @@ -72,6 +73,8 @@ public void setup() throws IOException eccNodesSync = EccNodesSync.newBuilder() .withSession(mySession) .withInitialNodesList(nodesList) + .withConnectionDelayValue(Long.valueOf(10)) + .withConnectionDelayUnit(TimeUnit.MINUTES) .withEcchronosID("ecchronos-test").build(); } From 88482b1eafcd4a0a8df8aed2c6245e5b758544bd Mon Sep 17 00:00:00 2001 From: Paul Chandler Date: Mon, 9 Sep 2024 16:20:15 +0100 Subject: [PATCH 2/4] #674 Specify Interval for Next Connection --- .../application/config/Interval.java | 6 +- .../config/connection/ConnectionConfig.java | 2 +- application/src/main/resources/ecc.yml | 6 +- .../config/TestMissingConnectionDelay.java | 59 +++++++++++++++++++ .../resources/missing_connection_delay.yml | 49 +++++++++++++++ .../ecchronos/data/sync/EccNodesSync.java | 3 + 6 files changed, 118 insertions(+), 7 deletions(-) create mode 100644 application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestMissingConnectionDelay.java create mode 100644 application/src/test/resources/missing_connection_delay.yml diff --git a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/Interval.java b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/Interval.java index 0eba9b4b3..dfb5b660a 100644 --- a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/Interval.java +++ b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/Interval.java @@ -1,5 +1,5 @@ /* - * Copyright 2023 Telefonaktiebolaget LM Ericsson + * Copyright 2024 Telefonaktiebolaget LM Ericsson * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,8 +21,8 @@ public class Interval { - static final int DEFAULT_TIME = 60; - private long myTime = DEFAULT_TIME; + static final int DEFAULT_TIME_IN_MINUTES = 60; + private long myTime = DEFAULT_TIME_IN_MINUTES; private TimeUnit myUnit = TimeUnit.MINUTES; public Interval() diff --git a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/ConnectionConfig.java b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/ConnectionConfig.java index f98cd7075..1de923756 100644 --- a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/ConnectionConfig.java +++ b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/ConnectionConfig.java @@ -21,7 +21,7 @@ public class ConnectionConfig { private DistributedNativeConnection myCqlConnection = new DistributedNativeConnection(); private DistributedJmxConnection myJmxConnection = new DistributedJmxConnection(); - private Interval myConnectionDelay; + private Interval myConnectionDelay = new Interval(); @JsonProperty("cql") public final DistributedNativeConnection getCqlConnection() diff --git a/application/src/main/resources/ecc.yml b/application/src/main/resources/ecc.yml index 87432dc4e..a7826e41c 100644 --- a/application/src/main/resources/ecc.yml +++ b/application/src/main/resources/ecc.yml @@ -91,9 +91,9 @@ connection: ## Specify the interval until the next connection to a node ## Unit can be SECONDS, MINUTES, HOURS, DAYS ## - connectionDelay: - time: 45 - unit: MINUTES + connectionDelay: + time: 45 + unit: MINUTES jmx: ## ## The class used to provide JMX connections to Apache Cassandra. diff --git a/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestMissingConnectionDelay.java b/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestMissingConnectionDelay.java new file mode 100644 index 000000000..91c2e8f66 --- /dev/null +++ b/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestMissingConnectionDelay.java @@ -0,0 +1,59 @@ +/* + * Copyright 2024 Telefonaktiebolaget LM Ericsson + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ericsson.bss.cassandra.ecchronos.application.config; + +import com.fasterxml.jackson.core.exc.StreamReadException; +import com.fasterxml.jackson.databind.DatabindException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + + +public class TestMissingConnectionDelay +{ + private static final String DEFAULT_AGENT_FILE_NAME = "missing_connection_delay.yml"; + private static Config config; + + + @Before + public void setup() throws StreamReadException, DatabindException, IOException + { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + + File file = new File(classLoader.getResource(DEFAULT_AGENT_FILE_NAME).getFile()); + + ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory()); + + config = objectMapper.readValue(file, Config.class); + + } + + + @Test + public void testConnectionDelay() + { + Interval connectionDelay = config.getConnectionConfig().getConnectionDelay(); + assertThat(connectionDelay.getUnit()).isEqualTo(TimeUnit.MINUTES); + assertThat(connectionDelay.getTime()).isEqualTo(60l); + } + +} \ No newline at end of file diff --git a/application/src/test/resources/missing_connection_delay.yml b/application/src/test/resources/missing_connection_delay.yml new file mode 100644 index 000000000..e7bd0aad3 --- /dev/null +++ b/application/src/test/resources/missing_connection_delay.yml @@ -0,0 +1,49 @@ +# +# Copyright 2024 Telefonaktiebolaget LM Ericsson +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +connection: + cql: + agent: + type: datacenterAware + localDatacenter: datacenter1 + datacenterAwarePolicy: com.ericsson.bss.cassandra.ecchronos.connection.DataCenterAwarePolicy + contactPoints: + - host: 127.0.0.1 + port: 9042 + - host: 127.0.0.2 + port: 9042 + datacenterAware: + datacenters: + - name: datacenter1 + rackAware: + racks: + - datacenterName: datacenter1 + rackName: rack1 + hostAware: + hosts: + - host: 127.0.0.1 + port: 9042 + - host: 127.0.0.2 + port: 9042 + - host: 127.0.0.3 + port: 9042 + - host: 127.0.0.4 + port: 9042 + provider: com.ericsson.bss.cassandra.ecchronos.application.providers.AgentNativeConnectionProvider + jmx: + +rest_server: + host: 127.0.0.2 + port: 8081 \ No newline at end of file diff --git a/data/src/main/java/com/ericsson/bss/cassandra/ecchronos/data/sync/EccNodesSync.java b/data/src/main/java/com/ericsson/bss/cassandra/ecchronos/data/sync/EccNodesSync.java index a505be899..9092b7a55 100644 --- a/data/src/main/java/com/ericsson/bss/cassandra/ecchronos/data/sync/EccNodesSync.java +++ b/data/src/main/java/com/ericsson/bss/cassandra/ecchronos/data/sync/EccNodesSync.java @@ -255,6 +255,7 @@ public Builder withInitialNodesList(final List nodes) this.initialNodesList = nodes; return this; } + /** * Builds EccNodesSync with Connection Delay. * @@ -267,6 +268,7 @@ public Builder withConnectionDelayValue(final Long connectionDelayValue) this.myConnectionDelayValue = connectionDelayValue; return this; } + /** * Builds EccNodesSync with Connection Delay Unit. * @@ -279,6 +281,7 @@ public Builder withConnectionDelayUnit(final TimeUnit connectionDelayUnit) this.myConnectionDelayUnit = ChronoUnit.valueOf(connectionDelayUnit.toString().toUpperCase(Locale.US)); return this; } + /** * Builds EccNodesSync with ecchronosID. * From 18af043a060c377bc7243f476244548f4e7a8c5d Mon Sep 17 00:00:00 2001 From: Paul Chandler Date: Tue, 10 Sep 2024 12:50:00 +0100 Subject: [PATCH 3/4] #674 Specify Interval for Next Connection --- ...ctionDelay.java => TestDefaultConfig.java} | 7 +-- .../resources/missing_connection_delay.yml | 49 ------------------- .../src/test/resources/nothing_set.yml | 30 ++++++++++++ 3 files changed, 34 insertions(+), 52 deletions(-) rename application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/{TestMissingConnectionDelay.java => TestDefaultConfig.java} (91%) delete mode 100644 application/src/test/resources/missing_connection_delay.yml create mode 100644 application/src/test/resources/nothing_set.yml diff --git a/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestMissingConnectionDelay.java b/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestDefaultConfig.java similarity index 91% rename from application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestMissingConnectionDelay.java rename to application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestDefaultConfig.java index 91c2e8f66..686aba387 100644 --- a/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestMissingConnectionDelay.java +++ b/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestDefaultConfig.java @@ -28,9 +28,9 @@ import static org.assertj.core.api.Assertions.assertThat; -public class TestMissingConnectionDelay +public class TestDefaultConfig { - private static final String DEFAULT_AGENT_FILE_NAME = "missing_connection_delay.yml"; + private static final String DEFAULT_AGENT_FILE_NAME = "nothing_set.yml"; private static Config config; @@ -48,8 +48,9 @@ public void setup() throws StreamReadException, DatabindException, IOException } + @Test - public void testConnectionDelay() + public void testConnectionDelayDefault() { Interval connectionDelay = config.getConnectionConfig().getConnectionDelay(); assertThat(connectionDelay.getUnit()).isEqualTo(TimeUnit.MINUTES); diff --git a/application/src/test/resources/missing_connection_delay.yml b/application/src/test/resources/missing_connection_delay.yml deleted file mode 100644 index e7bd0aad3..000000000 --- a/application/src/test/resources/missing_connection_delay.yml +++ /dev/null @@ -1,49 +0,0 @@ -# -# Copyright 2024 Telefonaktiebolaget LM Ericsson -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -connection: - cql: - agent: - type: datacenterAware - localDatacenter: datacenter1 - datacenterAwarePolicy: com.ericsson.bss.cassandra.ecchronos.connection.DataCenterAwarePolicy - contactPoints: - - host: 127.0.0.1 - port: 9042 - - host: 127.0.0.2 - port: 9042 - datacenterAware: - datacenters: - - name: datacenter1 - rackAware: - racks: - - datacenterName: datacenter1 - rackName: rack1 - hostAware: - hosts: - - host: 127.0.0.1 - port: 9042 - - host: 127.0.0.2 - port: 9042 - - host: 127.0.0.3 - port: 9042 - - host: 127.0.0.4 - port: 9042 - provider: com.ericsson.bss.cassandra.ecchronos.application.providers.AgentNativeConnectionProvider - jmx: - -rest_server: - host: 127.0.0.2 - port: 8081 \ No newline at end of file diff --git a/application/src/test/resources/nothing_set.yml b/application/src/test/resources/nothing_set.yml new file mode 100644 index 000000000..71a06ed22 --- /dev/null +++ b/application/src/test/resources/nothing_set.yml @@ -0,0 +1,30 @@ +# +# Copyright 2024 Telefonaktiebolaget LM Ericsson +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +connection: + cql: + jmx: + provider: com.ericsson.bss.cassandra.ecchronos.application.providers.AgentJmxConnectionProvider + retryPolicy: + maxAttempts: + delay: + start: + max: + unit: + retrySchedule: + initialDelay: + fixedDelay: + unit: + \ No newline at end of file From ceae2b89170036a9272b3c6efde504a8fbb48263 Mon Sep 17 00:00:00 2001 From: Paul Chandler Date: Wed, 11 Sep 2024 14:39:00 +0100 Subject: [PATCH 4/4] #674 Specify Interval for Next Connection --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 16a8b9e40..4c96673d4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,7 @@ ## Version 1.0.0 (Not yet Release) +* Specify Interval for Next Connection - Issue #674 * Retry Policy for Jmx Connection - Issue #700 * Update Architecture and Tests Documentations to Add the Agent Features and The cassandra-test-image - Issue #707 * Enhance Test Infrastructure by Adding Cassandra-Test-Image Module With Multi-Datacenter Cluster and Abstract Integration Test Class - Issue #706