Compare commits

..

1 Commits

Author SHA1 Message Date
Akshay Jagadish
2fcfdc615e WIFI-1669: TIP 1.0 Update SDK components in release 1.0 branch 2021-02-26 18:14:58 -05:00
57 changed files with 312 additions and 973 deletions

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-cassandra-tests</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-cassandra</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-cassandra</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>cloud-metrics</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>

View File

@@ -61,9 +61,7 @@ public class BaseCassandraDataSource {
sessionBuilder.withConfigLoader(DriverConfigLoader.fromClasspath("cassandra-application"));
}
CqlSession session = sessionBuilder.build();
session = new CqlSessionWithMetrics(session);
CqlSession session =sessionBuilder.build();
return session;
}

View File

@@ -1,420 +0,0 @@
package com.telecominfraproject.wlan.core.server.cassandra;
import java.util.Optional;
import java.util.concurrent.CompletionStage;
import com.datastax.dse.driver.api.core.cql.continuous.ContinuousAsyncResultSet;
import com.datastax.dse.driver.api.core.cql.continuous.ContinuousResultSet;
import com.datastax.dse.driver.api.core.cql.continuous.reactive.ContinuousReactiveResultSet;
import com.datastax.dse.driver.api.core.cql.reactive.ReactiveResultSet;
import com.datastax.dse.driver.api.core.graph.AsyncGraphResultSet;
import com.datastax.dse.driver.api.core.graph.GraphResultSet;
import com.datastax.dse.driver.api.core.graph.GraphStatement;
import com.datastax.dse.driver.api.core.graph.reactive.ReactiveGraphResultSet;
import com.datastax.oss.driver.api.core.CqlIdentifier;
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.context.DriverContext;
import com.datastax.oss.driver.api.core.cql.AsyncResultSet;
import com.datastax.oss.driver.api.core.cql.PrepareRequest;
import com.datastax.oss.driver.api.core.cql.PreparedStatement;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.SimpleStatement;
import com.datastax.oss.driver.api.core.cql.Statement;
import com.datastax.oss.driver.api.core.metadata.Metadata;
import com.datastax.oss.driver.api.core.metrics.Metrics;
import com.datastax.oss.driver.api.core.session.Request;
import com.datastax.oss.driver.api.core.type.reflect.GenericType;
import com.netflix.servo.DefaultMonitorRegistry;
import com.netflix.servo.monitor.BasicCounter;
import com.netflix.servo.monitor.BasicTimer;
import com.netflix.servo.monitor.Counter;
import com.netflix.servo.monitor.MonitorConfig;
import com.netflix.servo.monitor.Stopwatch;
import com.netflix.servo.monitor.Timer;
import com.netflix.servo.tag.TagList;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
public class CqlSessionWithMetrics implements CqlSession {
private final TagList tags = CloudMetricsTags.commonTags;
final Counter executeCounter = new BasicCounter(MonitorConfig.builder("cassandra-execute").withTags(tags).build());
final Counter executeAsyncCounter = new BasicCounter(MonitorConfig.builder("cassandra-execute-async").withTags(tags).build());
final Counter executeReactiveCounter = new BasicCounter(MonitorConfig.builder("cassandra-execute-reactive").withTags(tags).build());
final Counter executeErrorCounter = new BasicCounter(MonitorConfig.builder("cassandra-execute-errors").withTags(tags).build());
final Counter executeAsyncErrorCounter = new BasicCounter(MonitorConfig.builder("cassandra-execute-async-errors").withTags(tags).build());
final Counter executeReactiveErrorCounter = new BasicCounter(MonitorConfig.builder("cassandra-execute-reactive-errors").withTags(tags).build());
private final Timer executeTimer = new BasicTimer(
MonitorConfig.builder("cassandra-executeTimer").withTags(tags).build());
private final Timer executeAsyncTimer = new BasicTimer(
MonitorConfig.builder("cassandra-executeAsyncTimer").withTags(tags).build());
private final Timer executeReactiveTimer = new BasicTimer(
MonitorConfig.builder("cassandra-executeReactiveTimer").withTags(tags).build());
// dtop: use anonymous constructor to ensure that the following code always
// get executed,
// even when somebody adds another constructor in here
{
DefaultMonitorRegistry.getInstance().register(executeCounter);
DefaultMonitorRegistry.getInstance().register(executeAsyncCounter);
DefaultMonitorRegistry.getInstance().register(executeReactiveCounter);
DefaultMonitorRegistry.getInstance().register(executeErrorCounter);
DefaultMonitorRegistry.getInstance().register(executeAsyncErrorCounter);
DefaultMonitorRegistry.getInstance().register(executeReactiveErrorCounter);
DefaultMonitorRegistry.getInstance().register(executeTimer);
DefaultMonitorRegistry.getInstance().register(executeAsyncTimer);
DefaultMonitorRegistry.getInstance().register(executeReactiveTimer);
}
private final CqlSession delegate;
public CqlSessionWithMetrics(CqlSession delegate) {
this.delegate = delegate;
}
public CompletionStage<AsyncResultSet> executeAsync(Statement<?> statement) {
executeAsyncCounter.increment();
Stopwatch stopwatch = executeAsyncTimer.start();
boolean success = false;
try {
CompletionStage<AsyncResultSet> ret = delegate.executeAsync(statement);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeAsyncErrorCounter.increment();
}
}
}
public ReactiveGraphResultSet executeReactive(GraphStatement<?> statement) {
executeReactiveCounter.increment();
Stopwatch stopwatch = executeReactiveTimer.start();
boolean success = false;
try {
ReactiveGraphResultSet ret = delegate.executeReactive(statement);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeReactiveErrorCounter.increment();
}
}
}
public CompletionStage<Void> closeFuture() {
return delegate.closeFuture();
}
public ResultSet execute(Statement<?> statement) {
executeCounter.increment();
Stopwatch stopwatch = executeTimer.start();
boolean success = false;
try {
ResultSet ret = delegate.execute(statement);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeErrorCounter.increment();
}
}
}
public GraphResultSet execute(GraphStatement<?> graphStatement) {
executeCounter.increment();
Stopwatch stopwatch = executeTimer.start();
boolean success = false;
try {
GraphResultSet ret = delegate.execute(graphStatement);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeErrorCounter.increment();
}
}
}
public boolean isClosed() {
return delegate.isClosed();
}
public ReactiveResultSet executeReactive(String query) {
executeReactiveCounter.increment();
Stopwatch stopwatch = executeReactiveTimer.start();
boolean success = false;
try {
ReactiveResultSet ret = delegate.executeReactive(query);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeReactiveErrorCounter.increment();
}
}
}
public CompletionStage<AsyncResultSet> executeAsync(String query) {
executeAsyncCounter.increment();
Stopwatch stopwatch = executeAsyncTimer.start();
boolean success = false;
try {
CompletionStage<AsyncResultSet> ret = delegate.executeAsync(query);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeAsyncErrorCounter.increment();
}
}
}
public CompletionStage<Void> closeAsync() {
return delegate.closeAsync();
}
public ReactiveResultSet executeReactive(Statement<?> statement) {
executeReactiveCounter.increment();
Stopwatch stopwatch = executeReactiveTimer.start();
boolean success = false;
try {
ReactiveResultSet ret = delegate.executeReactive(statement);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeReactiveErrorCounter.increment();
}
}
}
public CompletionStage<Void> forceCloseAsync() {
return delegate.forceCloseAsync();
}
public CompletionStage<PreparedStatement> prepareAsync(SimpleStatement statement) {
return delegate.prepareAsync(statement);
}
public ContinuousReactiveResultSet executeContinuouslyReactive(String query) {
executeReactiveCounter.increment();
Stopwatch stopwatch = executeReactiveTimer.start();
boolean success = false;
try {
ContinuousReactiveResultSet ret = delegate.executeContinuouslyReactive(query);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeReactiveErrorCounter.increment();
}
}
}
public ResultSet execute(String query) {
executeCounter.increment();
Stopwatch stopwatch = executeTimer.start();
boolean success = false;
try {
ResultSet ret = delegate.execute(query);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeErrorCounter.increment();
}
}
}
public void close() {
delegate.close();
}
public String getName() {
return delegate.getName();
}
public CompletionStage<AsyncGraphResultSet> executeAsync(GraphStatement<?> graphStatement) {
executeAsyncCounter.increment();
Stopwatch stopwatch = executeAsyncTimer.start();
boolean success = false;
try {
CompletionStage<AsyncGraphResultSet> ret = delegate.executeAsync(graphStatement);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeAsyncErrorCounter.increment();
}
}
}
public ContinuousReactiveResultSet executeContinuouslyReactive(Statement<?> statement) {
executeReactiveCounter.increment();
Stopwatch stopwatch = executeReactiveTimer.start();
boolean success = false;
try {
ContinuousReactiveResultSet ret = delegate.executeContinuouslyReactive(statement);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeReactiveErrorCounter.increment();
}
}
}
public CompletionStage<PreparedStatement> prepareAsync(String query) {
return delegate.prepareAsync(query);
}
public PreparedStatement prepare(SimpleStatement statement) {
return delegate.prepare(statement);
}
public Metadata getMetadata() {
return delegate.getMetadata();
}
public ContinuousResultSet executeContinuously(Statement<?> statement) {
executeCounter.increment();
Stopwatch stopwatch = executeTimer.start();
boolean success = false;
try {
ContinuousResultSet ret = delegate.executeContinuously(statement);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeErrorCounter.increment();
}
}
}
public CompletionStage<PreparedStatement> prepareAsync(PrepareRequest request) {
return delegate.prepareAsync(request);
}
public boolean isSchemaMetadataEnabled() {
return delegate.isSchemaMetadataEnabled();
}
public CompletionStage<ContinuousAsyncResultSet> executeContinuouslyAsync(Statement<?> statement) {
executeAsyncCounter.increment();
Stopwatch stopwatch = executeAsyncTimer.start();
boolean success = false;
try {
CompletionStage<ContinuousAsyncResultSet> ret = delegate.executeContinuouslyAsync(statement);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeAsyncErrorCounter.increment();
}
}
}
public CompletionStage<Metadata> setSchemaMetadataEnabled(Boolean newValue) {
return delegate.setSchemaMetadataEnabled(newValue);
}
public CompletionStage<Metadata> refreshSchemaAsync() {
return delegate.refreshSchemaAsync();
}
public Metadata refreshSchema() {
return delegate.refreshSchema();
}
public CompletionStage<Boolean> checkSchemaAgreementAsync() {
return delegate.checkSchemaAgreementAsync();
}
public PreparedStatement prepare(String query) {
return delegate.prepare(query);
}
public boolean checkSchemaAgreement() {
return delegate.checkSchemaAgreement();
}
public DriverContext getContext() {
return delegate.getContext();
}
public Optional<CqlIdentifier> getKeyspace() {
return delegate.getKeyspace();
}
public PreparedStatement prepare(PrepareRequest request) {
return delegate.prepare(request);
}
public Optional<Metrics> getMetrics() {
return delegate.getMetrics();
}
public <RequestT extends Request, ResultT> ResultT execute(RequestT request, GenericType<ResultT> resultType) {
executeCounter.increment();
Stopwatch stopwatch = executeTimer.start();
boolean success = false;
try {
ResultT ret = delegate.execute(request, resultType);
success = true;
return ret;
} finally {
stopwatch.stop();
if(!success) {
executeErrorCounter.increment();
}
}
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-client</artifactId>
@@ -14,25 +14,25 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-container</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>cloud-metrics</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>

View File

@@ -1,5 +1,7 @@
package com.telecominfraproject.wlan.core.client;
import java.nio.charset.StandardCharsets;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpHeaders;
@@ -20,8 +22,7 @@ public abstract class BaseRemoteClient {
protected HttpHeaders headers = new HttpHeaders();
{
// Note: APPLICATION_JSON_UTF8 is deprecated
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setContentType(new MediaType("application", "json", StandardCharsets.UTF_8));
//Accept-Encoding: gzip,deflate
headers.set("Accept-Encoding", "gzip,deflate");
}

View File

@@ -8,7 +8,6 @@ import org.springframework.core.task.TaskRejectedException;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.web.client.DefaultResponseErrorHandler;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.HttpServerErrorException;
import org.springframework.web.client.ResponseErrorHandler;
@@ -39,7 +38,7 @@ public class ExceptionPropagatingErrorHandler extends DefaultResponseErrorHandle
public void handleError(ClientHttpResponse response) throws IOException {
try {
super.handleError(response);
} catch (HttpServerErrorException | HttpClientErrorException e) {
} catch (HttpServerErrorException e) {
// look in the response object, and if it contains any of the
// exceptions we recognize - throw that exception instead of the
// HttpServerErrorException

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-container</artifactId>
@@ -18,7 +18,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
@@ -32,7 +32,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>cloud-metrics</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- Auth0 dependencies -->

View File

@@ -24,15 +24,9 @@ import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.util.concurrent.ListenableFuture;
import com.netflix.servo.DefaultMonitorRegistry;
import com.netflix.servo.annotations.DataSourceType;
import com.netflix.servo.annotations.Monitor;
import com.netflix.servo.monitor.BasicCounter;
import com.netflix.servo.monitor.Counter;
import com.netflix.servo.monitor.MonitorConfig;
import com.netflix.servo.monitor.NumberGauge;
import com.netflix.servo.tag.TagList;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
import com.netflix.servo.monitor.Monitors;
import com.telecominfraproject.wlan.core.server.async.example.AsyncCallerExample;
import com.telecominfraproject.wlan.core.server.async.example.AsyncExample;
@@ -57,31 +51,18 @@ public class AsyncConfiguration implements AsyncConfigurer {
private static final Logger LOG = LoggerFactory.getLogger(AsyncConfiguration.class);
@Autowired private Environment environment;
private final TagList tags = CloudMetricsTags.commonTags;
final Counter totalTasksExecuted = new BasicCounter(MonitorConfig.builder("async-totalTasksExecuted").withTags(tags).build());
final Counter totalTasksRejected = new BasicCounter(MonitorConfig.builder("async-totalTasksRejected").withTags(tags).build());
@Monitor(name="TotalAsyncThreads", type=DataSourceType.GAUGE)
private static final AtomicInteger totalAsyncThreads = new AtomicInteger(0);
private final NumberGauge totalAsyncThreadsGauge = new NumberGauge(
MonitorConfig.builder("async-totalAsyncThreads").withTags(tags).build(), totalAsyncThreads);
@Monitor(name="TotalTasksExecuted", type=DataSourceType.COUNTER)
private static final AtomicInteger totalTasksExecuted = new AtomicInteger(0);
@Monitor(name = "TotalTasksRejected", type = DataSourceType.COUNTER)
private static final AtomicInteger totalTasksRejected = new AtomicInteger(0);
@Monitor(name="TasksInTheQueue", type=DataSourceType.GAUGE)
private static final AtomicInteger tasksInTheQueue = new AtomicInteger(0);
private final NumberGauge tasksInTheQueueGauge = new NumberGauge(
MonitorConfig.builder("async-tasksInTheQueue").withTags(tags).build(), tasksInTheQueue);
// dtop: use anonymous constructor to ensure that the following code always
// get executed,
// even when somebody adds another constructor in here
{
DefaultMonitorRegistry.getInstance().register(totalTasksExecuted);
DefaultMonitorRegistry.getInstance().register(totalTasksRejected);
DefaultMonitorRegistry.getInstance().register(totalAsyncThreadsGauge);
DefaultMonitorRegistry.getInstance().register(tasksInTheQueueGauge);
}
static interface RunnableBlockingQueueInSpringClassloaderInterface extends BlockingQueue<Runnable> {
}
@@ -285,7 +266,7 @@ public class AsyncConfiguration implements AsyncConfigurer {
}
@Override
public void execute(Runnable task) {
totalTasksExecuted.increment();
totalTasksExecuted.incrementAndGet();
super.execute(task);
}
@@ -293,10 +274,10 @@ public class AsyncConfiguration implements AsyncConfigurer {
public Future<?> submit(Runnable task) {
try {
Future<?> result = super.submit(task);
totalTasksExecuted.increment();
totalTasksExecuted.incrementAndGet();
return result;
} catch (TaskRejectedException exp) {
totalTasksRejected.increment();
totalTasksRejected.incrementAndGet();
throw exp;
}
}
@@ -305,10 +286,10 @@ public class AsyncConfiguration implements AsyncConfigurer {
public <T> Future<T> submit(Callable<T> task) {
try {
Future<T> result = super.submit(task);
totalTasksExecuted.increment();
totalTasksExecuted.incrementAndGet();
return result;
} catch (TaskRejectedException exp) {
totalTasksRejected.increment();
totalTasksRejected.incrementAndGet();
throw exp;
}
}
@@ -317,10 +298,10 @@ public class AsyncConfiguration implements AsyncConfigurer {
public ListenableFuture<?> submitListenable(Runnable task) {
try {
ListenableFuture<?> result = super.submitListenable(task);
totalTasksExecuted.increment();
totalTasksExecuted.incrementAndGet();
return result;
} catch (TaskRejectedException exp) {
totalTasksRejected.increment();
totalTasksRejected.incrementAndGet();
throw exp;
}
}
@@ -329,10 +310,10 @@ public class AsyncConfiguration implements AsyncConfigurer {
public <T> ListenableFuture<T> submitListenable(Callable<T> task) {
try {
ListenableFuture<T> result = super.submitListenable(task);
totalTasksExecuted.increment();
totalTasksExecuted.incrementAndGet();
return result;
} catch (TaskRejectedException exp) {
totalTasksRejected.increment();
totalTasksRejected.incrementAndGet();
throw exp;
}
}
@@ -365,7 +346,7 @@ public class AsyncConfiguration implements AsyncConfigurer {
RejectedExecutionHandler rejectedExecutionHandler = new RejectedExecutionHandler() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
totalTasksRejected.increment();
totalTasksRejected.incrementAndGet();
defaultRejectionHandler.rejectedExecution(r, executor);
}
};
@@ -375,6 +356,8 @@ public class AsyncConfiguration implements AsyncConfigurer {
LOG.info("Configuring {} with CorePoolSize={} MaxPoolSize={} QueueCapacity={}",
executor.getThreadNamePrefix(), executor.getCorePoolSize(), executor.getMaxPoolSize(), queueCapacity);
Monitors.registerObject(AsyncConfiguration.class.getSimpleName(), this);
return executor;
}

View File

@@ -20,7 +20,7 @@ import com.telecominfraproject.wlan.core.model.json.JsonSerializedException;
/**
* @author dtoptygin
*/
@ControllerAdvice(basePackages = "com.telecominfraproject")
@ControllerAdvice
public class CommonControllerAdvice {
private static final Logger LOG = LoggerFactory.getLogger(CommonControllerAdvice.class);

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-datastore-inmemory</artifactId>
@@ -13,7 +13,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-elasticsearch</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- ElasticSearch dependencies -->
<dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-exceptions</artifactId>

View File

@@ -3,22 +3,30 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-hazelcast-client</artifactId>
<name>base-hazelcast-client</name>
<description>Common classes for accessing Hazelcast in-memory grid data store.</description>
<dependencies>
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
</dependency>
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast-client</artifactId>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>common-hazelcast</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -10,6 +10,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import com.hazelcast.config.Config;
import com.hazelcast.config.GroupConfig;
import com.hazelcast.config.InterfacesConfig;
import com.hazelcast.config.JoinConfig;
import com.hazelcast.config.MapConfig;
@@ -18,6 +19,7 @@ import com.hazelcast.config.QueueConfig;
import com.hazelcast.config.TcpIpConfig;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.spi.properties.GroupProperty;
@Configuration
@Profile("HazelcastForUnitTest")
@@ -67,14 +69,12 @@ public class HazelcastForUnitTest {
public HazelcastInstance hazelcastInstanceTest() {
// this is used for experiments and unit tests
Config config = new Config();
// config.setProperty(GroupProperty.LOGGING_TYPE.getName(), "slf4j");
// config.setProperty(GroupProperty.PHONE_HOME_ENABLED.getName(), "false");
config.setProperty(GroupProperty.LOGGING_TYPE.getName(), "slf4j");
config.setProperty(GroupProperty.PHONE_HOME_ENABLED.getName(), "false");
// GroupConfig groupConfig = new GroupConfig(System.getProperty("tip.wlan.hazelcast.groupName", "wc-dev"));
// groupConfig.setPassword(System.getProperty("tip.wlan.hazelcast.groupPassword", "wc-dev-pass"));
// config.setGroupConfig(groupConfig);
config.setClusterName(System.getProperty("tip.wlan.hazelcast.clusterName", "wc-dev"));
GroupConfig groupConfig = new GroupConfig(System.getProperty("tip.wlan.hazelcast.groupName", "wc-dev"));
groupConfig.setPassword(System.getProperty("tip.wlan.hazelcast.groupPassword", "wc-dev-pass"));
config.setGroupConfig(groupConfig);
config.getNetworkConfig().setPublicAddress("127.0.0.1").setPort(5900).setPortAutoIncrement(true)
.setInterfaces(new InterfacesConfig().addInterface("127.0.0.1"));

View File

@@ -14,8 +14,8 @@ import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import com.hazelcast.client.config.ClientConfig;
import com.hazelcast.config.security.UsernamePasswordIdentityConfig;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.spi.properties.GroupProperty;
import com.telecominfraproject.wlan.core.model.utils.SystemAndEnvPropertyResolver;
/**
@@ -142,11 +142,10 @@ public class HazelcastClientConfiguration {
@Bean
public HazelcastInstance hazelcastClientUnicast() {
ClientConfig clientConfig = new ClientConfig();
// clientConfig.setProperty(GroupProperty.LOGGING_TYPE.getName(), "slf4j");
// clientConfig.setProperty(GroupProperty.PHONE_HOME_ENABLED.getName(), "false");
clientConfig.setProperty(GroupProperty.LOGGING_TYPE.getName(), "slf4j");
clientConfig.setProperty(GroupProperty.PHONE_HOME_ENABLED.getName(), "false");
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(groupName, groupPassword));
clientConfig.getGroupConfig().setName(groupName).setPassword(groupPassword);
for (String addrStr : nodeAddressesStr.split(",")) {
clientConfig.getNetworkConfig().addAddress(addrStr);
}
@@ -157,7 +156,7 @@ public class HazelcastClientConfiguration {
clientConfig.getNetworkConfig().setSmartRouting(false);
// the client will attempt to re-connect to the cluster forever if
// cluster is not available
//clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
HazelcastInstance client = new ReConnectingHazelcastClient(clientConfig, reconnectTimeSec);

View File

@@ -1,42 +1,47 @@
package com.telecominfraproject.wlan.hazelcast.client;
import java.util.Collection;
import java.util.UUID;
import java.util.concurrent.ConcurrentMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.hazelcast.cardinality.CardinalityEstimator;
import com.hazelcast.client.ClientService;
import com.hazelcast.client.HazelcastClient;
import com.hazelcast.client.config.ClientConfig;
import com.hazelcast.cluster.Cluster;
import com.hazelcast.cluster.Endpoint;
import com.hazelcast.collection.IList;
import com.hazelcast.collection.IQueue;
import com.hazelcast.collection.ISet;
import com.hazelcast.config.Config;
import com.hazelcast.core.ClientService;
import com.hazelcast.core.Cluster;
import com.hazelcast.core.DistributedObject;
import com.hazelcast.core.DistributedObjectListener;
import com.hazelcast.core.Endpoint;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IAtomicLong;
import com.hazelcast.core.IAtomicReference;
import com.hazelcast.core.ICacheManager;
import com.hazelcast.core.ICountDownLatch;
import com.hazelcast.core.IExecutorService;
import com.hazelcast.core.IList;
import com.hazelcast.core.ILock;
import com.hazelcast.core.IMap;
import com.hazelcast.core.IQueue;
import com.hazelcast.core.ISemaphore;
import com.hazelcast.core.ISet;
import com.hazelcast.core.ITopic;
import com.hazelcast.core.IdGenerator;
import com.hazelcast.core.LifecycleService;
import com.hazelcast.core.MultiMap;
import com.hazelcast.core.PartitionService;
import com.hazelcast.core.ReplicatedMap;
import com.hazelcast.cp.CPSubsystem;
import com.hazelcast.crdt.pncounter.PNCounter;
import com.hazelcast.durableexecutor.DurableExecutorService;
import com.hazelcast.flakeidgen.FlakeIdGenerator;
import com.hazelcast.logging.LoggingService;
import com.hazelcast.map.IMap;
import com.hazelcast.multimap.MultiMap;
import com.hazelcast.partition.PartitionService;
import com.hazelcast.replicatedmap.ReplicatedMap;
import com.hazelcast.mapreduce.JobTracker;
import com.hazelcast.quorum.QuorumService;
import com.hazelcast.ringbuffer.Ringbuffer;
import com.hazelcast.scheduledexecutor.IScheduledExecutorService;
import com.hazelcast.splitbrainprotection.SplitBrainProtectionService;
import com.hazelcast.sql.SqlService;
import com.hazelcast.topic.ITopic;
import com.hazelcast.transaction.HazelcastXAResource;
import com.hazelcast.transaction.TransactionContext;
import com.hazelcast.transaction.TransactionException;
@@ -145,157 +150,224 @@ public class ReConnectingHazelcastClient implements HazelcastInstance {
}
return this.client;
}
@Override
public String getName() {
return getClient().getName();
}
@Override
public <E> IQueue<E> getQueue(String name) {
return getClient().getQueue(name);
}
@Override
public <E> ITopic<E> getTopic(String name) {
return getClient().getTopic(name);
}
@Override
public <E> ISet<E> getSet(String name) {
return getClient().getSet(name);
}
@Override
public <E> IList<E> getList(String name) {
return getClient().getList(name);
}
@Override
public <K, V> IMap<K, V> getMap(String name) {
return getClient().getMap(name);
}
@Override
public <K, V> ReplicatedMap<K, V> getReplicatedMap(String name) {
return getClient().getReplicatedMap(name);
}
@Override
public JobTracker getJobTracker(String name) {
return getClient().getJobTracker(name);
}
@Override
public <K, V> MultiMap<K, V> getMultiMap(String name) {
return getClient().getMultiMap(name);
}
@Override
public ILock getLock(String key) {
return getClient().getLock(key);
}
@Override
public <E> Ringbuffer<E> getRingbuffer(String name) {
return getClient().getRingbuffer(name);
}
@Override
public <E> ITopic<E> getReliableTopic(String name) {
return getClient().getReliableTopic(name);
}
@Override
public Cluster getCluster() {
return getClient().getCluster();
}
@Override
public Endpoint getLocalEndpoint() {
return getClient().getLocalEndpoint();
}
@Override
public IExecutorService getExecutorService(String name) {
return getClient().getExecutorService(name);
}
public DurableExecutorService getDurableExecutorService(String name) {
return getClient().getDurableExecutorService(name);
}
@Override
public <T> T executeTransaction(TransactionalTask<T> task) throws TransactionException {
return getClient().executeTransaction(task);
}
@Override
public <T> T executeTransaction(TransactionOptions options, TransactionalTask<T> task) throws TransactionException {
return getClient().executeTransaction(options, task);
}
@Override
public TransactionContext newTransactionContext() {
return getClient().newTransactionContext();
}
@Override
public TransactionContext newTransactionContext(TransactionOptions options) {
return getClient().newTransactionContext(options);
}
public FlakeIdGenerator getFlakeIdGenerator(String name) {
return getClient().getFlakeIdGenerator(name);
@Override
public IdGenerator getIdGenerator(String name) {
return getClient().getIdGenerator(name);
}
@Override
public IAtomicLong getAtomicLong(String name) {
return getClient().getAtomicLong(name);
}
@Override
public <E> IAtomicReference<E> getAtomicReference(String name) {
return getClient().getAtomicReference(name);
}
@Override
public ICountDownLatch getCountDownLatch(String name) {
return getClient().getCountDownLatch(name);
}
@Override
public ISemaphore getSemaphore(String name) {
return getClient().getSemaphore(name);
}
@Override
public Collection<DistributedObject> getDistributedObjects() {
return getClient().getDistributedObjects();
}
public UUID addDistributedObjectListener(DistributedObjectListener distributedObjectListener) {
@Override
public String addDistributedObjectListener(DistributedObjectListener distributedObjectListener) {
return getClient().addDistributedObjectListener(distributedObjectListener);
}
public boolean removeDistributedObjectListener(UUID registrationId) {
@Override
public boolean removeDistributedObjectListener(String registrationId) {
return getClient().removeDistributedObjectListener(registrationId);
}
@Override
public Config getConfig() {
return getClient().getConfig();
}
@Override
public PartitionService getPartitionService() {
return getClient().getPartitionService();
}
public SplitBrainProtectionService getSplitBrainProtectionService() {
return getClient().getSplitBrainProtectionService();
@Override
public QuorumService getQuorumService() {
return getClient().getQuorumService();
}
@Override
public ClientService getClientService() {
return getClient().getClientService();
}
@Override
public LoggingService getLoggingService() {
return getClient().getLoggingService();
}
@Override
public LifecycleService getLifecycleService() {
return getClient().getLifecycleService();
}
@Override
public <T extends DistributedObject> T getDistributedObject(String serviceName, String name) {
return getClient().getDistributedObject(serviceName, name);
}
@Override
public ConcurrentMap<String, Object> getUserContext() {
return getClient().getUserContext();
}
@Override
public HazelcastXAResource getXAResource() {
return getClient().getXAResource();
}
@Override
public void shutdown() {
getClient().shutdown();
}
@Override
public DurableExecutorService getDurableExecutorService(String name) {
return getClient().getDurableExecutorService(name);
}
@Override
public ICacheManager getCacheManager() {
return getClient().getCacheManager();
}
@Override
public CardinalityEstimator getCardinalityEstimator(String name) {
return getClient().getCardinalityEstimator(name);
}
public PNCounter getPNCounter(String name) {
return getClient().getPNCounter(name);
}
@Override
public IScheduledExecutorService getScheduledExecutorService(String name) {
return getClient().getScheduledExecutorService(name);
}
public CPSubsystem getCPSubsystem() {
return getClient().getCPSubsystem();
}
public SqlService getSql() {
return getClient().getSql();
}
public void shutdown() {
getClient().shutdown();
@Override
public PNCounter getPNCounter(String name) {
return getClient().getPNCounter(name);
}
@Override
public CPSubsystem getCPSubsystem() {
return getClient().getCPSubsystem();
}
@Override
public FlakeIdGenerator getFlakeIdGenerator(String name) {
return getClient().getFlakeIdGenerator(name);
}
}

View File

@@ -6,8 +6,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -16,16 +16,15 @@ import org.slf4j.LoggerFactory;
import com.hazelcast.client.HazelcastClient;
import com.hazelcast.client.config.ClientConfig;
import com.hazelcast.collection.IQueue;
import com.hazelcast.collection.impl.queue.QueueService;
import com.hazelcast.config.security.UsernamePasswordIdentityConfig;
import com.hazelcast.core.DistributedObject;
import com.hazelcast.core.DistributedObjectEvent;
import com.hazelcast.core.DistributedObjectListener;
import com.hazelcast.core.EntryEvent;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.flakeidgen.FlakeIdGenerator;
import com.hazelcast.map.IMap;
import com.hazelcast.core.IMap;
import com.hazelcast.core.IQueue;
import com.hazelcast.core.IdGenerator;
import com.hazelcast.map.listener.EntryAddedListener;
import com.hazelcast.map.listener.EntryEvictedListener;
import com.hazelcast.map.listener.EntryRemovedListener;
@@ -36,8 +35,7 @@ public class TestClient {
public static void main_1(String[] args) throws IOException {
ClientConfig clientConfig = new ClientConfig();
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig("wc-dev", "wc-dev-pass"));
clientConfig.getGroupConfig().setName("wc-dev").setPassword("wc-dev-pass");
clientConfig.getNetworkConfig().addAddress("127.0.0.1:5900");
clientConfig.getNetworkConfig().addAddress("127.0.0.1:5901");
clientConfig.getNetworkConfig().addAddress("127.0.0.1:5902");
@@ -55,7 +53,7 @@ public class TestClient {
System.out.println("metricsMap["+ entry.getKey() +"]: " +entry.getValue());
}
FlakeIdGenerator testIdGenerator = client.getFlakeIdGenerator("id_generator_created_from_client");
IdGenerator testIdGenerator = client.getIdGenerator("id_generator_created_from_client");
Map<Long, String> mapCreatedFromClient = client.getMap( "map_created_from_client" );
System.out.println("mapCreatedFromClient: " + mapCreatedFromClient);
@@ -122,8 +120,7 @@ public class TestClient {
public static void main_2(String[] args) throws InterruptedException {
ClientConfig clientConfig = new ClientConfig();
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
clientConfig.getNetworkConfig().addAddress("127.0.0.1:5901");
clientConfig.getNetworkConfig().addAddress("127.0.0.1:5902");
@@ -242,7 +239,7 @@ public class TestClient {
public static void main_3(String[] args) throws InterruptedException, ExecutionException {
ClientConfig clientConfig = new ClientConfig();
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
// clientConfig.getNetworkConfig().addAddress("127.0.0.1:5901");
// clientConfig.getNetworkConfig().addAddress("127.0.0.1:5902");
@@ -250,7 +247,7 @@ public class TestClient {
//see http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#java-client-operation-modes
// here we're using "dumb" client that connects only to a single node of the cluster
clientConfig.getNetworkConfig().setSmartRouting(false);
//clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
//HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
HazelcastInstance client = new ReConnectingHazelcastClient(clientConfig, 20);
@@ -262,7 +259,7 @@ public class TestClient {
if(Boolean.getBoolean("populateMapBeforeTest")){
@SuppressWarnings("rawtypes")
List<CompletionStage<String>> futures = new ArrayList<>(1000);
List<Future> futures = new ArrayList<>(1000);
//populate map with entries
for(int i=0; i<1000000; i++){
@@ -283,12 +280,12 @@ public class TestClient {
// }
// }
futures.add(client.<String, String>getMap("testMap").putAsync("t_" + Integer.toString(fI), Integer.toString(fI)));
futures.add(client.getMap("testMap").putAsync("t_" + Integer.toString(fI), Integer.toString(fI)));
//wait for a batch of futures to complete
if(futures.size()>=990){
for(CompletionStage<String> f: futures){
f.toCompletableFuture().get();
for(Future<?> f: futures){
f.get();
}
futures.clear();
@@ -296,8 +293,8 @@ public class TestClient {
}
for(CompletionStage<String> f: futures){
f.toCompletableFuture().get();
for(Future<?> f: futures){
f.get();
}
end = System.currentTimeMillis();
@@ -326,7 +323,7 @@ public class TestClient {
evenCount = 0;
Predicate<String, String> predicate = new SamplePredicate();
for(Map.Entry<String, String> entry: client.<String, String>getMap( "testMap" ).entrySet(predicate )){
for(Map.Entry<?, ?> entry: client.getMap( "testMap" ).entrySet(predicate )){
evenCount++;
}
@@ -358,13 +355,13 @@ public class TestClient {
ClientConfig clientConfig = new ClientConfig();
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
//see http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#java-client-operation-modes
// here we're using "dumb" client that connects only to a single node of the cluster
clientConfig.getNetworkConfig().setSmartRouting(false);
//clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
@@ -389,13 +386,13 @@ public class TestClient {
public static void main_5(String[] args) {
ClientConfig clientConfig = new ClientConfig();
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
//see http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#java-client-operation-modes
// here we're using "dumb" client that connects only to a single node of the cluster
clientConfig.getNetworkConfig().setSmartRouting(false);
//clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
@@ -429,13 +426,13 @@ public class TestClient {
public static void main_6(String[] args) {
ClientConfig clientConfig = new ClientConfig();
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
//see http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#java-client-operation-modes
// here we're using "dumb" client that connects only to a single node of the cluster
clientConfig.getNetworkConfig().setSmartRouting(false);
//clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
@@ -467,13 +464,13 @@ public class TestClient {
public static void main_7(String[] args) {
ClientConfig clientConfig = new ClientConfig();
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
//see http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#java-client-operation-modes
// here we're using "dumb" client that connects only to a single node of the cluster
clientConfig.getNetworkConfig().setSmartRouting(false);
//clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
@@ -526,13 +523,13 @@ public class TestClient {
public static void main(String[] args) {
ClientConfig clientConfig = new ClientConfig();
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
//see http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#java-client-operation-modes
// here we're using "dumb" client that connects only to a single node of the cluster
clientConfig.getNetworkConfig().setSmartRouting(false);
//clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
HazelcastInstance hazelcastClient = HazelcastClient.newHazelcastClient(clientConfig);
@@ -601,13 +598,13 @@ public class TestClient {
public static void main_9(String[] args) throws InterruptedException {
ClientConfig clientConfig = new ClientConfig();
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
//see http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#java-client-operation-modes
// here we're using "dumb" client that connects only to a single node of the cluster
clientConfig.getNetworkConfig().setSmartRouting(false);
//clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
HazelcastInstance hazelcastClient = HazelcastClient.newHazelcastClient(clientConfig);
DistributedObjectListener distributedObjectListener = new DistributedObjectListener() {

View File

@@ -5,9 +5,9 @@ import java.util.Set;
import com.hazelcast.client.HazelcastClient;
import com.hazelcast.client.config.ClientConfig;
import com.hazelcast.config.security.UsernamePasswordIdentityConfig;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.hazelcast.core.IMap;
import com.hazelcast.spi.properties.GroupProperty;
import com.telecominfraproject.wlan.hazelcast.common.HazelcastObjectsConfiguration;
public class GetValues
@@ -25,10 +25,10 @@ public class GetValues
// }
ClientConfig clientConfig = new ClientConfig();
// clientConfig.setProperty(GroupProperty.LOGGING_TYPE.getName(), "slf4j");
// clientConfig.setProperty(GroupProperty.PHONE_HOME_ENABLED.getName(), "false");
clientConfig.setProperty(GroupProperty.LOGGING_TYPE.getName(), "slf4j");
clientConfig.setProperty(GroupProperty.PHONE_HOME_ENABLED.getName(), "false");
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);

View File

@@ -2,9 +2,9 @@ package com.telecominfraproject.wlan.hazelcast.client.clu;
import com.hazelcast.client.HazelcastClient;
import com.hazelcast.client.config.ClientConfig;
import com.hazelcast.config.security.UsernamePasswordIdentityConfig;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.hazelcast.core.IMap;
import com.hazelcast.spi.properties.GroupProperty;
public class SetProvisionedCapacity {
@@ -21,14 +21,16 @@ public class SetProvisionedCapacity {
ClientConfig clientConfig = new ClientConfig();
clientConfig.setProperty(GroupProperty.LOGGING_TYPE.getName(), "slf4j");
clientConfig.setProperty(GroupProperty.PHONE_HOME_ENABLED.getName(), "false");
clientConfig.getSecurityConfig().setUsernamePasswordIdentityConfig(new UsernamePasswordIdentityConfig(clusterName, password));
clientConfig.getGroupConfig().setName(clusterName).setPassword(password);
clientConfig.getNetworkConfig().addAddress(addr);
//see http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#java-client-operation-modes
// here we're using "dumb" client that connects only to a single node of the cluster
clientConfig.getNetworkConfig().setSmartRouting(false);
//clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
clientConfig.getNetworkConfig().setConnectionAttemptLimit(0);
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-hierarchical-datastore</artifactId>
@@ -13,17 +13,17 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-hazelcast-client</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>cloud-metrics</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -27,7 +27,6 @@ import java.util.Set;
import java.util.TimeZone;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.RejectedExecutionException;
@@ -42,9 +41,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StreamUtils;
import com.hazelcast.collection.IQueue;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.hazelcast.core.IMap;
import com.hazelcast.core.IQueue;
import com.netflix.servo.monitor.Counter;
import com.netflix.servo.monitor.Timer;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsUtils;
@@ -496,8 +495,7 @@ public class HierarchicalDatastore{
try {
LOG.trace("submitting append request to hazelcast");
//submit operation and wait for its completion
CompletionStage<Set<String>> cs = dirListMap.submitToKey(dirKey, new AppendStringToSetEntryProcessor(shortFileName) );
cs.toCompletableFuture().get();
dirListMap.submitToKey(dirKey, new AppendStringToSetEntryProcessor(shortFileName) ).get();
LOG.trace("append request is processed in hazelcast");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();

View File

@@ -24,7 +24,6 @@ import java.util.concurrent.TimeUnit;
import javax.annotation.PostConstruct;
import org.junit.AfterClass;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,7 +35,7 @@ import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.hazelcast.core.IMap;
import com.telecominfraproject.wlan.core.model.filter.EntryFilter;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.telecominfraproject.wlan.hazelcast.HazelcastForUnitTest;
@@ -60,7 +59,6 @@ import com.telecominfraproject.wlan.hierarchical.datastore.writer.StreamHolder;
PropertySourcesPlaceholderConfigurer.class, //must have this to resolve non-string @Value annotations, i.e. int properties, etc.
})
@ActiveProfiles({"HazelcastForUnitTest"})
@Ignore("DT: these compoinents are not used for now, re-enable the tests if and when they are back in the system")
public class HierarchicalDatastoreHourlyIndexTests {
static{

View File

@@ -30,7 +30,7 @@ import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.hazelcast.core.IMap;
import com.telecominfraproject.wlan.core.model.filter.EntryFilter;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.telecominfraproject.wlan.hazelcast.HazelcastForUnitTest;
@@ -53,7 +53,6 @@ import com.telecominfraproject.wlan.hierarchical.datastore.writer.StreamHolder;
PropertySourcesPlaceholderConfigurer.class, //must have this to resolve non-string @Value annotations, i.e. int properties, etc.
})
@ActiveProfiles({"HazelcastForUnitTest"})
@Ignore("DT: these compoinents are not used for now, re-enable the tests if and when they are back in the system")
public class HierarchicalDatastoreRecordIndexTests {
static{

View File

@@ -26,7 +26,6 @@ import java.util.zip.ZipOutputStream;
import javax.annotation.PostConstruct;
import org.junit.AfterClass;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
@@ -58,7 +57,6 @@ import com.telecominfraproject.wlan.hierarchical.datastore.index.registry.Record
HazelcastObjectsConfiguration.class,
})
@ActiveProfiles({"HazelcastForUnitTest"})
@Ignore("DT: these compoinents are not used for now, re-enable the tests if and when they are back in the system")
public class HierarchicalDatastoreTests {
static{

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-jdbc-tests</artifactId>
@@ -16,7 +16,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-jdbc</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-jdbc</artifactId>
@@ -41,7 +41,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>cloud-metrics</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -8,6 +8,7 @@ import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.Properties;
import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicInteger;
import javax.sql.DataSource;
@@ -20,10 +21,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import com.netflix.servo.DefaultMonitorRegistry;
import com.netflix.servo.monitor.BasicCounter;
import com.netflix.servo.annotations.DataSourceType;
import com.netflix.servo.annotations.Monitor;
import com.netflix.servo.monitor.BasicGauge;
import com.netflix.servo.monitor.Counter;
import com.netflix.servo.monitor.MonitorConfig;
import com.netflix.servo.monitor.Monitors;
import com.netflix.servo.tag.TagList;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
import com.telecominfraproject.wlan.server.exceptions.ConfigurationException;
@@ -37,14 +39,8 @@ public abstract class BaseDataSourceConfig {
@Autowired
private Environment environment;
final Counter getConnectionExecuted = new BasicCounter(MonitorConfig.builder("jdbc-getConnection").withTags(tags).build());
// dtop: use anonymous constructor to ensure that the following code always
// get executed,
// even when somebody adds another constructor in here
{
DefaultMonitorRegistry.getInstance().register(getConnectionExecuted);
}
@Monitor(name = "getConnection", type = DataSourceType.COUNTER)
private final AtomicInteger getConnectionExecuted = new AtomicInteger(0);
static interface DataSourceInSpringClassloaderInterface extends DataSource {
}
@@ -75,7 +71,7 @@ public abstract class BaseDataSourceConfig {
}
public Connection getConnection() throws SQLException {
getConnectionExecuted.increment();
getConnectionExecuted.incrementAndGet();
return dataSource.getConnection();
}
@@ -84,7 +80,7 @@ public abstract class BaseDataSourceConfig {
}
public Connection getConnection(String username, String password) throws SQLException {
getConnectionExecuted.increment();
getConnectionExecuted.incrementAndGet();
return dataSource.getConnection(username, password);
}
@@ -143,6 +139,8 @@ public abstract class BaseDataSourceConfig {
String datasourceId = getDataSourceName();
DataSourceInSpringClassloader wrappedObj = new DataSourceInSpringClassloader(datasourceId, poolDataSource);
Monitors.registerObject(datasourceId, this);
BasicGauge<Integer> numberOfActiveJDBCConnections = new BasicGauge<>(
MonitorConfig.builder(getDataSourceName() + "-numberOfActiveJDBCConnections").withTags(tags).build(),
new Callable<Integer>() {

View File

@@ -3,7 +3,6 @@ package com.telecominfraproject.wlan.core.server.jdbc;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
@@ -1093,80 +1092,7 @@ class JdbcOperationsWithMetrics implements JdbcOperations{
}
}
@Override
public <T> Stream<T> queryForStream(String sql, RowMapper<T> rowMapper) throws DataAccessException {
queriesExecuted.increment();
Stopwatch s = queriesTimer.start();
boolean success = false;
try{
Stream<T> ret = delegate.queryForStream(sql, rowMapper);
success = true;
return ret;
}finally{
s.stop();
if(!success){
queriesErrors.increment();
}
}
}
@Override
public <T> Stream<T> queryForStream(PreparedStatementCreator psc, RowMapper<T> rowMapper) throws DataAccessException {
queriesExecuted.increment();
Stopwatch s = queriesTimer.start();
boolean success = false;
try{
Stream<T> ret = delegate.queryForStream(psc, rowMapper);
success = true;
return ret;
}finally{
s.stop();
if(!success){
queriesErrors.increment();
}
}
}
@Override
public <T> Stream<T> queryForStream(String sql, PreparedStatementSetter pss, RowMapper<T> rowMapper) throws DataAccessException {
queriesExecuted.increment();
Stopwatch s = queriesTimer.start();
boolean success = false;
try{
Stream<T> ret = delegate.queryForStream(sql, pss, rowMapper);
success = true;
return ret;
}finally{
s.stop();
if(!success){
queriesErrors.increment();
}
}
}
@Override
public <T> Stream<T> queryForStream(String sql, RowMapper<T> rowMapper, Object... args) throws DataAccessException {
queriesExecuted.increment();
Stopwatch s = queriesTimer.start();
boolean success = false;
try{
Stream<T> ret = delegate.queryForStream(sql, rowMapper, args);
success = true;
return ret;
}finally{
s.stop();
if(!success){
queriesErrors.increment();
}
}
}
@Override
public String toString() {
return "JOWM-"+delegate.toString();

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-models</artifactId>
@@ -14,20 +14,20 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>json-patch-tip</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- this is used to register all subclasses of BaseJsonModel for deserialization -->
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>reflections-tip</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->

View File

@@ -1,9 +0,0 @@
package com.telecominfraproject.wlan.core.model.equipment;
public enum LedStatus {
led_on,
led_off,
led_blink,
UNKNOWN;
}

View File

@@ -58,7 +58,7 @@ public class MacAddress extends BaseJsonModel implements Comparable<MacAddress>
if(address.length >= 6)
{
long mac = 0;
for (var i = 0; i < 6; i++) {
for (int i = 0; i < 6; i++) {
long t = (address[i] & 0xffL) << ((5 - i) * 8);
mac |= t;
}
@@ -73,7 +73,7 @@ public class MacAddress extends BaseJsonModel implements Comparable<MacAddress>
}
public String getAddressAsString() {
var sb = new StringBuilder(124);
StringBuilder sb = new StringBuilder(124);
if(address != null)
{
@@ -82,15 +82,14 @@ public class MacAddress extends BaseJsonModel implements Comparable<MacAddress>
}
sb.setLength(sb.length() - 1);
return sb.toString();
}
return null;
return sb.toString();
}
@JsonIgnore
public String getAsLowerCaseString() {
var sb = new StringBuilder(124);
StringBuilder sb = new StringBuilder(124);
for (byte single : address) {
sb.append(String.format("%02x", single));
}
@@ -132,8 +131,8 @@ public class MacAddress extends BaseJsonModel implements Comparable<MacAddress>
@Override
public int hashCode() {
final var prime = 31;
var result = 1;
final int prime = 31;
int result = 1;
result = prime * result + Arrays.hashCode(address);
return result;
}
@@ -164,16 +163,12 @@ public class MacAddress extends BaseJsonModel implements Comparable<MacAddress>
private static byte[] stringToByteArray(String str) {
if (str == null || str.equals(""))
{
return null;
}
var ret = new byte[6];
byte[] ret = new byte[6];
String octets[] = str.split(":");
if(octets.length == 1 && octets[0].length() == str.length() && str.length()<=12) {
// hex string without colon
for(var i = 0; i< str.length(); i+=2) {
for(int i = 0; i< str.length(); i+=2) {
Integer hex = Integer.parseInt(str.substring(i, i==str.length()-1?i+1:i+2), 16);
ret[i/2] = hex.byteValue();
}
@@ -183,7 +178,7 @@ public class MacAddress extends BaseJsonModel implements Comparable<MacAddress>
}
else {
try {
for (var i = 0; i < octets.length; i++) {
for (int i = 0; i < octets.length; i++) {
Integer hex = Integer.parseInt(octets[i], 16);
ret[i] = hex.byteValue();
}
@@ -215,8 +210,8 @@ public class MacAddress extends BaseJsonModel implements Comparable<MacAddress>
else
{
String[] value = lowercaseValue.split(":");
var sb = new StringBuilder(6);
for(var i=0; i<3; i++)
StringBuilder sb = new StringBuilder(6);
for(int i=0; i<3; i++)
{
sb.append(value[i].toLowerCase());
}
@@ -226,11 +221,11 @@ public class MacAddress extends BaseJsonModel implements Comparable<MacAddress>
}
public String toOuiString() {
if(address == null || address.length == 0) {
if(address == null) {
return null;
}
var sb = new StringBuilder(6);
for (var i = 0; i< 3; i++) {
StringBuilder sb = new StringBuilder(6);
for (int i = 0; i< 3; i++) {
sb.append(String.format("%02x", address[i]));
}
return sb.toString();
@@ -293,17 +288,11 @@ public class MacAddress extends BaseJsonModel implements Comparable<MacAddress>
* @return
*/
public static Long convertMacStringToLongValue(String macStr) {
if (macStr == null)
{
return null;
}
byte[] bval = stringToByteArray(macStr);
if (bval != null && bval.length >= 6) {
if (bval.length >= 6) {
long mac = 0;
for (var i = 0; i < 6; i++) {
for (int i = 0; i < 6; i++) {
long t = (bval[i] & 0xffL) << ((5 - i) * 8);
mac |= t;
}

View File

@@ -73,19 +73,5 @@ public enum RadioType {
return false;
}
public static String getRadioDisplayString(RadioType radioType) {
// This display format matches UI
switch (radioType) {
case is2dot4GHz:
return "2.4GHz";
case is5GHz:
return "5GHz";
case is5GHzU:
return "5GHz (U)";
case is5GHzL:
return "5GHz (L)";
default:
return radioType.name();
}
}
}

View File

@@ -45,11 +45,11 @@ public class BaseJsonTypeResolverBuilder extends StdTypeResolverBuilder {
@Override
protected Object _deserializeTypedUsingDefaultImpl(final JsonParser jp, DeserializationContext ctxt,
TokenBuffer tb, String priorFailureMsg) throws IOException {
TokenBuffer tb) throws IOException {
Object obj = null;
JsonParser parser = jp;
try{
obj = super._deserializeTypedUsingDefaultImpl(parser, ctxt, tb, priorFailureMsg);
obj = super._deserializeTypedUsingDefaultImpl(parser, ctxt, tb);
}catch(Exception e){
JsonDeserializer<Object> deser = ctxt.findContextualValueDeserializer(this._baseType, null);
if (deser != null) {
@@ -109,7 +109,7 @@ public class BaseJsonTypeResolverBuilder extends StdTypeResolverBuilder {
return ret;
}
public void setPropertyName(String property) {
public void setPropertName(String property) {
super._typeProperty = property;
}
}

View File

@@ -1,13 +0,0 @@
package com.telecominfraproject.wlan.core.model.json.interfaces;
/**
* Marker interface that tells if current object can provide a timestamp from its source data (i.e. timestamp for stats report used to generate a ServiceMetric)
* @author mikehansen1970
*
*/
public interface HasSourceTimestamp {
/**
* @return the timestamp of the source data for this object (i.e. for the stats that were used for a ServiceMetric)
*/
public long getSourceTimestampMs();
}

View File

@@ -1,8 +1,5 @@
package com.telecominfraproject.wlan.core.model.utils;
import java.util.Collection;
import java.util.Iterator;
import org.apache.commons.math3.stat.descriptive.rank.Percentile;
@@ -22,30 +19,6 @@ public class DecibelUtils
return avgDbVal10;
}
public static double getAverageDecibel(Collection<Integer> decibels)
{
if (decibels == null || decibels.isEmpty()) {
return 0.0;
}
double aggregation = 0;
int count=0;
Iterator<Integer> iter = decibels.iterator();
while(iter.hasNext()) {
Integer value = iter.next();
if(value!=null) {
aggregation += Math.pow(10, value/10.0);
count++;
}
}
if (count == 0) {
return 0.0;
}else {
return 10 * Math.log10(aggregation/count);
}
}
public static double getDecibelStandardDeviation(int[] decibels)
{

View File

@@ -5,8 +5,6 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assert.assertNotNull;
import java.math.BigInteger;
import java.util.HashMap;
@@ -16,6 +14,8 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
public class MacAddressTest {
private static final Logger LOG = LoggerFactory.getLogger(MacAddressTest.class);
@@ -145,97 +145,5 @@ public class MacAddressTest {
assertEquals(first, equalToFirst);
assertNotEquals(first, notEqualToFirst);
}
@Test
public void testSetAddress() {
MacAddress nullCheck = new MacAddress();
nullCheck.setAddress(null);
assertNull(nullCheck.getAddress());
MacAddress realValue = new MacAddress();
realValue.setAddress(new byte[] { 1, 2, 3, 4, 5, 6 });
assertNotNull(realValue.getAddress());
}
@Test
public void testGetAddressAsLong()
{
MacAddress macAddress = new MacAddress("00:2a:f7:7a:1e:a0");
assertNotNull(macAddress.getAddressAsLong());
MacAddress otherMacAddress = new MacAddress(new byte[] { 1, 2, 3, 4, 5});
assertNull(otherMacAddress.getAddressAsLong());
}
@Test
public void testGetAddressAsString() {
MacAddress macAddress = new MacAddress("00:2a:f7:7a:1e:a0");
assertNotNull(macAddress.getAddressAsString());
}
@Test
public void testGetAsLowerCaseString() {
MacAddress macAddress = new MacAddress("00:2a:f7:7a:1e:a0");
assertNotNull(macAddress.getAsLowerCaseString().toCharArray());
}
@Test
public void testHashCode()
{
MacAddress macAddress = new MacAddress("00:2a:f7:7a:1e:a0");
assertNotEquals(macAddress.hashCode(), 0);
}
@Test
public void testStringToByteArray()
{
MacAddress macAddress = new MacAddress();
macAddress.setAddressAsString(null);
assertNull(macAddress.getAddress());
macAddress.setAddressAsString("00:2a:f7:7a:1e:a0");
assertNotNull(macAddress.getAddress());
try {
macAddress.setAddressAsString("00:2a:f7:7a:1e:a0:b0:f1");
fail("expected exception.");
} catch (IllegalArgumentException e)
{
//expected it
}
try {
macAddress.setAddressAsString("00:2a:f7:7a:1esdafsat:a0");
fail("expected exception.");
} catch (IllegalArgumentException e)
{
//expected it
}
}
@Test
public void testOuiFromLowerCaseString()
{
assertNotNull(MacAddress.ouiFromLowerCaseString("00:2a:f7:7a:1e:a0", true));
assertNotNull(MacAddress.ouiFromLowerCaseString("00:2a:f7:7a:1e:a0", false));
}
@Test
public void testToOuiString()
{
MacAddress macAddress = new MacAddress("00:2a:f7:7a:1e:a0");
assertNotNull(macAddress.toOuiString());
MacAddress nullCheck = new MacAddress();
nullCheck.setAddressAsString(null);
assertNull(nullCheck.toOuiString());
}
@Test
public void testConvertMacStringToLongValue()
{
assertNotNull(MacAddress.convertMacStringToLongValue("00:2a:f7:7a:1e:a0"));
assertNull(MacAddress.convertMacStringToLongValue(null));
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-partitioner</artifactId>
@@ -13,7 +13,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-hazelcast-client</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -9,9 +9,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.cp.CPSubsystem;
import com.hazelcast.cp.lock.FencedLock;
import com.hazelcast.map.IMap;
import com.hazelcast.core.ILock;
import com.hazelcast.core.IMap;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
/**
@@ -66,9 +65,7 @@ public class DynamicServicePartitioner implements ServicePartitionerInterface {
IMap<String, byte[]> partitionerMap = hazelcastInstance.getMap(mapName);
// lock the whole partitionerMap while refresh is happening
// see https://docs.hazelcast.com/imdg/4.2/migration-guides
CPSubsystem cpSubsystem = hazelcastInstance.getCPSubsystem();
FencedLock mapLock = cpSubsystem.getLock("lock_" + mapName);
ILock mapLock = hazelcastInstance.getLock("lock_" + mapName);
mapLock.lock();
try {

View File

@@ -10,7 +10,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.hazelcast.core.IMap;
/**
* @author yongli

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-remote-tests</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-tx-tests</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-scheduler</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-stream-consumer</artifactId>
@@ -14,15 +14,8 @@
<dependency>
<artifactId>base-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>cloud-metrics</artifactId>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@@ -9,12 +9,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.netflix.servo.DefaultMonitorRegistry;
import com.netflix.servo.monitor.BasicCounter;
import com.netflix.servo.monitor.Counter;
import com.netflix.servo.monitor.MonitorConfig;
import com.netflix.servo.tag.TagList;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
import com.telecominfraproject.wlan.core.model.streams.QueuedStreamMessage;
/**
@@ -27,21 +21,10 @@ public class StreamMessageDispatcher {
private static final Logger LOG = LoggerFactory.getLogger(StreamMessageDispatcher.class);
private final TagList tags = CloudMetricsTags.commonTags;
final Counter messagesProcessed = new BasicCounter(MonitorConfig.builder("stream-processors-messagesProcessed").withTags(tags).build());
//autowire all available stream processors
@Autowired(required = false)
List<StreamProcessor> streamProcessors;
// dtop: use anonymous constructor to ensure that the following code always
// get executed,
// even when somebody adds another constructor in here
{
DefaultMonitorRegistry.getInstance().register(messagesProcessed);
}
@PostConstruct
private void postConstruct() {
if(streamProcessors!=null && !streamProcessors.isEmpty()) {
@@ -63,7 +46,7 @@ public class StreamMessageDispatcher {
}
LOG.trace("Pushing message to stream processors {}", message);
messagesProcessed.increment();
streamProcessors.forEach(sp -> sp.push(message));
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-stream-interface</artifactId>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>base-tx-tests</artifactId>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>cloud-metrics</artifactId>
@@ -13,18 +13,18 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-elasticsearch</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>

View File

@@ -26,19 +26,11 @@ public class CloudMetricsTags {
public static final String localIpV4 = getPropertyAsString("container.localipv4", UNDEFINED_STR);
public static final TagList commonTags;
static {
if(Boolean.parseBoolean(getPropertyAsString("tip.wlan.cloudMetricTags.enabled", "false"))) {
commonTags = new BasicTagList(Arrays.asList(
new BasicTag("InstanceId", instanceId),
new BasicTag("local-ipv4", localIpV4),
new BasicTag("cloudTag", buildCloudTag())
));
} else {
commonTags = BasicTagList.EMPTY;
}
}
public static final TagList commonTags = new BasicTagList(Arrays.asList(
new BasicTag("InstanceId", instanceId),
new BasicTag("local-ipv4", localIpV4),
new BasicTag("cloudTag", buildCloudTag())
));
private static String buildCloudTag(){
return role + "-" + stack + "-" + deployment;

View File

@@ -242,12 +242,11 @@ public class StartServoMetricsCollector implements CommandLineRunner {
MetricObserver transformElasticSearch = new CounterToRateMetricTransform(
elasticSearchObserver, aggregationHeartbeatMultiplier * samplingIntervalMs, TimeUnit.MILLISECONDS);
observers.add(transformElasticSearch);
LOG.info("ElasticSearch metrics collection is ON");
}catch(UnknownHostException e){
LOG.error("Cannot initialize ElasticSearch client", e);
}
} else {
LOG.debug("ElasticSearch metrics collection is OFF");
LOG.info("ElasticSearch metrics collection is OFF");
}
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>common-hazelcast</artifactId>
@@ -19,7 +19,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -4,10 +4,8 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import java.util.function.BiFunction;
import com.hazelcast.map.impl.ComputeEntryProcessor;
import com.hazelcast.map.AbstractEntryProcessor;
/**
* This class appends an item to a List<Long> stored in a hazelcast map.
@@ -19,24 +17,11 @@ import com.hazelcast.map.impl.ComputeEntryProcessor;
* <b>Very important</b>: this class must implement Serializable interface because it is submitted to Hazelcast Cluster
* @author dtop
*/
public class AppendLongToListEntryProcessor extends ComputeEntryProcessor<String, List<Long>> implements Serializable {
public class AppendLongToListEntryProcessor extends AbstractEntryProcessor<String, List<Long>> implements Serializable {
private static final long serialVersionUID = -6960225265547599510L;
private long tsToAppend;
// private BiFunction<String, List<Long>, List<Long>> biFunction = (key, value) -> {
// if(value==null){
// value = new ArrayList<>();
// }
//
// // process and modify value
// if(!value.contains(tsToAppend)){
// value.add(tsToAppend);
// }
//
// return value;
// };
public AppendLongToListEntryProcessor() {
// for serialization
}
@@ -46,7 +31,7 @@ public class AppendLongToListEntryProcessor extends ComputeEntryProcessor<String
}
@Override
public List<Long> process(Entry<String, List<Long>> entry) {
public Object process(Entry<String, List<Long>> entry) {
List<Long> value = entry.getValue();
if(value==null){
@@ -59,6 +44,6 @@ public class AppendLongToListEntryProcessor extends ComputeEntryProcessor<String
}
entry.setValue(value);
return value;
return true;
}
}

View File

@@ -5,7 +5,7 @@ import java.util.HashSet;
import java.util.Map.Entry;
import java.util.Set;
import com.hazelcast.map.impl.ComputeEntryProcessor;
import com.hazelcast.map.AbstractEntryProcessor;
/**
* This class appends an item to a Set<String> stored in a hazelcast map.
@@ -17,7 +17,7 @@ import com.hazelcast.map.impl.ComputeEntryProcessor;
* <b>Very important</b>: this class must implement Serializable interface because it is submitted to Hazelcast Cluster
* @author dtop
*/
public class AppendStringToSetEntryProcessor extends ComputeEntryProcessor<String, Set<String>> implements Serializable {
public class AppendStringToSetEntryProcessor extends AbstractEntryProcessor<String, Set<String>> implements Serializable {
private static final long serialVersionUID = -6960225265547599510L;
private String stringToAppend;
@@ -31,7 +31,7 @@ public class AppendStringToSetEntryProcessor extends ComputeEntryProcessor<Strin
}
@Override
public Set<String> process(Entry<String, Set<String>> entry) {
public Object process(Entry<String, Set<String>> entry) {
Set<String> value = entry.getValue();
if(value==null){
@@ -43,6 +43,6 @@ public class AppendStringToSetEntryProcessor extends ComputeEntryProcessor<Strin
entry.setValue(value);
return value;
return true;
}
}

View File

@@ -5,7 +5,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>reflections-tip</artifactId>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>webtoken-auth-service</artifactId>
@@ -14,13 +14,13 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-container</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-client</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>